5

水银菜鸟在这里。我在使用 mercurial 以及 xcuserdata 和 .ds_store 和 .git 等文件时遇到了很多麻烦。我无计可施。

当前设置有一个像中间人一样的中央仓库。我们推送和拉取更改。

在生成 .hgignore 文件之前,之前推送了包含不需要的文件(xcuserdata、git、ds_store)的提交。这引起了噩梦。

我尝试了什么:

我尝试忽略问题并让合并处理它,但是由于冲突(推送冲突没有显示在终端中,所以我没有机会合并推送)和损坏项目文件导致文件合并和 kdiff3 等合并工具挂起。

我尝试制作一个本地 .hgignore 文件并在 xcuserdata 上使用 hg forget 来停止跟踪这些东西,但它仍然会推送和拉取那些不需要的文件。

我想要发生的事情:

我希望中央仓库删除那些不需要的文件。每个开发人员仍应拥有自己的这些文件的本地版本。新提交将忽略这些文件。我该怎么做?

谢谢

4

1 回答 1

4

只需hg forget要将您要删除的文件并将其推送到服务器即可。下次团队其他成员从存储库中提取文件时,这些文件也会被他们遗忘。

请注意,forget仅适用于当前分支,如果您有其他分支,则必须在每个分支上执行。

要自动忘记包含在 中的所有文件.hgignore,您可以执行

hg forget "set:hgignore()"

确保团队的每个部分都知道您对这些文件的决定,否则他们将来可能会再次添加这些文件。沟通是这里的关键!

仅供参考,对存储库中已有.hgignore的文件没有任何影响,它只会影响未添加的文件。

否则,如果您真的想从历史记录中完全删除该文件,您可以使用 MQ 扩展,但这是另一回事,恕我直言,它更加复杂和无用。

于 2011-11-15T03:45:20.503 回答