2016-02-11 212 views
0

我从git pull得到这条消息之后我把代码推到了GERRIT(在GERRIT代码审查之后,我从GERRIT提交到远程)!你的分支提前1次提交

因为我在使用GERRIT - 在将git“代码”推送到GERRIT并最终通过GERRIT将它提交给远程后,我的本地git实例似乎认为我仍然有变化,我仍然需要推动我的更改! 所以我被迫做了一次“git reset HEAD ^”,每次都回1次提交!我没有失去任何东西,因为此时我已经使用GERRIT将代码推送到远程,但它非常具有欺骗性,我必须在每次git push> Gerrit推送到远程后执行此操作!

有什么建议可以解决这个问题吗?

PS:之前已经有一些关于这方面的问题。虽然我不能通过GERRIT找到解决方案!

回答

0

如果你不想做硬重置(我更喜欢git reset --hard origin master顺便说一句),那么只需在提交之前创建一个新的分支。推完之后,您可以将该分支丢弃。

P.S.你可能有兴趣尝试git-review

+0

我检查了SE中的一些查询。奇怪的是,我注意到了这次的一些事情:在我收到这个消息之后(在推向gerrit之后提交了1个提交之前) - 而不是** git pull ** - 我尝试了** git fetch **,问题突然消失了。然而,在运行** git fetch **后,我的分支向我展示了几百次提交,但现在做了一次** git pull **,使我获得了最新的原点。我认为** git pull = git fetch和git merge **。我不知道我很理解为什么git fetch方法工作(并且我不明白,为什么git merge没有更新我的主人) –

+0

似乎没有得到任何回应....有谁知道什么原因可以在这背后? –

+0

是的,pull = fetch + rebase/merge。不知道,你发生了什么事。它只带来当前分支。但是,尽管如此,你的承诺不会被拉扯掉。如上所述,要么'git reset --HARD',这是完全没问题的,因为所有的改变都存储在Gerrit中,或者使用分支。而已。 – StephenKing

相关问题