2017-08-17 145 views
2

修订问题的说明:提前感谢!GIT中+ DIFF弧与修复的diff(是来自工作[主]!)

master分支工作时,我对一个文件进行了修改,并对arc diff --create'进行了修改。然后,我提出了另一个用户故事,仍在master分支中工作,并再次为arc diff --create编写了一个差评以供审阅。两个用户故事,两个差异可供审查。目前很好。

[我明白创建一个differential审查通过arc diff,就像制作pull request。 ]

这是问题所在......我再重新讨论的第一个用户故事,作进一步更改(在master分支仍在工作,并着手arc diff <commit_hash>~ --update <diff_id>。现在的差显示最初创建的差异和变化之间它的更新,并没有改变总体!

....

我已经告诉我应该改变以前都取得了新的分支。然后,修订版的所有arc --update的会导致整体的差异(而不是最近两次更新之间的差异)。

我也被告知,我仍然可以让该新分支包含我所有的更改(我有arc diff版),并修复修订。

我怎么类型来创建一个新的分支包含所有的变化(即那些已经修订“arc diff” ED),恢复master分支(据说),并重新arc diff --update我的最新修订版与我公司最新提交? ...(/或任何解决我的问题。)

回答

1

如果您创建一个新的工作分支你开始进行更改之前,这通常是自动工作。但是在它不(因为弧想不通上游分支点)的情况下,也有命令行参数差异,允许你指定你的意图:

  • --update REVISIONID - 更新特定修订

例如,arc diff --update D1

要回去收拾了你的树,通过创建一个新的分支,将举行正在进行你目前的工作时间等,你可以随时返回到它:

git checkout -b current_wip 

现在,删除您的本地主服务器,并重新检查主服务器在上游服务器上的状态。这会在您做出任何更改之前将您带回,但是由于您创建了current_wip分支,因此不会丢失任何东西(即使跳过创建分支,实际上也不会丢失提交,但它们会变得很难发现由于没有被附加到分支)。拥有一个干净的主人也会在你以后的时候避免一些警告。

git branch -D master 
git checkout master 

现在,您可以重新创建两个原始的补丁,但在单独的分支这个时候。 arc patch可用于从差分中提取补丁,并自动为您创建一个名称为arcpatch-D1(其中D1是diff ID)的分支。在这里,我将它们称为D1和D2,但是您将使用在提交它们时扩散分配给差异的实际标识符。

arc patch D1 
git checkout master 
arc patch D2 

现在,您只需进行最后一次更改,您希望将其应用于D1之上。

git log current_wip 

记下提交ID的前几位数。对于少于几千次提交的存储库,您可能只需要前5位数字。即使像Linux内核这样的大型存储库通常也会在前7位数字中唯一标识提交。下面,我将它称为1234abc,但您将使用实际的提交ID。

接下来,您将返回到您所做的第一个补丁的分支,并在其上面挑选该提交。樱桃挑选只需要那个特定的提交,而不是合并,这会在两者之间丢失任何东西。采摘樱桃之后,如果你没有发生冲突,你就可以更新差异了。

git checkout arcpatch-D1 
git cherry-pick 1234abc 
arc diff 

一旦你感到高兴的是一切都在安全的差分(或者也许你想等到你arc land两个补丁),你可以删除你作为一个备份current_wip分支。

git branch -D current_wip