2014-09-27 69 views
1

後,我一直未跟蹤使用此命令文件:Git的狀態不乾淨untracking文件

git rm --cached source/html/weekend-message.html 

這是堆棧溢出this answer描述的方法。在那之後,我的git的狀態是這樣的:

enter image description here

我不知道現在做什麼(我希望有一個乾淨的狀態),所以我繼續尋找,發現this answer和執行該命令:

git reset HEAD source/html/weekend-message.html 

現在我的git的狀態是這樣的:

enter image description here

我很迷茫。我只是想解開這個文件,然後在這之後有一個空git狀態。我怎麼做?


更新:執行以下VonC的回答提出的命令後:

git rm --cached source/html/weekend-message.html 
git commit -m "delete source/html/weekend-message.html" 

我git的狀態是這樣的:

enter image description here

Git的地位仍然是不清潔:(

回答

3

你應該有:

  • 承諾(以記錄刪除)
  • 補充說,文件到您的.gitignore,添加並提交該更改。

既然你重置文件(撤消記錄在索引中刪除),你可以再次嘗試:

git rm --cached source/html/weekend-message.html 
git commit -m "delete source/html/weekend-message.html" 

然後:

  • 將文件添加到.gitignore文件(您將看到立即從git status輸出消失)
  • 添加並提交.gitignore修改(第二次提交)

注:如意見提出下面,你可以只是一個承諾:

  • git rm --cached source/html/weekend-message.html
  • 將文件添加到.gitignore文件(你會看到立即消失來自git status輸出),git add .gitignore。注意:現在你得到適當的git的狀態,隨時可以COMMITED:enter image description here
  • git commit -m "delete and ignore source/html/weekend-message.html"

注意,要忽略文件在本地(相對於記錄其缺失的歷史回購),你可以使用:

git update-index --skip-worktree -- yourFile 

在那裏沒有提交需要,文件仍然在歷史中。

查看更多「Git - Difference Between 'assume-unchanged' and 'skip-worktree'」。

+0

我已經執行了這些命令,但git狀態仍然不乾淨。 – 2014-09-27 14:12:41

+0

順便說一句你說2個提交都需要執行此屬性? ('rm --cached',然後提交刪除,然後更新.gitignore,最後提交已更新的.gitignore) – 2014-09-27 14:15:46

+0

@ŠimeVidas是的,但只要將該文件添加到.gitignore,它就會從狀態中消失。我編輯了答案,使兩個提交更加明顯。 – VonC 2014-09-27 14:16:50