2016-05-06 1 views
3

最初のコミットがファイルXを追加するシナリオでは、2番目のコミットはXを削除し、3番目のコミットは再追加します。2つのgitコミットの実際の違いを得ることができますか?

git diffを実行すると、Xが削除され、Xが追加されます。

この変更を分析して結果を得る方法はありますか?

私はラインの変更で実際に興味を持って、私の本当の例では、私はこの応答を得る:

index 5988d3c..eaf3238 100644 
--- a/.babelrc 
+++ b/.babelrc 
@@ -1,3 +1,3 @@ 
-{ 
- "presets": ["es2015", "stage-0"] 
-} 
+{ 
+ "presets": ["es2015", "stage-0"] 
+} 

まったく同じ行がを追加し、が差し引か表示するように思われます。

編集:ここでは

は、あなたが簡単に行うことができますgit diff [first commit] [third commit]デフ-R

--- b/.babelrc 
+++ a/.babelrc 
@@ -1,3 +1,3 @@ 
-{ 
- "presets": ["es2015", "stage-0"] 
-} 
+{^M 
+ "presets": ["es2015", "stage-0"]^M 
+}^M 
+0

'gitのdiffをHEAD〜2'はあなたに空の結果を与えます。 'git diff HEAD〜1'は、あなたが書き加えたファイルをあなたに与えます。私はあなたの質問を理解しているか分からない。 –

+0

@JulienLopez私が直面している問題を表示するために私の質問を更新しました。差異は**と**を加えた正確な同じテキストを表示するようです。 –

+1

これは空白の問題のようです。 ? – dimid

答えて

2

の出力であり、これは何の違いを返しません。

たとえば、ここに私のテストリポジトリのgit logがあります。

commit 368c6c0bc4169b8f482761b036da2284f937579d 
Author: Adam 
Date: Fri May 6 10:17:45 2016 +0100 

    Edited file back. 

commit 54d9885f860b56c34718387206397c703eb37b36 
Author: Adam 
Date: Fri May 6 10:16:51 2016 +0100 

    Edited file. 

commit 681f117fd095c7a99d631a1819db855d7fd9e6e8 
Author: Adam 
Date: Fri May 6 10:16:09 2016 +0100 

    Added file. 

Iの結果が空git diff 681f117fd095c7a99d631a1819db855d7fd9e6e8 368c6c0bc4169b8f482761b036da2284f937579dを使用して第一および第三のコミットを比較します。

しかし、私は最初の比較と第二結果がgit diff 681f117fd095c7a99d631a1819db855d7fd9e6e8 54d9885f860b56c34718387206397c703eb37b36を使用してコミットした場合:

diff --git a/file.txt b/file.txt 
index c9a0e4f..76af740 100644 
--- a/file.txt 
+++ b/file.txt 
@@ -1,6 +1,6 @@ 
I won't edit this line. 

-I will edit this line. 
+I have edited this line. 

I won't edit this line. 

あなたが設定され、空の変更を取得されていませんが、行は同じを読む場合は、文字でいくつかの違いが存在しなければなりませんスペースの代わりにタブが使用されたり、別の行の末尾が使用されるなど、行内で

git diff -wを使用すると、diffを実行するときに空白を無視できます。ドキュメント:https://git-scm.com/docs/git-diff

これが役立ちます。

+0

ありがとう、私のやりたいことの本当の例を見るために私の更新された質問をご覧ください。 –

+0

私はあなたのために私の答えを更新しました。 – anierzad

0

私がコメントで言ったように、それは空白の問題です。 ^Mを取り除くにはdos2unixを使用してください。空白を無視する場合は、git diff -wを使用してください。ただし、私はそれをお勧めしません。

1

あなたは、単にそれはあなたに2つのコミットの差分を表示します次のコマンドを使用して試すことができます。..

git diff first_commit_id(hash) second_commit_id(hash) 

あなたはgit logコマンドを入力してcommit_id(ハッシュ)を見つけることができます。..

Example: 

git diff effd192760b957b9a65b011249c122f8434ba7cf effd192760b957b9a67b011249c122f8434ba7cf 
関連する問題