0

I am working with a remote branch in git. Before doing any work, I do a git pull to get the ToT. When I look at the git log, I see that this automatically creates a merge commit with a message: "Merge branch 'master' of ssh://myserver:1111/mybranch". Then, I do my work and commit my change. After that I push my change up. Our system is setup with gerrit for code review. My new change shows up in gerrit with dependency on the merge commit. How do I get rid of this?

4

2 回答 2

1

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

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

或在 git 配置中设置merge.ffwith 值。only

或者

从本地分支禁用远程跟踪设置 git config --unset branch.<branch>.merge

于 2013-11-11T22:23:55.117 回答
1

合并可能不是快进的,因为您的分支在拉取之前与远程分支存在差异。所以,当你推动你的改变时,它可能在 gerrit 中创造了不止一次的修订,对吧?

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

但是,如果您同时推送多个提交并且最后一个提交需要前一个提交,则依赖关系很有用,例如,如果您将两个提交添加到干净的分支并推送它们,它们将在 gerrit 中显示为两个具有依赖关系的更改最新的和以前的,最新的将永远不会在依赖之前合并到主存储库。

于 2011-09-09T21:29:35.120 回答