web-dev-qa-db-ja.com

ポイントまたはブランチの原点から「git diff」をすばやく実行する方法はありますか?

私はさまざまなSO git diffおよびgitリビジョン(HEAD、ORIG_HEAD、FETCH_HEADなど)と、ローカルブランチの開始以降、または最後のリベース以降に行われた変更を一覧表示する簡単な方法がまだ見つかりません。

簡単コミットを検索して貼り付ける必要がないことを意味しますSHAまたは、振り返りたいコミットの数を数える必要はありません。

git diff Origin/masterは近いですが、新しいブランチをチェックアウトしてから分岐したリモートを指します。

私はgit diff BASE_HEADが利用可能になります。

...既にそれを行う方法がない限り。誰にも答えがありますか?

39
user776686

つかいます git diff @{u}...HEAD、3つのドット。

2つのドットがある場合、またはHEADが省略されている場合、両側の変更による差分が表示されます。

3つのドットで、あなたの側の変更からの差分のみを表示します。

編集:ニーズがわずかに異なる人には、git merge-base(他の回答が使用するよりも多くのオプションがあることに注意してください)。

26
o11c

git merge-baseを使用して、分岐点を見つけることができます。 masterがメインラインであり、devが履歴に関心があるブランチを検討してください。devmasterから分岐したポイントを見つけるには、次を実行します。

git merge-base --fork-point master dev

これでdevをこの基準と比較できます:

git diff $(git merge-base --fork-point master dev)..dev

devcurrentブランチの場合、これは次のように単純化されます:

git diff $(git merge-base --fork-point master)

詳細については、 git-merge-base documentation を参照してください。

37
frasertweedale

以下を使用して、ブランチの開始点から現在のブランチを比較できます。

git diff (start point)...

(開始点)はブランチ名、コミットID、またはタグです。

たとえば、developから分岐した機能ブランチで作業している場合、次を使用できます。

git diff develop...

分岐点以降の現在の分岐のすべての変更に対して。

これはすでにコメントで言及されていますが、回答状況に値すると思います。前回のリベース以来、それが何をするのか分かりません。

7
crimbo

差分については、3ドット表記が必要です。ブランチがdevと呼ばれ、masterから分岐した場合:

% git diff master...dev

ログの場合、2ドット表記が必要です。

% git log master..dev

リビジョン構文r1..r2(2つのドット付き)は、「r2から到達可能なすべて(包括的)であるが、r1から到達不可能(包括的)」を意味します。これを使用する通常の方法は、r1およびr2を一連のコミットの範囲(r1排他的、r2包括的)を指定していると考えることです。 10リビジョン、3..7は変更4、5、6、7を表示します。{1, 2, 3, 4, 5, 6, 7}マイナス{1, 2, 3}です。ただし、r1は必ずしもr2の祖先である必要はありません。 r1r1からの祖先全体を逆方向に表し、r2r2からの祖先全体を逆方向に表す集合演算のように考えてください。 2番目のセットからの最初のセット。

それで:

git log master..dev

ブランチの全履歴からマスターの全履歴を引いたものです。つまり、ブランチだけです。

2

リモートマスターブランチと比較するには:

git diff $(git merge-base HEAD Origin/master)..
0
Harald Nordgren

Visual Studio 2017では、差分を表示する快適な方法があります。

  1. Team Explorer-> Branchesでブランチを右クリックし、View Historyを選択します

View History

  1. History-branchコントロールで、差分が必要なコミットを選択し、Compare Commitsを選択します

Compare Commits

Nice diffの概要が表示され、比較モードでファイルを開くことができます。

0
Felix Keil