2

我正在将master分支合并到一个子分支中,以便我可以将最新更新的代码放入该子分支中。

合并后,我意识到我错过了一些东西,所以我想撤消合并。

我正在使用GitHub for Mac并且当时没有互联网来查找如何正确撤消合并。所以我愚蠢地提交了合并,希望我可以恢复到我之前的提交。一切似乎都很好。

但是当我尝试将masterback 合并到子分支时,它并没有像我第一次合并时那样处理所有冲突和更改。我认为这是因为我有旧合并的历史。

恢复 Internet 连接后,我搜索并尝试运行以下命令以恢复到原始合并之前的提交:

git reset --hard HASH

这似乎奏效了。然后我尝试再次合并master分支,但它仍然没有发现冲突和更改。当我运行上述命令时,它仍然显示我认为会被删除的提交。

如何在第一次合并之前的提交之后永久删除所有内容?我错过了什么吗?

非常感谢您提前提供的帮助。

4

3 回答 3

1

如果您的分支是从 master 中删除的,那么重新设置分支可能会更好。 http://git-scm.com/book/en/Git-Branching-Rebasing

git checkout sub-branch
git rebase master

如果您的子分支上的冲突是由于之前从 master 合并而导致的,并且您想要撤消该冲突,那么您将想要恢复。

git revert SHA-1
于 2013-09-26T12:40:45.957 回答
0

在这种情况下,reset与 with 结合使用reflog可能会产生更好的结果,以确定最后一次良好提交的位置。这将重写您的工作目录并将历史提交到所需的点。

这将需要使用命令行。

  1. 查看已进行的更改(的移动HEAD

    git reflog

  2. 确定reflog哪个哈希代表最后一次良好的提交

    提交哈希或HEAD@{ }值都可用

  3. 将当前分支的 HEAD 重置为指定的哈希,重写工作目录

    git reset --hard <identified-commit-hash>

于 2013-09-26T17:36:59.807 回答
0

我解决它的方法如下......也许这是一个更复杂的标题,因为我使用 GitHub for Mac......

我重置了我想要的最后一个提交哈希:

git reset --hard <identified-commit-hash>

然后,我从遇到问题的子分支创建了一个子分支。当我再次合并时,这就是阻止任何历史回归的master原因。

正如我所说,这可能是因为 GitHub for Mac 无法正常工作,但它对我有用。

于 2013-09-27T06:25:23.570 回答