当 Git 决定没有冲突时,似乎其他人已经尝试并未能强制冲突。
这个 SO 问题“ Git 合并 - 手动合并 - 强制冲突具有整个旧文件和新文件版本”在评论中得出结论:
我最害怕的是那个答案:“这是不可能的,因为这是 git 的工作方式”。
并且“需要 GIT 工作流程建议”提到尝试:
*.xml merge=Unset
进入我的.gitattributes
档案。
或自定义合并驱动程序~/.gitconfig
试图导致自动合并失败
换句话说,这可能不是正确的方法。
如果您确定合并引入的所有修改不应该在这里,那么您可以尝试:
git clone yourRepo aCloneRepo
cd aCloneRepo
git merge --no-commit --no-ff origin/source_branch
# simply overwrite any change file by the ones in ..\yourRepo
git add .
git commit -m "merge"
请注意,git merge
即使您git status
提到没有要提交的内容,最后的 " " 也将起作用(因为您恢复了所有修改文件的内容)。
它将在新的提交中记录合并。
这会给你:
C:\Users\VonC\prog\git\tests\mergekeep\r4>git lg
* a6a1588 - (HEAD, master) merge (2 minutes ago) <VonC>
|\
| * 1bcd75d - (origin/b) addition (2 hours ago) <VonC>
|/
* 9d2e8fb - (origin/master, origin/HEAD) first file (2 hours ago) <VonC>
但是本地文件不变。
如果您再次尝试合并您的分支,您将获得:
C:\Users\VonC\prog\git\tests\mergekeep\r4>git merge origin/b
Already up-to-date.
但是,这种解决方法很麻烦,涉及从一个工作树到另一个工作树的克隆和一些手动复制或 rsynch。
我尝试使用各种 git reset 命令或管道命令,如git update-index,但没有太大成功。