git远程合并提交导致gerrit中的错误依赖

时间:2011-09-09 20:34:31

标签: git branch gerrit

我正在使用git中的远程分支。在做任何工作之前,我做一个git pull来获得ToT。当我查看git日志时,我发现这会自动创建一个包含消息的合并提交:“ssh:// myserver:1111 / mybranch的合并分支'master'。然后,我做我的工作并实施我的改变。在那之后,我推动我的改变。我们的系统设置了gerrit用于代码审查。我的新变化出现在gerrit中,依赖于合并提交。我怎么摆脱这个?

2 个答案:

答案 0 :(得分:1)

合并可能不是快进的,因为你的分支在拉动之前与远程分支存在差异。所以,当你推动你的改变时,它可能已经创建了多个用于修改gerrit的chnage,对吗?

使用gerrit工作的最佳方法是在提交和推送任何新更改之前对远程分支执行干净检查,在这种情况下,您的更改将不具有任何依赖性。我经常检查一个新的分支,为每个新功能或修复我需要推送并保留它们,直到它们被验证并合并到gerrit中的主仓库(以防万一需要更改某些内容作为修订结果并创建一个新的补丁集为了同样的变化)。

但是,如果你同时推送多个提交并且最后一次提交需要前一个提交,依赖关系很有用,比如说你向clean分区添加了两个提交,并且推送它们,它们将在gerrit中显示为两个更改具有最新和之前的依赖关系,并且最新的提交永远不会在依赖之前合并到主存储库。

答案 1 :(得分:1)

如果本地分支是远程跟踪,则

git pull实际上是git fetchgit merge。因此,如果远程分支不能快速转发,那么git pull将创建合并提交。要避免合并提交,请使用

'git fetch'
'git rebase -p'
'git pull --rebase' 
  

或在git config中设置值为merge.ff的{​​{1}}。

  

禁用本地分支only

中的远程跟踪设置