これはよく起こります。
私は一日か二日の間に同時にいくつかの関連する変更に取り組んでいます、そしてそれがコミットする時が来たとき、私は特定のファイルで何が変更されたのか忘れてしまいます。 (これは単なる個人的な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
このようにして、最後にチェックインされてからそのファイルで何をしたのかをすぐに確認できます。
まだgit add
していないものを見たい場合は、
git diff myfile.txt
すでに追加された変更を確認したい場合
git diff --cached myfile.txt
git diff HEAD file
前回のコミット以降にワークツリーに追加した変更が表示されます。すべての変更(段階的または段階的でない)が表示されます。
-v
に対して--verbose
(またはgit commit
)オプションを試しましたか?メッセージエディタにコミットの差分を追加します。
ファイルを最後のコミットと比較したい場合に考慮すべきもう1つの手法は、もっとペディキュアがあります。
git diff master myfile.txt
この手法の利点は、最後から2番目のコミットと比較できることです。
git diff master^ myfile.txt
そしてその前のもの:
git diff master^^ myfile.txt
また、マスターブランチにいない場合は、キャレット '^'の代わりに '〜'を、 'マスター'の代わりに 'あなたのブランチ名'を使用することもできます。
地域の違いを確認するには
git diff myfile.txt
または、差分ツールを使用することもできます(いくつかの変更を元に戻したい場合)。
git difftool myfile.txt
git difftool
をより効率的に使用するには、Meld、DiffMerge、OpenDiffなどのお気に入りのGUIツールをインストールして使用してください。
注:現在のディレクトリの変更を確認するために(filenameの代わりに).
を使用することもできます。
各行ごとの変更を確認するには、どの行がどのコミットでコミットされたかを表示するgit blame
を使用します。
コミット前の実際のファイルを表示するには(ここでmaster
はあなたのブランチです):
git show master:path/my_file
私はこれがGUIを保証する完璧なユースケースだと思います。 - コマンドラインでも十分に達成できることを私は完全に理解していますが。
個人的には、私のすべてのコミットは、私はgit-guiから行います。それがそうするのが理にかなっていれば私は別々のハンク/行で複数のアトミックコミットをすることができます。
Gut Guiは、よくフォーマットされた色付きインターフェースで差分を見ることを可能にします。かなり軽いです。これもチェックアウトすべきもののようです。
MacOSでは、gitのルートディレクトリに行き、git diff *
と入力してください。
私が見つけた最良の方法は、専用のコミットGUIを使用することを除いて、git difftool -d
を使用することです - これはあなたのdiffツールをディレクトリ比較モードで開き、HEADを現在のダーティーフォルダと比較します。
git difftool -d HEAD filename.txt
これは端子にVIスリット窓を使用した比較を示しています。