2014-02-12 71 views
0

我有3個檔,A,B,CGit的失敗改變

我做了一些改變,以A和B,然後跑到git diff檢查我所做的更改。一切看起來不錯。然後我對「C」進行了更改,然後再次運行git diff,但是這次它只顯示了我對「C」所做的更改。如果我輸入git diff HEAD,那麼我可以看到所有3個文件的更改。

我承諾會發生什麼?它只會對C或A,B,C進行更改嗎?

+2

你舉辦這些變化呢? –

+1

在第二次運行'git diff'之前,你確定沒有爲文件A和B運行'git add'嗎? –

+0

@布萊恩,不,我只是在git commit之前做git add和git diff。我會檢查'舞臺'是什麼。 at-Lorenzo:是的,我爲A和B做了git add,並檢查了git diff。然後改變C和git添加C ..然後再次git diff – Crypto

回答

2

如果您將git add編輯爲索引A和B,則可以執行git diff --cached以查看其更改。 git diff僅顯示未執行的更改。答曰git diff man page

Various ways to check your working tree 

    $ git diff   (1) 
    $ git diff --cached (2) 
    $ git diff HEAD  (3) 

1. Changes in the working tree not yet staged for the next commit. 
2. Changes between the index and your last commit; what you would be committing 
    if you run "git commit" without "-a" option. 
3. Changes in the working tree since your last commit; what you would be 
    committing if you run "git commit -a" 

最後,您還應該使用git status你承諾,看看究竟你會被提交之前。

1

您通過git add添加了A和B.如果在爲下一次提交分階段執行filex後運行git diff,則不會看到更改。這是預期的行爲,您可以運行git diff --cached以查看對添加文件的更改。

如果您修改另一個文件,C,git diff將只顯示C中的更改(尚未分配)。 命令git diff HEAD顯示了分段文件和非分頁文件的更改:確切地說,它顯示自上次提交以來工作樹中的更改。

先簡單回答你原來的問題,git commit將更改提交到所有你修改(A,B,C)中的文件,而不是隻C.