web-dev-qa-db-ja.com

特定のgitブランチに対する差分をアーク化できますか?

私はArcanistとgitの両方にかなり慣れていません。マスターではなく、現在チェックアウト/作業中のgitブランチに対してarc diff(Phabricator Differentialインスタンスを作成できます)私にとって、 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]」を実行する必要があるのでしょうか?ただし、Phabricatorインスタンスを汚染したくないので、確実にしたいと思います。

また、答えが正しい方法を説明している場合、「あなたは間違っています」という回答を受け取ることができてうれしいです。

33
Will

一般的に、_arc diff <branch>_はあなたが望むことをします。 (ローカルトピックブランチではなく、すでにブランチにいる場合は、代わりに_arc diff Origin/<branch>_を試してください。)

このように呼び出されると、arcは実際にブランチの先端の_merge-base_と作業コピーの現在のコミットに対して差分をとりますが、通常これは意図したとおりです。本当にブランチチップに対して差分を生成したい場合は_arc diff --base git:<branch>_を使用できますが、この差分にはbranchに対するコミットundoの変更が含まれます_git diff <branch>..HEAD_のように、分岐点の子孫です。

すべての場合において、_arc which <commit>_を使用して、_arc diff_が何をするかをプレビューできます。これは、どのリビジョン範囲が選択されるかを説明し、どの変更が含まれているかを正確に確認するコマンドを表示し、その範囲が選択される理由を説明します。

_arc diff --preview_を使用して、レビュー用に送信せずに、差分のみを生成することもできます。これにより、変更を他の人に送信する前にプレビューできます。

こちらもご覧ください:

https://secure.phabricator.com/book/phabricator/article/arcanist_commit_ranges/

46
Evan Priestley

Evanの回答は、gitワークフローのベストプラクティスをより反映しているため、一般的に望ましいものです。可能であればそれに従うことをお勧めします。

迅速な修正が必要で、プッシュ先と同じブランチで作業(チェックアウト)している場合は、arc diff HEAD^またはHEAD~単一のコミットの場合、またはarc diff HEAD~N N件のコミット。

3
Will