3

私はバージョン管理の世界に不慣れで、git を使い始めたばかりです。コマンドを実行すると、次の出力が得られますgit log

commit 3b33318e20a64f4395bba416fe60f50f9e0002d1
Author: pm
Date:   Thu Jan 24 08:42:24 2013 +1300

    added fourth line to test1

commit 37f2ce409cdc971958add1fcf6585064f5c0d61d
Author: pm
Date:   Thu Jan 24 08:41:24 2013 +1300

    first commit

git log最新のコミットに続いて前のコミットが表示されることを理解しています。ここで、「最新のコミットと以前のコミットの違いを表示してください」git diff HEAD HEAD~であると理解しているコマンドを実行すると、次の出力が得られます。

diff --git a/test1 b/test1
index c6f02c2..e41a5e4 100644
--- a/test1
+++ b/test1
@@ -1,4 +1,3 @@
 This is a test document
 This is the second line in the document
 And the third
-Added a fourth line

ファイルtest1を変更したときに新しい行を追加したマイナス記号が表示されますが、「最後から2番目のコミットと最新のコミットの違いを表示してください」git diff HEAD~ HEADと理解できるコマンドを実行すると、次のように表示されます出力:

diff --git a/test1 b/test1
index e41a5e4..c6f02c2 100644
--- a/test1
+++ b/test1
@@ -1,3 +1,4 @@
 This is a test document
 This is the second line in the document
 And the third
+Added a fourth line

プラス記号で 4 行目を追加したことを示しています。

ファイルの比較方法は重要ですか? ファイルを比較する方法は「最新のものと以前のものを比較する」、つまりgit diff HEAD HEAD~

4

2 に答える 2

5

git diff A BA から B に取得するために必要な変更をリストします。引数を交換すると、例のように逆の変更が得られます。

git diff A BGit は A が B の前に発生したことを認識し、 と に対して同じ出力を生成できると主張できますgit diff B A。ただし、次の 2 つの理由から、これはお勧めできません。

  1. から get への変更を左から右に表示すると、より一貫性が保たれます。また、特にその上にスクリプトを作成する場合に便利です。

  2. 次の例のように、どのコミットが別のコミットの前にあるのかが明確でない場合があります。

      C
     / \
    A   B
    

    git diff A B: A は B の前ですか、それとも B は A の前ですか?

于 2013-01-23T20:11:15.343 に答える
0

参照を git diff に渡す場合、順序は実際に重要です。過去から未来への差分を表示するには、次のものが必要です。

git diff HEAD~ HEAD

Git は当て推量を行いません。

于 2013-01-23T19:59:07.703 に答える