git diff 名前変更されたファイル 質問する

git diff 名前変更されたファイル 質問する

ファイルがありますa.txt

cat a.txt
> hello

の内容はa.txt「hello」です。

コミットします。

git add a.txt
git commit -m "first commit"

次に、ディレクトリa.txtに移動しますtest

mkdir test
mv a.txt test

次に 2 番目のコミットを実行します。

git add -A
git commit -m "second commit"

a.txt最後に、代わりに「さようなら」と言うように編集します。

cat a.txt
> goodbye

最後のコミットをします。

git add a.txt
git commit -m "final commit"

さて、私の質問は次のとおりです。

a.txt最後のコミットと最初のコミットの内容を比較するにはどうすればよいですか?

試してみましたgit diff HEAD^^..HEAD -M a.txtが、うまくいきませんでした。 はgit log --follow a.txt名前の変更を適切に検出しますが、 に相当するものが見つかりませんgit diff。 何かありますか?

ベストアンサー1

HEAD^^との違いに関する問題は、両方のコミットにHEADがあるためa.txt、これら 2 つのコミットだけを考慮すると (diff が行うこと)、名前の変更はなく、コピーと変更が行われます。

コピーを検出するには、次を使用できます-C

git diff -C HEAD^^ HEAD

結果:

index ce01362..dd7e1c6 100644
--- a/a.txt
+++ b/a.txt
@@ -1 +1 @@
-hello
+goodbye
diff --git a/a.txt b/test/a.txt
similarity index 100%
copy from a.txt
copy to test/a.txt

ちなみに、diff を 1 つのパスだけに制限すると ( で行うように)、git diff HEAD^^ HEAD a.txt名前の変更やコピーは表示されなくなります。これは、1 つのパス以外のすべてを除外しているためであり、名前の変更やコピーには、定義上、2 つのパスが関係します。

おすすめ記事