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