我对Arcanist和git都很陌生。我希望能够针对我目前检出/工作的git分支创建一个arc diff(使用Arcanist的Phabricator Differential实例)(我有一个本地未推送的提交)而不是master。对我来说,arc docs对此并不清楚。可能吗?怎么样?如果答案适用于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实例。
此外,如果答案解释如何做对,我很高兴收到“你做错了”的答案。
答案 0 :(得分:45)
一般来说,arc diff <branch>
会做你想要的。 (如果您已经在分支机构而不是本地主题分支,请尝试使用arc diff origin/<branch>
。)
当像这样调用时,arc
实际上会对分支的提示的merge-base
和工作副本中的当前提交进行区分,但通常这是你想要的。如果你真的想要针对分支提示生成差异,你可以使用arc diff --base git:<branch>
,但是这个差异将包括撤消 branch
上的任何提交的更改,这些提交是后续的分支点,就像git diff <branch>..HEAD
那样。
在所有情况下,您都可以使用arc which <commit>
预览arc diff
将要执行的操作。这将解释将选择哪个修订范围,显示确切包含哪些更改的命令,并解释选择该范围的原因。
您还可以使用arc diff --preview
生成差异,而不会将其发送给审核。这样您就可以在将更改提交给其他任何人之前预览更改。
另见:
https://secure.phabricator.com/book/phabricator/article/arcanist_commit_ranges/
答案 1 :(得分:3)
Evan的答案通常更可取,因为它更能反映最佳git工作流程。如果可以的话,我建议你这样做。
如果您需要快速修复并且正在使用(签出)您想要推送到的同一分支,您还可以执行arc diff HEAD^
或HEAD~
进行单次提交,或{{ 1}}用于N次提交。