2010-11-09 73 views
8

我很難理解hg forget。是否與git rm --cached相同?即將刪除與下一個提交文件並停止跟蹤它?與'git rm --cached`是`hg forget`?

+2

也許這裏接受的答案可以幫助你:http://stackoverflow.com/questions/1101167/what-is-the-difference-between-hg-forget-and-hg-remove – ZeissS 2010-11-09 15:39:30

回答

9

hg forget告訴mercurial停止跟蹤文件,但不會更改工作目錄中的文件。

提交後,它會表現得好像你從未做過hg add(儘管當然歷史仍然存在)。新克隆將不會在其工作目錄中存在該文件,但它不會在您的工作目錄中刪除。

如果你想擁有在工作目錄/清單文件,但想忽略未來的變化,還有通過混淆的東西沒有簡單的方法來做到這一點(因爲它通常被認爲是一個壞主意),雖然你可以假的hg commit上使用-I

更好的方法是在repo中提交你想要的文件樣本,但是你想要忽略其中的更改,然後讓你的構建系統(或你的指令)將它複製到它的非樣本位置。例如,有一個文件config-file.sample,它在回購中被跟蹤,然後如果config-file不存在,則進行安裝/安裝/編譯做一個cp config-file.sample config-file。在您的.hgignore中包含config-file,以免意外添加。這給你一個跟蹤的基準,但不承擔提交和推送你的本地定製風險。這通常用於數據庫路徑等事情。

+0

我認爲git rm --cached就像hg rm - 在 – tonfa 2010-11-09 16:02:35

+0

之後,但是它會從下一次提交中被刪除,並且會被刪除?你描述它的方式正是我的困惑來自的地方。停止跟蹤:這是否意味着將來的更改將被忽略或將文件從清單中刪除 – knittl 2010-11-09 16:02:41

+1

從清單中刪除。正如我的陳述「新克隆人在他們的工作目錄中沒有該文件」所證​​明的那樣。 – 2010-11-09 16:47:11