2016-02-19 55 views
1

git的新手。在Mac上使用git enterprise。git merge origin master“已经是最新的”

所以我一直在IntelliJ IDEA的分支工作,我们称之为“foo”。所以master-> foo。

对我的更改感到满意,所以我推送/提交给远程回购。此时,我准备开始将更改合并到主服务器的过程。但首先,我想将主人的任何更改合并到我的分支中并对其进行测试。

因此,在“foo”仍然检出的情况下,我运行了“git merge origin/master”。

这带来了我期待的变化。我解决了任何冲突。在这一点上,我发现了一些我想在合并之前修改的东西。所以在IntelliJ中,我进入了“本地更改”选项卡下的“版本控制”窗口。右键单击并选择“恢复”。

如预期的那样恢复了合并。我做了我的更改并再次运行“git merge origin/master”。但现在它说“已经是最新的”。

帮助!

+0

是否有你想“恢复”合并的原因?您可以轻松地进行更改并在合并之前提交它。 –

回答

2

合并由两部分组成 - 更改当前快照中的文件,并使用2个父母进行提交,告诉git合并已完成。当您在合并提交上执行git revert时,它将撤消前者,但不会撤消后者。所以就git而言,你已经合并到了origin/master。在恢复合并提交之后“重新合并”的唯一方法是再次调用git revert,并向其传递前一个git revert生成的提交;你必须“恢复回复”。

+0

'git revert'是否会创建一个新的提交以“撤消”更改? –

+0

@ Code-Apprentice - 是的,'git revert'总是会创建一个新的提交。 –

+0

当然这里有一个潜在的假设,即IntelliJ IDE中的“Revert”命令转换为'git revert'。根据我的经验,GUI菜单项和命令行之间的这种转换有时不是字面的。特别是,Android Studio中的“Revert”命令等同于我所见过的'git reset --hard HEAD'。不过,这在IntelliJ中可能会有所不同。 –

1

我建议你在合并提交上启动一个分支并在那里进行更改。然后,您可以对更改进行新的提交。我没有看到任何“恢复”的理由。

如果您真的想在进行更改之前撤消合并,您需要在命令行中使用git reset或在IntelliJ IDEA的版本控制窗口中使用“重置为听到...”。然后你可以做出你的改变,但你也必须在解决冲突的同时再次进行合并。这似乎比它的价值更多的工作。

+0

'git reset'只会恢复已经提交的更改 - 如果他必须执行冲突解决,这不会自动发生。 'git reset'在没有--hard选项的情况下执行时,只会暂停要提交的更改,这意味着如果他还没有提交https://git-scm.com/docs/,则不需要再次进行合并git-reset –

+0

@EddiePrislac正确...我忘了在“--hard”和“--soft”之间加上区别。我几乎总是使用'--hard',所以我经常忘记其他选项可用。 –

相关问题