527

これは私によく起こります:

私は1日か2日の間に、いくつかの関連する変更に同時に取り組んでいます。コミットするときは、特定のファイルで何が変更されたかを忘れてしまいます。(これは単なる個人的な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

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

4

10 に答える 10

869

git addまだ編集していないものを確認したい場合:

git diff myfile.txt

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

git diff --cached myfile.txt
于 2012-04-06T06:04:54.893 に答える
76
git diff HEAD file

前回のコミットからワークツリーに追加した変更が表示されます。すべての変更(ステージングされているかどうか)が表示されます。

于 2012-04-06T09:13:12.520 に答える
23

ローカルの違いを確認するには:

git diff myfile.txt

または、差分ツールを使用できます(一部の変更を元に戻したい場合):

git difftool myfile.txt

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

注:(.ファイル名の代わりに)を使用して、現在のディレクトリの変更を確認することもできます。

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


コミット前の実際のファイル(masterブランチはどこですか)を表示するには、次のコマンドを実行します。

git show master:path/my_file
于 2015-03-09T22:18:50.367 に答える
18

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

于 2012-04-06T06:07:32.760 に答える
18

ファイルをより衒学的な最後のコミットと比較するかどうかを検討する別の手法:

git diff master myfile.txt

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

git diff master^ myfile.txt

そしてその前のもの:

git diff master^^ myfile.txt

また、マスターブランチを使用していない場合は、キャレットの「^」文字を「〜」に、「マスター」を「あなたのブランチ名」に置き換えることができます。

于 2016-12-12T17:03:15.277 に答える
15

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

個人的には、私のすべてのコミットは、git-guiから行います。意味がある場合は、個別のハンク/ラインを使用して複数のアトミックコミットを行うことができます。

Gut Guiを使用すると、適切にフォーマットされた色付きのインターフェイスで差分を表示でき、かなり軽量です。これもチェックアウトする必要があるようです。

于 2012-04-06T06:59:25.337 に答える
14

macOSでは、gitルートディレクトリに移動して次のように入力しますgit diff *

于 2017-06-06T12:20:03.780 に答える
6

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

于 2015-06-29T08:46:56.823 に答える
4
git difftool -d HEAD filename.txt

これは、ターミナルでVIスリットウィンドウを使用した比較を示しています。

于 2018-02-27T10:12:07.037 に答える
0

差分はgit diff次のコマンドで実行できます(変更されたすべてのファイルの差分を表示する場合は、ファイル名が続くか、何も続きません)。しかし、すでにのようなgit add *ことをした場合は、最初に元に戻す必要がありますgit restore --staged .

于 2021-03-05T15:10:21.370 に答える