我的同事问我是否可以在提交文件之后输入文件,例如pom.xml文件,常用于maven项目。
我发现git update-index --assume-unchanged在这种情况下很有用。但是当我尝试从另一个分支合并时,git仍在跟踪被忽略的文件并发生冲突。
我该怎样做才能避免这种情况?我应该在所有分支中使用此命令(git update-index assume-unchanged)吗?
答案 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
。
根据您的情况,您可以参考以下两种方式:
.gitignore
中添加该文件,并使用git rm --cached filename
来取消该文件。git merge branchname -X ours/theirs
使文件无效。