【问题标题】:Can you arc diff against a particular git branch?您可以针对特定的 git 分支进行差异化吗?
【发布时间】:2013-11-18 02:43:13
【问题描述】:

我对 Arcanist 和 git 都很陌生。我希望能够针对我当前正在签出/工作的 git 分支(并且我有一个本地未推送的提交)而不是主分支创建一个 arc diff(使用 Arcanist 的 Phabricator 差异实例)。对我来说,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 实例。

另外,如果答案说明了如何正确操作,我很高兴收到“你做错了”的答案。

【问题讨论】:

    标签: git phabricator arcanist


    【解决方案1】:

    一般来说,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/

    【讨论】:

    • 针对分支提示生成差异我使用了arc diff --base 'git:branch-unique(origin/master)',它针对运行arc diff --preview --base git:<branch>origin/master 的提示生成差异与我想要的结果不匹配。
    • 一旦 登陆 master,我如何将我的修订登陆 master,而不是
    • arc diff origin/<branch> 这对我有用,谢谢
    【解决方案2】:

    Evan 的回答通常更可取,因为它更能反映最佳 git 工作流程实践。如果可以的话,我建议您这样做。

    如果您需要快速修复并且正在(签出)您想要推送到的同一个分支,您还可以为单个提交执行 arc diff HEAD^HEAD~,或为 N 次提交执行 arc diff HEAD~N .

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-16
      • 1970-01-01
      • 2016-11-04
      • 1970-01-01
      相关资源
      最近更新 更多