web-dev-qa-db-ja.com

コミット前にgitでファイルの差分を見る方法

これはよく起こります。

私は一日か二日の間に同時にいくつかの関連する変更に取り組んでいます、そしてそれがコミットする時が来たとき、私は特定のファイルで何が変更されたのか忘れてしまいます。 (これは単なる個人的なgitリポジトリなので、コミットに複数の更新を含めることで問題ありません。)

チェックインしようとしているローカルファイルと、そのファイルに対する最後のコミットとの間の変更をプレビューする方法はありますか?

何かのようなもの:

git diff --changed /myfile.txt

そしてそれは次のようなものをプリントするでしょう:

line 23
  (last commit): var = 2+2
  (current):     var = myfunction() + 2

line 149
  (last commit): return var
  (current):     return var / 7

このようにして、最後にチェックインされてからそのファイルで何をしたのかをすぐに確認できます。

366
Sauce McBoss

まだgit addしていないものを見たい場合は、

git diff myfile.txt

すでに追加された変更を確認したい場合

git diff --cached myfile.txt
619
Amber
git diff HEAD file

前回のコミット以降にワークツリーに追加した変更が表示されます。すべての変更(段階的または段階的でない)が表示されます。

57
ouah

-vに対して--verbose(またはgit commit)オプションを試しましたか?メッセージエディタにコミットの差分を追加します。

15
vhallac

ファイルを最後のコミットと比較したい場合に考慮すべきもう1つの手法は、もっとペディキュアがあります。

git diff master myfile.txt

この手法の利点は、最後から2番目のコミットと比較できることです。

git diff master^ myfile.txt

そしてその前のもの:

git diff master^^ myfile.txt

また、マスターブランチにいない場合は、キャレット '^'の代わりに '〜'を、 'マスター'の代わりに 'あなたのブランチ名'を使用することもできます。

13
anisbet

地域の違いを確認するには

git diff myfile.txt

または、差分ツールを使用することもできます(いくつかの変更を元に戻したい場合)。

git difftool myfile.txt

git difftoolをより効率的に使用するには、Meld、DiffMerge、OpenDiffなどのお気に入りのGUIツールをインストールして使用してください。

注:現在のディレクトリの変更を確認するために(filenameの代わりに).を使用することもできます。

各行ごとの変更を確認するには、どの行がどのコミットでコミットされたかを表示するgit blameを使用します。


コミット前の実際のファイルを表示するには(ここでmasterはあなたのブランチです):

git show master:path/my_file
13
kenorb

私はこれがGUIを保証する完璧なユースケースだと思います。 - コマンドラインでも十分に達成できることを私は完全に理解していますが。

個人的には、私のすべてのコミットは、私はgit-guiから行います。それがそうするのが理にかなっていれば私は別々のハンク/行で複数のアトミックコミットをすることができます。

Gut Guiは、よくフォーマットされた色付きインターフェースで差分を見ることを可能にします。かなり軽いです。これもチェックアウトすべきもののようです。

12
Lakshman Prasad

MacOSでは、gitのルートディレクトリに行き、git diff *と入力してください。

10
poima

私が見つけた最良の方法は、専用のコミットGUIを使用することを除いて、git difftool -dを使用することです - これはあなたのdiffツールをディレクトリ比較モードで開き、HEADを現在のダーティーフォルダと比較します。

4
VitalyB
git difftool -d HEAD filename.txt

これは端子にVIスリット窓を使用した比較を示しています。

3
Tomachi