特定のディレクトリで「git diff」を実行するにはどうすればよいですか?


132

git diff実際には、すべてのソースコードでdiffを実行します。特定のディレクトリでこれを行うと、その下のファイルの変更を表示できますか?


2
stackoverflow.com/a/12123669/1815624 git diff master..yourbranch path/to/folder
CrandellWS

回答:


125

パス(この場合はmyfolder)を指定して、次のコマンドを実行します。

git diff myfolder/

28
git diff -- myfoldergitのあいまいさを最小限に抑えるために使用したいと思います。git diff(および多くのgitコマンド)の一般的な表記ではgit diff [commit-ish] -- [path]、commit-ishはデフォルトでHEAD(現在の場所)になり、[path]デフォルトはgitルートディレクトリになりますが、現在のディレクトリに関連するものであれば何でもかまいません。なければ--、Gitはあなたが何を意味するか推測し、します[commit-ish][path]。場合によっては、これによりgitは表記が「あいまい」であると言います。もし私が正確に覚えていれば。
L0LN1NJ4 2014

2
回答のメソッドとコメントのメソッドを試しても何も表示されません。
光線

@rayは、作業ツリーと最新のコミットの間に違いがないことを意味します
valerij vasilcenko

3
@rayおよびこれを見ている将来の個人に対しては、git diff master..develop myfolder/@ CrandellWSが元の質問のコメントで言ったように、比較しようとしているブランチを含めることができます。それがあなたが探しているものであれば、Gitステータスはあなたに変化を示します。
BVBAccelerate

2
@rayは、ルートディレクトリにいることを確認してください。パスは現在のディレクトリからの相対パスになります。
Nickofthyme 2018年

59

異なるブランチを比較する場合は、を使用--してGitリビジョンをファイルシステムパスから分離する必要があります。例えば、2つのローカルの支店を持つ、masterbryan-working

$ git diff master -- AFolderOfCode/ bryan-working -- AFolderOfCode/

または、ローカルブランチからリモートへ:

$ git diff master -- AFolderOfCode/ origin/master -- AFolderOfCode/

29
次のように、両方のブランチをリストした後、1つだけ-句が必要です:git diff branch1 branch2-path / to / dir
emery

4

あなたはこのようなもののためにドキュメントを見る習慣を作るべきです。それは非常に便利で、あなたのスキルをすぐに向上させます。ここにあなたがするときの関連するビットがありますgit help diff

   git diff [options] [--no-index] [--] <path> <path>

2 <path>つのは、問題のディレクトリに変更する必要があるものです。


3

追加越えては比較のGitのあなたdifftoolとしてとしてdiffdirのエイリアスを追加します。

git config --global alias.diffdir = "difftool --dir-diff --tool=bc3 --no-prompt"

gitdiffを次のように取得します。

git diffdir 4bc7ba80edf6  7f566710c7

リファレンス: ディレクトリ全体を比較w git difftool + Beyond Compare


1
等号はgit 2.17.1では間違っているようです。使用するgit config --global alias.diffdir = "difftool --dir-diff --tool=bc3 --no-prompt"代わりに
マーク・シェーファー

dir diffにBeyond Compareを使用する場合は、シンボリックリンクに従うように構成する必要があります(フォルダー比較ビュー->ルール(レフェリーアイコン)->処理->シンボリックリンクに従う)または、--no-symlinksオプションを追加してコマンドがgit difftool --dir-diff --no-symlinks
Ashutosh Jindal

1

パスを追加できるだけでなくgit diff --relative、そのフォルダーに関連する結果を取得するために追加できます。

git -C a/folder diff --relative

また、Git 2.28(2020年第3四半期)では、「diff」ファミリーのコマンドが「diff.relative」構成変数を尊重することを学びました。

Laurent Arnoud()によるcommit c28ded8(2020年5月22日)を参照してください。(合併によりJunio C浜野- -コミットe34df9a、2020年6月2日)spk
gitster

diff:設定オプションを追加 relative

サインオフ:Laurent Arnoud
Acked-by:ĐoànTrầnCôngDanh

diff.relative設定されたブールオプションは、オプションtruepath引数で指定された現在のディレクトリ/値の変更のみを表示relativeし、前述のディレクトリに対する相対パス名を表示します。

--no-relative以前にオーバーライドするように教える--relative

git-format-patch(1)オプションのドキュメント--relative--no-relative

ドキュメントが今含まれて

diff.relative

' true'に設定すると、 ' git diff'はディレクトリ外の変更を表示せず、現在のディレクトリからの相対パス名を表示します。



0

Beyond Compareをディレクトリdiffのdifftoolとして使用するには、以下のようなシンボリックリンクを有効にすることを忘れないでください。

フォルダビューの比較ルール(審判のアイコンを):

ここに画像の説明を入力してください

次に、シンボリックリンクをたどり、セッションのデフォルトを更新します。

ここに画像の説明を入力してください


または、

次のようにエイリアスを設定します。

git config --global alias.diffdir "difftool --dir-diff --tool=bc3 --no-prompt --no-symlinks"

どちらの場合も、現在の作業ツリーを参照する側(左または右)に対して行われた編集は保持されることに注意してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.