gitを使用して特定のファイルへの変更を確認する


472

git diffコマンドを使用して変更を確認できることはわかっていますが、私が理解している限り、これはディレクトリベースです。つまり、現在のディレクトリにあるすべてのファイルのすべての変更が提供されます。

特定のファイルの変更のみを確認するにはどうすればよいですか?セイ、私が変更されたファイルはfile_1.rbfile_2.rb、...、file_N.rbが、私は、ファイルの変更に興味を持っていますfile_2.rb。(コミットする前に)これらの変更を確認するにはどうすればよいですか?



4
私の主な質問は、すべての変更をコミットする前に特定のファイルの違いを確認する方法です。Gitログはコミットされた変更だと思います。
Mellon

1
私の経験では、GitKrakenの
Giovanni

回答:


642

次のようなコマンドを使用します。

git diff file_2.rb

違いを得ることができる種類の詳細については、git diffドキュメントを参照してください。

通常、git diffそれ自体で(現在のディレクトリだけでなく)リポジトリ全体のすべての変更が表示されます


100
すでに「git add」されたファイルの変更を表示する場合は、「git diff --cached」です
Ana Betts

8
古いコミットに対してファイルをチェックする場合:$ git diff [commit hash] file_2.rb
Alex Angelico

2
差分ビューを終了する方法は?
ギャリー

1
または、SourceTreeを使用します。
GeneCode、2016年

4
@GurpreetsinghDhanju Qを押してみてください

110

別の方法(このSO回答で説明されています)では、ターミナルに履歴が保持され、ファイル自体の非常に深い実績が得られます。

git log --follow -p -- file

これにより、ファイルの履歴全体が表示されます(名前の変更後の履歴と、変更ごとの差分を含む)。

つまり、barという名前のファイルがかつてfooという名前であった場合、git log -p bar(--followオプションなし)は、名前が変更された時点までのファイルの履歴のみを表示します-は表示されませんfooと呼ばれていたファイルの履歴。git log --follow -p barを使用すると、ファイルがfooとして認識されたときのファイルへの変更を含む、ファイル全体の履歴が表示されます。


3
--statとうまく連携して、追加/削除された行の概要を表示します。
トム・ヘイル

2
はい、この回答は少なくとも上位にランク付けされ、現在の差分だけでなく履歴も追跡する必要があります。また、すべてのコミットハッシュを追跡する必要はありません。非常にシンプルな使用法でありながら、非常に強力な変更
Ilhicas

87

を使用gitk [filename]して変更ログを表示できます


2
これにより、ファイルのコミットの履歴が表示され、必要な場合があります。
r1k0 2014

26

以下のコマンドを使用して、ファイルで誰が何を変更したかを確認できます。

git blame <filename>


4
これは、誰がどの変更を行ったのか、いつ、どのコミットが変更の一部であったのかを示す最良の答えです。特定の変更をフィルターに掛けるgit blame <filename> | grep <searchfor><searchfor>は、短い値をどこにするかを指定します。たとえば、で誰に変更したかを調べるfoobardist/index.phpgit blame dist/index.php | grep bar
Kraang Prime

15

実行できます

git status -s

これにより、変更されたファイル名が表示され、関心のあるファイルパスをコピーすることで、変更を確認できます。 git diff

git diff <filepath + filename>

8

特定のファイル変更のコミット詳細のみをリストするには、

git log --follow file_1.rb

同じファイルのさまざまなコミットの違いをリストするには、

git log -p file_1.rb

コミットとそのメッセージのみをリストするには、

git log --follow --oneline file_1.rb

5

あなたも試すことができます

git show <filename>

コミットの場合、git showはログメッセージとテキスト形式の差分(ファイルとコミットされたバージョンのファイルの間)を表示します。

詳細については、git show Documentationを確認してください。



0

@Greg Hewgillに完全に同意する

パスにスペースが含まれている場合は、アポストロフィ'または `

git diff 'MyProject / My Folder / My Sub Folder / file_2.rb'

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