在git update-index --assume-unchanged之后合并的问题

时间:2017-01-11 11:41:54

标签: java git maven version-control ignore

我的同事问我是否可以在提交文件之后输入文件,例如pom.xml文件,常用于maven项目。

我发现git update-index --assume-unchanged在这种情况下很有用。但是当我尝试从另一个分支合并时,git仍在跟踪被忽略的文件并发生冲突。

我该怎样做才能避免这种情况?我应该在所有分支中使用此命令(git update-index assume-unchanged)吗?

3 个答案:

答案 0 :(得分:0)

正如我评论的那样 - --assume-unchanged isn't the right tool for this job

According to the Git documentation最好的方法是使用git rm --cached <file>;

  

您可能想要做的另一个有用的事情是将文件保留在工作树中,但将其从暂存区域中删除。换句话说,您可能希望将文件保留在硬盘驱动器上,但不要让Git跟踪它。如果您忘记在.gitignore文件中添加内容并意外地将其添加到某个日志文件或一堆.a编译文件中,这将非常有用。为此,请使用--cached选项

然后,您需要将现在未跟踪的文件添加到.gitignore文件中。

对于分支机构 - 您必须管理跟踪此文件的分支机构的合并,以确保它不会再次进入存储库。最简单的方法是在合并之前在每个分支中进行此更改。

答案 1 :(得分:0)

  

我发现了git update-index --assume-unchanged

这告诉git不要将工作目录中的文件与当前的存储库状态进行比较。

另一方面,合并发生在存储库中的提交之间。因此,如果您与某人的合并在同一文件上发生更改,则仍然存在冲突。

您需要该功能的示例是mavens项目配置文件。

我觉得特别是这个文件不应该被忽略或以其他方式排除在scm之外。那你为什么需要呢?

我的猜测是你在pom中定义了指向本地资源的属性。如果是这样:将settings.xml中的"user.home"/.m2移动到>> M = [0, 0, 0;6, 1, 3;1, 7, 0]; >> rank(M) ans = 2 >> rank(M') ans = 2 >> 。这是他们所属的地方。

答案 2 :(得分:0)

命令git update-index --assume-unchanged filename不能在两个分支中使用,这是暂时忽略文件一段时间的方法。当您修改文件,然后想要切换或合并到其他分支时,git会为您显示错误消息,因为您有未提交更改,这意味着您应该在切换或合并分支之前使用git update-index --no-assume-unchanged filename

根据您的情况,您可以参考以下两种方式:

  1. 该文件不再需要进行版本控制。因此,您可以在.gitignore中添加该文件,并使用git rm --cached filename来取消该文件。
  2. 需要对文件进行版本控制。合并分支时,可以使用git merge branchname -X ours/theirs使文件无效。