丢失 Github 提交

丢失 Github 提交

这里有一些论文恐慌:|

基本上,我做了一件傻事,我有两个分支脱离主分支,分别处理两个不同的任务:分支 A 和分支 B。这意味着没有冲突。我首先将分支 A 合并到主分支中。到目前为止一切顺利。

然后,我想在合并分支 A 之后,使用 master 中的更改来更新分支 B。但是,现在我犯了一个愚蠢的错误,将 master 合并到分支 B,而不是先将该分支合并到 master,然后再将 master 合并到它。

因此,我现在已经丢失了自创建分支 B 以来的所有提交。我读过一些关于恢复的内容,但不能 100% 确定这会导致什么,因为它不是分支进入主分支,而是主分支进入分支。

为了展示我所做的事情:

Branch A -> master -> Branch B

...而不是(我认为这是应该做的事情):

Branch A -> master <- Branch B and then master -> Branch B

提前感谢你的帮助:)

(如果这个问题放在这里不合适,请告诉我,我会把它移走)

答案1

合并绝不丢失提交,无论您从哪个方向进行合并。有时,您无法在git logGitHub 的提交视图中看到某些提交,因为它们试图显示提交历史记录的线性视图(而实际上日志中有多个同时提交的行)。您刚刚合并到分支中的提交将原始提交推到列表的很下方,以至于您无法找到它们。

gitk打开、tiggitg或等工具git log --graph --oneline。最上面的“合并”提交将显示两条工作线,一条属于 master(或 branchA),另一条属于您最初在 branchB 中拥有的内容。

要丢弃合并提交,请在分支 B 上使用git reset --hard HEAD^1(表示要选择哪个合并父级的数字)。在执行此操作之前,也许可以检查 HEAD^1 的日志以查看重置后会得到什么。

如果您在执行任何其他操作之前记下“最新”的良好提交 ID,那么即使某些 git 命令不成功,您也能够返回它们,因为提交会在 .git/ 中保留几天。

相关内容