ファイルがあります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 つのパスが関係します。