Git& Gerrit:如何避免和消除Gerrit中不需要的依赖项

时间:2014-03-19 08:53:04

标签: git gerrit

我正在尝试找到最好的方法,我需要和建议,因为据我所知,Gerrit将所有提交放在同一个分支上,依赖于前一个。

  1. 避免依赖

    最好的方法是在本地创建一个新分支,然后在更改集合并在远程主服务器上并从中拉出并重新绑定之后合并回本地主分支吗?

  2. 打破现有的不受欢迎的依赖关系

    我通常以交互方式进行rebase并重新排序我想在提交列表顶部独立的提交,然后我git reset --hard HEAD~x并创建新分支。然后我继续和第1点一样。 有没有更简单的方法呢?因为重新排序提交并没有真正破坏对Gerrit的依赖,对吧?我也可以删除提交,但我当然不希望这样......

2 个答案:

答案 0 :(得分:3)

我自己和Gerrit一起学习实习生,我和你最近有同样的问题。

  

避免依赖

     

最好的方法是在本地创建一个新分支,然后在远程主服务器上合并更改集并从中拉出并重新绑定后,合并回本地主分支吗?

这确实是我被教导如何做到这一点,如果你考虑它,这是有道理的。这样,您的本地主人始终与遥控器同步,因为您创建了很多'您可以更好地控制您的存储库。

  

打破现有的不受欢迎的依赖关系

     

我通常以交互方式进行rebase并重新排序我想在提交列表顶部独立的提交然后我git reset --hard HEAD~x并创建新分支。然后我按照与第1点相同的方式进行。有没有更简单的方法呢?

git rebase -i用于重新排序提交更改/中断依赖项确实是这种情况下的方法。至少这就是我应对这些情况的方式。

  

因为重新排序提交确实打破了对Gerrit的依赖,对吧?

确实如此。如果您在本地重新排序提交,然后再次推送到gerrit,新的补丁集将具有不同的依赖关系。

答案 1 :(得分:1)

这是一种持续集成问题。是的,为每个功能创建一个本地分支是好的,因为您可以避免依赖,甚至您可以在正在进行的实现之间轻松切换 - 当然还可以轻松地在这些提交上创建新的补丁集。但是不需要将功能分支与任何本地分支合并。功能分支可以仅使用远程分支保持更新(重新绑定)。我使用git pull -r来避免合并提交。此外,在push之前创建提交时,最好使用此命令更新本地分支。当Gerrit将提交/补丁集提交给远程分支时,本地分支也可以由git pull -rgit fetch git reset --hard origin/<barnch>更新。通过此工作流,可以避免合并提交。如果您有更多远程分支并希望一次合并它们,则仅需要合并提交。我没有使用git rebase -i来重新排列提交。并且请记住,如果一个补丁集曾经被推过,那么就不需要将它保持在本地。 Gerrit的每次更改/提交can be fetched都会更改并推送新的补丁集。