Git合并冲突,尽管文件不存在
你能帮我了解一下这种行为吗: 在branch develop上,我有一个包含两个提交的文件:Git合并冲突,尽管文件不存在,git,merge,Git,Merge,你能帮我了解一下这种行为吗: 在branch develop上,我有一个包含两个提交的文件: BOCZA2@PC45819 MINGW64 /c/nttcloud/gitlab/coba/ZAA (develop) $ git log --oneline -- coba.zaa.model/coba.zaa.model.config/src/main/java/com/zaa/model/config/Channel.java 8509cdf Adde
BOCZA2@PC45819 MINGW64 /c/nttcloud/gitlab/coba/ZAA (develop)
$ git log --oneline -- coba.zaa.model/coba.zaa.model.config/src/main/java/com/zaa/model/config/Channel.java
8509cdf Added route generator based on freemarker template
1e890b7 Added XML configuration for test objects in StaticDataInitializer
然后我可以切换到我的功能分支:
BOCZA2@PC45819 MINGW64 /c/nttcloud/gitlab/coba/ZAA (develop)
$ git checkout feature/ZAA_tools_xmlgenerator
Switched to branch 'feature/ZAA_tools_xmlgenerator'
Your branch is up-to-date with 'origin/feature/ZAA_tools_xmlgenerator'.
BOCZA2@PC45819 MINGW64 /c/nttcloud/gitlab/coba/ZAA (feature/ZAA_tools_xmlgenerator)
$ git merge develop
[...]
Auto-merging coba.zaa.model/coba.zaa.model.config/src/main/java/com/zaa/model/config/Channel.java
CONFLICT (content): Merge conflict in coba.zaa.model/coba.zaa.model.config/src/main/java/com/zaa/model/config/Channel.java
[...]
Automatic merge failed; fix conflicts and then commit the result.
并检查我没有提交该文件:
BOCZA2@PC45819 MINGW64 /c/nttcloud/gitlab/coba/ZAA (feature/ZAA_tools_xmlgenerator)
$ git log --oneline -- coba.zaa.model/coba.zaa.model.config/src/main/java/com/zaa/model/config/Channel.java
工作目录中也不存在该文件:
BOCZA2@PC45819 MINGW64 /c/nttcloud/gitlab/coba/ZAA (feature/ZAA_tools_xmlgenerator)
$ cat coba.zaa.model/coba.zaa.model.config/src/main/java/com/zaa/model/config/Channel.java
cat: coba.zaa.model/coba.zaa.model.config/src/main/java/com/zaa/model/config/Channel.java: No such file or directory
但当我尝试将develop合并到我的功能分支时:
BOCZA2@PC45819 MINGW64 /c/nttcloud/gitlab/coba/ZAA (develop)
$ git checkout feature/ZAA_tools_xmlgenerator
Switched to branch 'feature/ZAA_tools_xmlgenerator'
Your branch is up-to-date with 'origin/feature/ZAA_tools_xmlgenerator'.
BOCZA2@PC45819 MINGW64 /c/nttcloud/gitlab/coba/ZAA (feature/ZAA_tools_xmlgenerator)
$ git merge develop
[...]
Auto-merging coba.zaa.model/coba.zaa.model.config/src/main/java/com/zaa/model/config/Channel.java
CONFLICT (content): Merge conflict in coba.zaa.model/coba.zaa.model.config/src/main/java/com/zaa/model/config/Channel.java
[...]
Automatic merge failed; fix conflicts and then commit the result.
我得到了合并冲突(两个都已修改)
有什么问题?该文件在要素分支中不存在!
合并冲突的原因是什么?
我的存储库是否已损坏?
我怎样才能找到原因呢?首先你可以查一下
// List git-ignored files
$ git ls-files . --ignored --exclude-standard --others
// List untracked files
$ git ls-files . --exclude-standard --others
你可以试试
1) "" git add . "" needs u to be in the correct directory, so you can try "" git add -A "" to add everything.
AND
2) git clean -f
可能是要素分支中修改的文件已在开发分支中重命名 我遇到一个问题,master将一个文件(例如a.java)重命名为B.java,而feature分支对a.java进行了更改。
尽管功能分支没有名为B.java的文件的历史记录,但我与B.java有合并冲突。在我的例子中,我遇到了相同的问题,因为git中的文件重命名是一种运行时启发式方法。(这是迈克尔·蒙蒂斯的答案,但没有解决方案。) git在合并时决定我的分支中不存在的文件实际上是我的分支中确实存在的文件的重命名。默认情况下,在合并过程中,在一次提交中具有50%相似性的任何文件都将被视为重命名。要求git以更高的阈值进行合并可以实现以下目的:
git合并主机-X重命名阈值=100%
至于我为什么会碰到这个问题:这是因为我们的团队决定对拉请求使用一个挤压提交策略。这意味着主机上的单个提交是巨大的,从而增加了在这些单个、大规模提交中“重命名”的机会。我通过运行
git reset
解决了这个问题。在我的情况下(IntelliJ IDEA),他在事件日志中提到的一个文件中遇到了问题。由于该文件在两个分支上都不存在,所以我创建了一个名称冲突的空文件,已提交,可以再次合并
我确实也看到了这个文件,使用了
git diff
,我发现每当我们更改css和js编译器/压缩程序代码/引擎/任何东西时,都会发生这种情况。一般来说,只创建文件,它说有冲突,但不存在缓解问题。它允许您提交其他文件。。。但是问题文件仍然没有提交。然后,您可以在单独的提交中提交这些文件,然后删除它们并再次提交,所有这些文件都已修复。愚蠢的疯狂修复,但每次都有效
如果您在识别冲突文件时遇到困难,我强烈建议您执行以下操作
首先使用以下命令创建一个干净的别名
git config--global alias.conflications“diff--name only--diff filter=U”
然后你就可以跑了
git冲突
轻松获取有问题的文件列表。在重命名文件并尝试重新基址后,我遇到了类似的问题。我得到了信息: “com.mycompany.filethat doesnotexist.java需要合并。您必须编辑所有合并冲突,然后使用git add将其标记为已解决” 我通过使用以下命令删除该文件解决了此问题:
git rm com.mycompany.fileThatDoesNotExist.java
文件上的冲突说明了什么
git diff
就在您的git合并开发之后
?请在评论中提及您投票否决的原因,以便我可以改进我的答案。我尝试了这个解决方案,它在我的环境中工作,并希望与大家分享。投票否决而不提及理由是“令人沮丧的”。