我应该挑选或结帐承诺在gerrit上工作吗?

时间:2017-10-10 14:03:26

标签: git gerrit

我的一位同事提交了一份代码,该代码在Gerrit中但不在主人中。我想在它上面工作。

我应该创建一个本地分支,并选择他的提交并在其上工作或者我应该检查他的代码并创建一个本地分支并在其上工作。

哪一个是正确的方法?

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:2)

获取并签出他的提交,我称之为无名分支(类似refs/changes/xx/yyyxx/1的ref),然后对其进行处理。如果它是分离的HEAD状态或您创建本地分支并不重要。提交后,请转到refs/for/<branch>。你的承诺和他的意志将依赖。

更新

如果您不关心历史记录,可以选择他的提交,然后在其上工作,因为最终修订的文件内容在两个方面都是相同的。不同之处在于分支历史。如果你结账他然后在它上面工作,历史将是线性的。至少你们两个提交的部分是线性的。如果你挑选他然后在它上面工作,你会看到两个分支合并。一个是你的本地分支,另一个是他的本地分支。他们分道扬..您分支机构的挑选提交是多余的。将来有一天,当有人看到历史时,他可能会感到困惑,并问为什么你们两个都改变了相同的块。

此外,由于您使用Gerrit,可能存在可能使您烦恼的潜在风险。当你挑选他的提交时,将创建一个新的提交。这两个提交具有相同的提交消息,包括Change-Id。如果他的alreday已经提交/合并,那么你的同事已经推了他的,Gerrit会阻止你的,因为在这种情况下Gerrit不允许第二次提交相同的Change-Id被推送到同一个分支。如果他仍然是开放的,那么你的将修改他作为第二个补丁集。但我担心你的格里特也禁止一个人修改别人的承诺。即使它允许你修改他的提交,也不是预期的。无论如何,它会失败或表现不正常。据我所知,这非常令人沮丧,特别是当其他人推动你尽快完成它时。

答案 1 :(得分:0)

执行以下操作:

1)转到你的同事改变Gerrit

2)点击下载&gt;结帐&gt; &#34;复制到剪贴板&#34;按钮

3)在本地存储库中执行复制的命令

git fetch https://USER@GERRIT-SERVER/a/REPO-FULL-PATH refs/changes/CHANGE-NUMBER/CHANGE-PATCHSET && git checkout FETCH_HEAD

4)创建一个本地分支来管理你的工作

git checkout -b LOCAL-BRANCH

5)进行更改

6)添加并提交更改

git add .
git commit

7)推送到Gerrit进行审核

git push origin HEAD:refs/for/master

注意:您的更改取决于您的同事更改。如果他/她推送新的补丁集(例如修复某些评论问题),您需要将更改重新设置为新的补丁集。如果他/她放弃了更改,您将需要放弃您的更改或基于主人重做它。避免基于待定更改工作,如果可能,始终更喜欢基于合并更改。