2014-01-15 26 views
41

我想如果你想跟蹤你應該git add [files you want to track]什麼是「沒有上演提交更改」的意思是

我不知道爲什麼我得到了消息Changes not staged for commit的文件。

如果這些文件沒有上演,不應該git顯示我的那些文件是Untracked

enter image description here

所有我所做的是從develop分支創建一個新的功能,並在feature/change_excel_format分公司工作

我認爲這些文件應在staged狀態,

git status告訴我Changes not staged for commit

enter image description here

向大家介紹, 我只知道有3個階段的git untrackedstagedcommitted 任何一個可以告訴我,什麼是舞臺Changes not staged for commit enter image description here

所以,如果我修改文件a(已在回購)

和類型git st時,git會告訴我Changes not staged for commit

如果我git a那麼該文件a將在staged status

如果我修改了file a現在,將有file a兩個狀態中git,對不對?

所以我必須決定是否讓staged a被提交或使not stage a上演, 然後是前上演file a將被拋棄?

enter image description here

回答

54

當你改變一個文件,該文件已經在庫中,你如果你希望它上演得git add一遍。

這允許您只提交自上次提交以來所做更改的子集。例如,假設您有文件a,文件b和文件c。您可以修改文件a和文件b,但是這些更改在本質上是非常不同的,並且您不希望所有這些更改都在一次提交中。您發出

git add a 
git commit a -m "bugfix, in a" 
git add b 
git commit b -m "new feature, in b" 

作爲一個側面說明,如果你想提交一切你可以只輸入

git commit -a 

希望它能幫助。

+0

所以,如果這些文件是在回購中。我已經改變了他們,我也可以直接提交他們,而不添加它們,對吧?當然是 – newBike

+0

。在這種情況下,只有列出的文件將被提交,而不管在不同文件中是否存在分階段更改。 –

+0

我有同樣的問題,但我的問題也是關於未跟蹤文件的子模塊原因。所以在我的子目錄中,我還用git添加了所有更改,問題已經消失。 – elia

15

你必須使用git add來暫存它們,否則它們將不會提交。認爲它通知git哪些是您想要提交的更改。

git add -u :/增加了舞臺 git add * :/增加了修改,任何新的文件的所有修改過的文件的變化(這不是gitignore'ed)的階段

+0

不錯的解決方案。它節省了我很多時間 –

0

這意味着他們不會被添加到被提交,你將不得不做的git添加腳本/ excel_parser.py和喜歡階段他們..一旦他們上演時,當你做混帳狀態他們將被分階段和git提交將提交他們

你可以git提交-a -m「所有簽入」將自動分階段並提交樹中的所有文件

2

這是告訴你的Git的另一種方式:

嘿,你已經做了一些具體的變化,但請記住,當你寫網頁對我的歷史,這些變化將不會在這些網頁。

文件的更改,如果你不明確git add沒有上演他們(這是有道理的)。

所以當你git commit,這些變化將不會被添加,因爲他們沒有上演。如果你想提交它們,你必須先把它們放在第一位(即git add)。

-3

處理子模塊時出現此錯誤。在你的情況〜/ tmp/hi。嘗試

git st 

這將顯示未被跟蹤的更改。此時你應該可以從子模塊HEAD提交。有關子模塊的更多信息: Git Submotules