git : 为 git merge --squash -X theirs 禁用自动合并

git : disable auto-merge for a git merge --squash -X theirs

我的项目需要以下工作流程:

对于这种行为,我使用

git merge dev --squash -X theirs

在 master 分支上检索在 master 的工作目录中的 dev 分支中所做的所有更改,然后使用 [PROD] 消息创建一个提交并推送。

问题是,在我尝试 master 分支上的 merge dev --squash -X theirs 之后,我注意到一些文件被严重自动合并(一些完整的代码块被添加了两次..)这最终引发了无数我的 PHP 脚本中的错误。

据我所知,-X theirs 采用“他们的”(开发)版本,但仅在 无法自动合并时。问题来自自动合并(我看到所有有问题的文件都已自动合并)。

我怎样才能禁用自动合并,以便 master 分支中的所有文件都被 dev 的内容替换?

我想我找到了答案。 git merge 是指将一个文件版本的更改合并到另一个版本中。这不是替换工具。

-X theirs 只是通过选择他们的版本来自动解决冲突,但是 在某些非常特定的行 (不是整个文件) git 没有知道要做什么。这绝对不是像我想的那样用“他们的”版本替换文件的全部内容。

为了用“他们的”(开发)版本替换文件的内容,我做了:

git merge dev --squash  

Git 表示没有解决冲突。现在 替换为所有文件的版本,我做了 :

git checkout --theirs *

最后将所有冲突标记为已解决:

git add -u 

提交并推送,一切都很好:)