这是避免自动合并的有效 git 工作流程吗?

Is this a valid git workflow to avoid auto-merge?

git merge other_branch -s ours --no-commit --no-ff
git difftool other_branch
*manually merge all relevant files*
git add .
git commit -m "merged with other_branch"

对于我要绝对避免任何自动合并并手动执行所有操作的合并来说,这是可接受的工作流程吗?

此合并是否会在存储库的历史记录中正确注册为合并?

您完全可以通过在工作目录的根目录中放置并提交一个 .gitattributes 文件来避免任何自动合并,其中包含以下内容:

* -merge

这将使 "local" 版本在合并过程中保持不变,但它会在双方都更改文件时将文件标记为冲突。然后你将不得不自己解决每一个冲突 - 不用猜测git。

参见 gitattributes Documentation 部分 "Performing a three-way-merge"。

然后您可以像往常一样使用您最喜欢的合并工具,但请记住,一些合并工具会自行解决 "primitive" 冲突。那么你只是将你的问题更进一步 - git 将不再解决原始冲突,但 mergetool 可以。在您的 mergetool 中寻找一个选项来避免这种情况。例如,如果您使用的是 KDiff3,则可以转到选项 "Integration" 选项卡并将“--auto”添加到 "Command line options to ignore" 选项。