Mercurial noob在这里。我在处理mercurial和xcuserdata和.ds_store以及.git等文件时遇到了很多麻烦。我的智慧结束了。
目前的设置有一个像中间人一样的中央回购。我们推动并拉动它的变化。
之前推送的提交包括在创建.hgignore文件之前包含不需要的文件(xcuserdata,git,ds_store)。这导致了噩梦。
我尝试了什么:
我试图忽略这个问题并让合并处理它,但是由于冲突,它会在每次推送时导致中央仓库上的分支(推送中的冲突都没有显示在终端中所以我没有机会合并推送)并破坏项目文件,使其导致合并工具如filemerge和kdiff3挂起。
我尝试制作一个本地.hgignore文件并使用hg忘记xcuserdata来停止跟踪那些东西,但它仍然会推送并拉出那些不需要的文件。
我想要发生什么:
我希望中央存储库删除那些不需要的文件。每个开发人员仍应拥有自己的本地版本的这些文件。新提交将忽略这些文件。我该怎么做?
由于
答案 0 :(得分:4)
只需hg forget
要删除的文件并将其推送到服务器即可。下一次团队的其他成员将从存储库中撤出时,这些文件也将被遗忘。
请注意forget
仅适用于当前分支,如果您有其他分支,则必须对每个分支执行此操作。
要自动忘记.hgignore
中包含的所有文件,您可以
hg forget "set:hgignore()"
确保团队的每个部分都了解您对这些文件的决定,否则他们将来可能会再次添加这些文件。沟通是关键!
仅供参考,.hgignore
对存储库中的文件已经没有任何影响,它只会影响未添加的文件。
否则,如果你真的想要从历史记录中完全删除文件,你可以使用MQ扩展,但这是另一个故事,它更加复杂和无用恕我直言。