297

ブランチで変更されたファイルを確認する方法はありますか?

4

16 に答える 16

218

@Marco Pontiによる回答の代替案であり、チェックアウトを回避する:

git diff --name-only <notMainDev> $(git merge-base <notMainDev> <mainDev>)

特定のシェルが$()構造を理解しない場合は、代わりにバックティックを使用してください。

于 2012-05-17T18:53:56.150 に答える
189

あなたがしなければならないのは次のとおりです。

git checkout <notMainDev>
git diff --name-only <mainDev>

これにより、2つのブランチ間で異なるファイル名のみが表示されます。

于 2012-05-17T18:26:35.983 に答える
97

これは今まで言われていないことに驚いています!

git diff main...branch

そのため、変更のみを参照してくださいbranch

現在のブランチの使用を確認するには

git diff main...

jqrに感謝

これは

git diff $(git merge-base main branch) branch

したがって、マージ ベース (ブランチ間の最新の共通コミット) とブランチ チップ

またorigin/main、マスターの代わりに使用すると、ローカルのメインが古い場合に役立ちます

于 2017-01-05T13:19:54.383 に答える
59

これを行う方法がたくさんあるとは信じられません。次の引数を使用して、誰かが以前に投稿したように whatchanged を使用します。

git whatchanged --name-only --pretty="" origin..HEAD

これはファイル名をリストするだけで、現在のブランチで変更されたものだけです。

于 2016-12-01T10:26:05.803 に答える
28

@twalbergの回答はとても気に入りましたが、現在のブランチ名を常に入力する必要はありませんでした。だから私はこれを使用しています:

git diff --name-only $(git merge-base master HEAD)
于 2017-01-04T06:29:21.033 に答える
17
git diff --name-only master...branch-name

比較したいもの。

于 2018-05-18T11:07:50.913 に答える
14

git whatchanged良い代替案のようです。

于 2016-09-15T09:07:18.653 に答える
8

こんなに簡単にできるとしたら?

git changed

メイン ブランチが「マスター」と呼ばれ、マスターから他のブランチを作成すると仮定しても構わない場合は、このエイリアスを~/.gitconfigファイルに追加して簡単にすることができます。

cbranch = !"git branch | grep '*' | cut -f2 -d' '"
changed = !"git diff --name-only $(git cbranch) $(git merge-base $(git cbranch) master)"

これらの仮定は、ほとんどの状況でほとんどの人に当てはまりますが、それを行っていることに注意する必要があります。

また、 をサポートするシェルを使用する必要があります$()シェルがこれをサポートしている可能性が非常に高いです

于 2016-04-18T22:32:51.573 に答える
0

次のバッチ ファイルは twalberg の回答に基づいていますが、Windows でも動作します。

@ECHO OFF
C:                               :: <== OR USE A DIFFERENT DRIVE
CD \path\to\where\git\files\are  :: <== CHANGE TO THE ACTUAL PATH
SET /p b="Enter full path of an ALREADY MERGED branch to compare with origin/master: "
bash --login -i -c "git diff --name-only %b% $(git merge-base %b1% origin/drop2/master)"
PAUSE

上記は、メイン ブランチが origin/master であり、Git のインストール時に git bash が含まれていること (およびその場所がパス環境にあること) を前提としています。実際には、構成された差分ツール (kdiff3) を使用して実際の違いを表示する必要があったため、上記の次の bash コマンドを置き換えました。

bash --login -i -c "git difftool --dir-diff %b% $(git merge-base %b1% origin/drop2/master)"
于 2016-12-14T10:18:53.507 に答える
0

@twalberg と @iconoclast が持っていたものから拡張すると、何らかの理由で cmd を使用している場合は、次を使用できます。

FOR /F "usebackq" %x IN (`"git branch | grep '*' | cut -f2 -d' '"`) DO FOR /F "usebackq" %y IN (`"git merge-base %x master"`) DO git diff --name-only %x %y
于 2016-06-02T13:41:46.343 に答える