我正在将master
分支合并到一个子分支中,以便我可以将最新更新的代码添加到该子分支中。
合并后我意识到我错过了什么,所以我想撤消合并。
我正在使用GitHub for Mac并且当时没有互联网来查找如何正确撤消合并。所以我愚蠢地提交合并希望我可以恢复到我之前的提交。一切似乎都没问题。
但是当我尝试将master
合并回子分支时,它没有像我第一次合并时那样拾取所有冲突和更改。我想这是因为我有旧合并的历史。
一旦我恢复了我的Internet连接,我搜索并尝试运行以下命令以恢复到原始合并之前的提交:
git reset --hard HASH
这似乎有效。然后我再次尝试合并master
分支,但它仍然没有发现冲突和变化。当我运行上述命令时,它仍然显示我认为会被删除的提交。
如何在第一次合并之前提交后永久删除所有内容?我错过了什么吗?
非常感谢您的帮助。
答案 0 :(得分:1)
如果您的分支机构是从主分支机构中删除的话,那么重新分支分支机构可能会更好。 http://git-scm.com/book/en/Git-Branching-Rebasing
git checkout sub-branch
git rebase master
如果您的子分支上的冲突是由于早期从master进行合并而您想要撤消它,那么您可能希望还原。
git revert SHA-1
答案 1 :(得分:0)
在这种情况下,将reset
与reflog
结合使用可能会产生更好的结果,即最后一次良好提交的位置。这将重写您的工作目录并将历史记录提交到所需的点。
这将需要使用命令行。
查看已进行的更改(移动HEAD
)
git reflog
在reflog
中识别哪个哈希表示最后一次提交
提交哈希值或HEAD@{ }
值都可用
将当前分支的HEAD重置为指定的散列,重写工作目录
git reset --hard <identified-commit-hash>
答案 2 :(得分:0)
我解决它的方式是以下......也许它更复杂,因为我使用GitHub for Mac ...
我重置了我想要的最后一个提交哈希:
git reset --hard <identified-commit-hash>
然后我从子分支创建了一个子分支,我遇到了问题。当我再次将master
合并到其中时,这就是阻止任何历史回归的原因。
正如我所说,这可能是因为GitHub for Mac无法正常工作,但它对我有用。