2016-05-13 16 views
0

私は次のコマンドを実行し、git diff HEAHなどgit diff「間違った」出力

[email protected] MINGW64 ~/Desktop/path/to/my/workspace/demo 
$ git init 

Initialized empty Git repository in C:/Users/Athrun/Desktop/path/to/my/workspace           /demo/.git/ 

[email protected] MINGW64 ~/Desktop/path/to/my/workspace/demo (master) 
$ echo "Hello World" > welcome.txt 

[email protected] MINGW64 ~/Desktop/path/to/my/workspace/demo (master) 
$ git add welcome.txt 

[email protected] MINGW64 ~/Desktop/path/to/my/workspace/demo (master) 
$ git commit -m "\"Hello World\" committed" 

[master (root-commit) eb00b00] "Hello World" committed 
1 file changed, 1 insertion(+) 
create mode 100644 welcome.txt 

[email protected] MINGW64 ~/Desktop/path/to/my/workspace/demo (master) 
$ git rm --cached welcome.txt 

rm 'welcome.txt' 

[email protected] MINGW64 ~/Desktop/path/to/my/workspace/demo (master) 
$ git diff HEAD 

diff --git a/welcome.txt b/welcome.txt 
deleted file mode 100644 
index 557db03..0000000 
--- a/welcome.txt 
+++ /dev/null 
@@ -1 +0,0 @@ 
-Hello World 

[email protected] MINGW64 ~/Desktop/path/to/my/workspace/demo (master) 
$ git diff 

によって出力について混乱しましたが、基本的に私は、文字列を使用してファイルを作成し、レポを初期化"Hello World"とファイルをコミットしました。次に、私はgit rm --cached welcome.txtコマンドを実行して、 "ファイル"(ここでは "ファイル"と呼んでよいかどうかはわかりません)を削除してステージング領域に入れました。次に、HEADとステージング領域の変更を比較する2つのコマンドgit diff HEADgit diffを実行しました。

私がここで理解しているのは、作業ディレクトリとHEADに同じバージョンのファイルがあり、 'git diff HEAD'は何も表示されず、 'git diff'には「Hello World」が削除されている必要があります。

ただし、出力は正反対です。

答えて

1

作業ディレクトリを比較に参加させると、追跡ファイルのみが考慮されます。

  1. git diff HEAD

    HEADは(どのファイルを追跡しない)ディレクトリが空で働いて、一つのファイルwelcome.txtを持っているので、diffは削除welcome.txtです。
  2. git diff:インデックスが空であり、作業ディレクトリが空であり(ファイルが追跡されていない)、diffが空です。
+0

@PetSerAIあなたの答えをありがとう、私は気づいていないrm - キャッシュは、ファイルをuntracks。それは大いに役立ちます。 – user1888955

0

私はGITを理解するために、あなたの質問の説明を以下に示します。

welcome.txtファイルに "Hello world"をコミットしました。だから、コミット($ git commit -m "\" Hello World \ "committed")の後にコミットID(C1)が得られます。あなたの頭はC1を指します。

その後、作業ツリーが変更されるように(git rm --cached welcome.txt)でファイルを変更します。変更はコミットされていないので、変更は作業ツリーにあります。

1 - git diff HEAD - HEAD(C1)と "Hello World"という作業ツリーの違いを示すはずです。

変更内容をコミットするには "git rm"を実行してください。差分はありません。

2 - git diff - ステージング領域と作業ツリーの違いを表示します。

しかし、これは空ではないと思います。だから、これは私にとってさえ明らかではありません。

私が間違っているか、あなたの質問が適切に理解できなかった場合は、私を修正してください。

+0

ありがとうございました。 git rm --cachedは実際にファイルをuntrackして、私が昨日持っていた問題を引き起こしました。 – user1888955