2011-11-15 25 views
5

Mercurial noob here。我在處理mercurial和xcuserdata和.ds_store和.git等文件時遇到了很多麻煩。我在我的智慧結束。Mercurial和xcuserdata,.ds_store和.git

目前的設置有一箇中央回購行爲,就像一箇中間人。我們推動並改變它。

之前在提交.hgignore文件之前推送了包含不需要的文件(xcuserdata,git,ds_store)的提交。這已經導致了噩夢。

我試了一下:

我試圖忽視的問題,並讓合併處理它,但它會導致中央回購每推因衝突分公司(上推的衝突並沒有被顯示在終端,所以我不要沒有機會在推送時合併)並破壞項目文件,導致合併工具(如filemerge和kdiff3)掛起。

我嘗試製作一個本地.hgignore文件,並使用hg忘記xcuserdata來停止跟蹤那些東西,但它仍然推動和拉動那些不需要的文件。

我想什麼發生:

我想中央回購刪除那些不需要的文件。每個開發者都應該有他們自己的這些文件的本地版本。新的提交將忽略這些文件。我將如何做到這一點?

感謝

回答

4

只需hg forget你要刪除的文件,並將其推到服務器。下一次團隊的其他成員將從存儲庫中取出時,這些文件也將被遺忘。

請注意,forget只適用於當前分支,如果您有其他分支,則必須對其中的每個分支執行此操作。

要自動忘記包含在.hgignore的所有文件,你可以做

hg forget "set:hgignore()" 

確保你的團隊的每一個部分都知道你對這些文件的決定,否則有可能,他們將增加論文文件再次在未來。溝通是關鍵!

僅供參考,.hgignore對存儲庫中已有的文件已經沒有任何影響,它隻影響未添加的文件。否則,如果你真的想完全從歷史中刪除文件,你可以使用MQ擴展,但這是另一回事,它更加複雜和無用恕我直言。

+0

非常感謝。該集:hgignore命令是一個救星。 T_T我確實發現我的hgignore文件並沒有刪除所有內容。我將它設置爲\ *。xcodeproj/xcuserdata/*,但它不會從其中刪除所有內容。我想我會玩弄它。 –

+0

嘎,嘗試對hgignore進行更多修改失敗。它設法刪除一些文件,如.xcuserdatad/WorkspaceSettings.xcsettings,但我似乎無法得到hgignore文件來刪除其他xcuser的東西。我應該將我的hgignore文件上傳到中央倉庫嗎? –