1. ホーム
  2. git

[解決済み] git diff ファイル名を変更

2022-09-25 22:27:18

質問

私は、あるファイル a.txt .

cat a.txt
> hello

の内容は a.txt は "hello"です。

コミットしています。

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

次に a.txttest のディレクションを行います。

mkdir test
mv a.txt test

そして、2回目のコミットを行います。

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

最後に a.txt を編集して、代わりに "goodbye"と言うようにします。

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 . あるのでしょうか?

どのように解決するのですか?

の違いの問題。 HEAD^^HEAD を持つということです。 a.txt があることです。したがって、この二つのコミットを考慮するだけでは (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 を一つのパスだけに限定した場合 ( git diff HEAD^^ HEAD a.txt のように)、1 つのパス以外のすべてを除外しているため、リネームやコピーが表示されることはないでしょう。