2017-10-10 68 views
1

我的一位同事犯了一个在Gerrit但不在主人身上的代码。我想在其上工作。我应该樱桃挑选还是签出一份承诺,以便在gerrit的顶部工作?

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

哪一个才是正确的做法?

任何帮助,将不胜感激

+0

你是什么意思是“在gerrit而不是在主人”? 1.被推送/提交给另一个分支2.被推送给主,但尚未提交。 –

+0

它被推到主,但它还没有提交 –

回答

2

提取和检查他的承诺,我称之为一个无名的分支(如refs/changes/xx/yyyxx/1一个引用),然后在它的工作。无论它是分离的HEAD状态还是创建本地分支都无关紧要。完成提交后,请推送至refs/for/<branch>。你的提交和他的将依赖。

更新:

这没关系樱桃挑选他的承诺,然后在它上面的工作,如果你不关心历史,因为最终版本的文件内容会以两种方式同。区别在于分支历史。如果你检查他的,然后在其上工作,历史将是线性的。至少围绕你们提交的部分是线性的。如果你挑选他,然后在其上工作,你会看到两个分支合并。一个是你的本地分支,另一个是他的本地分支。他们分歧。在你的分支上挑选的提交是多余的。将来某一天,当有人看到历史时,他可能会感到困惑,并问为什么你们两个人都对相同的块进行了修改。

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

+0

只是好奇,为什么樱桃挑选和工作之上呢? 感谢您的快速回复。 –

+0

@VivekS我更新了答案。 – ElpieKay

0

执行以下操作:

1)转到你的同事变化对格里特

2)点击下载>收银台> “复制到剪贴板” 按钮

3)在执行复制命令你的本地库

git fetch https://[email protected]/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)推到格里特审查

git push origin HEAD:refs/for/master 

注意:你的变化是取决于你的同事改变。如果他/她推送一个新的补丁集(例如修复一些审阅问题),则需要将您的更改重新分配给新的补丁集。如果他/她放弃更改,则需要放弃您的或基于主人重做。如果可能的话,避免基于待处理的更改工作,始终更喜欢基于合并的工作。

+0

谢谢MarceloÁvilade Oliveira。 还有一个问题,因为我是git和Gerrit的新手,何时是正确的时间使用樱桃挑选并从下载选项中提取选项。 –

+0

您可以使用这些选项将其他分支机构所做的更改传送给您(例如:将分支主机更改为分支发布)。樱桃挑选重做提交并将其合并。 –