2013-07-23 30 views
0

雖然使用Git,我在主分支簽出特定修訂:在git中籤出舊版本,然後返回到最新版本,但從舊版本中刪除的文件仍在本地目錄中?

checkout <branch hash> .

我只是這樣做是爲了看看一些以前的文件,我不需要做任何改變。然後我試圖將我目前的狀態重置爲我的最新版本。不幸的是,我嘗試了幾個命令,因爲我不確定它是否最初起作用;這些命令包括:​​

checkout master .

checkout HEAD .

reset HEAD --hard

我不知道這是否曾在第一,因爲某些行爲表示了舊版本的前一個文件存在。

然後我意識到我的修改過的和新的文件確實已恢復到當前的修訂版,但是我在舊修訂版和當前修訂版之間刪除的文件仍然位於本地目錄中。這是否應該發生?我想,在返回到當前版本後,沒有人會希望舊的,刪除的文件存在,但似乎是這樣。

我想知道如果我做錯了這種情況發生,或者如果有另一個命令我可以用來刪除這些不需要的臨時簽出的修訂文件?

+0

你的問題是'.'在你結賬的最後路徑:你告訴它要檢查出路徑,'.',即遞歸整個當前目錄,從提交,不切換提交。所以它將整個'master'結賬添加到您的工作樹和索引中。 – jthill

回答

1

請參見:GIT: When checking out an alternative branch, I want to clear ignored files

我相信你正在尋找的git clean命令。如果您快速執行git clean -nd <path>,它將列出所有未被跟蹤/刪除的文件,這些文件將在實際運行該命令後刪除。

如果您確定包含要刪除的所有文件,請執行git clean -df <path>

參考:http://gitready.com/beginner/2009/01/16/cleaning-up-untracked-files.html

+1

真棒,並感謝您的鏈接!我明白爲什麼我觀察到的行爲也是現在的默認行爲。需要注意的是,-f標誌對於實際的刪除命令也是必需的,否則我會收到:「fatal:clean.requireForce默認爲true,既沒有-n也沒有-f給定;拒絕清理」。所以'git clean -df '的確做到了! – user1167662

+1

@ user1167662謝謝;我更新了答案,以便其他任何正在查看此內容的人都能看到它。 –