你能针对特定的git分支进行arc diff吗?

38

我对Arcanist和git都比较新。我希望能够创建一个针对当前检出/工作中的git分支(我有一个本地未推送的提交)而不是主分支的arc diff(使用Arcanist的Phabricator Differential实例)。对我来说,arc文档并不清楚。这种情况是否可能?如何操作?如果答案也适用于2-3个本地未推送的提交,则更好。

此外,“arc help diff”给出:

      diff [paths] (svn)
      diff [commit] (git, hg)
          Supports: git, svn, hg
          Generate a Differential diff or revision from local changes.

          Under git, you can specify a commit (like HEAD^^^ or master)
          and Differential will generate a diff against the merge base of that
          commit and HEAD.
也许我只需要执行“arc diff [commit]”,其中[commit]是目标分支的最新提交?但我想要确定一下,因为我不想污染我们的Phabricator实例。
此外,如果答案能够解释如何正确操作,我也很乐意接受“你做错了”的回答。
2个回答

54
一般来说,arc diff <branch>会实现你想要的效果。(如果你已经在分支上,而不是本地主题分支,请尝试使用arc diff origin/<branch>。)
当像这样调用时,arc将实际上根据工作副本中分支头和当前提交的合并基差异,但通常这正是你想要的。如果你真的想生成一个针对分支头的差异,可以使用arc diff --base git:<branch>,但此差异将包括撤消分支点后是分支的任何提交的更改,就像git diff <branch>..HEAD一样。
在所有情况下,你可以使用arc which <commit>预览arc diff的操作内容。它将解释选择哪个修订范围,向你显示查看包含哪些更改的命令,并说明为什么选择该范围。
你还可以使用arc diff --preview只生成差异,而不将其发送进行评审。这将允许你在将更改提交给他人之前预览更改。
另请参阅:https://secure.phabricator.com/book/phabricator/article/arcanist_commit_ranges/

1
链接应更新为https://secure.phabricator.com/book/phabricator/article/arcanist_commit_ranges/。 - davidtingsu
为了生成与分支顶端的差异,我使用了 arc diff --base 'git:branch-unique(origin/master)' 命令,该命令会生成与 origin/master 顶端的差异。运行 arc diff --preview --base git:<branch> 命令并未得到我想要的结果。 - davidtingsu
一旦<分支>已经合并到主分支,我该如何将我的修订版合并到主分支上,而不是<分支>上? - David Chandler
arc diff origin/<branch> 这个对我有用,谢谢。 - Zain Zafar

4

一般来说,Evan的回答更好,因为它更能反映出最佳的git工作流程实践。如果可能的话,我建议遵循这个。

如果你需要快速解决问题,并且正在(检出)要推送的相同分支中工作,你也可以使用arc diff HEAD^HEAD~(用于单个提交),或arc diff HEAD~N(用于N个提交)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接