git - 如何使用 Git 防止自动 merge ?

标签 git

我正在尝试将本地分支 merge 到 master 分支中,而无需 Git 执行自动 merge 。我想“手工挑选”我想 merge 到 master 中的东西。

当我使用 Git 的 difftool 命令时,我能够比较并选择我想要添加到 master 分支中的内容。但是当我进行 merge 时,我会丢失之前选择的内容,因为 Git 会进行自动 merge 。我可以在 merge 之前将更改提交到 master,但这样做似乎不自然。

并且 Git 的 mergetool 仅在 merge 发生冲突时可用。但是如果 Git 执行自动 merge ,那么通常不会发生冲突,所以我无法运行 mergetool 命令。

更新:

我开始认为我试图完成的是错误的做法,或者根本不可能。也就是说, merge 一个主题分支,只让它 merge 我需要的差异。此外,还要在历史上反射(reflect)这一点。无论如何,我在尝试使用 Git 时提出的问题浮出水面。

最佳答案

您正试图绕过 Git 参与 merge 过程,并手动选择要 merge 的每个修改文件的每一行。这与 git cherry-pick 不同。 git merge --no-commit 等也无济于事。你需要做的:

$ git checkout master
$ git difftool -t kdiff3 local-branch HEAD

KDiff3窗口,左侧 (A) 是您的本地分支,右侧 (B) 是您的当前分支(大师)

选择 merge |从菜单中 merge 当前文件(或按具有相同标题的彩色菱形图标)。

然后您将看到每个文件的差异和冲突(如果有)。您将能够选择左侧或右侧(AB),或同时选择两者,和/或手动调整 merge 后的文件。

另一方面,有些事情告诉我您的工作流程存在一些更大的问题。

关于git - 如何使用 Git 防止自动 merge ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5235010/

相关文章:

svn - 如何创建一个分支为 "subproject"的 git clone?

git 只克隆一个子目录,在当前目录的根目录下

git - 文件在提交之间更改但将文件列表限制为较旧的提交

angularjs - 如果本地项目中存在 node_modules,则 Docker-compose 构建失败

git - Git 中的两个并行分支,如何在 "future"上工作,但将基本修复提交到 "master"

git - 如何查看我的 github SSH key ?

git stash 应用未知选项 : -encodedCommand error

git - Bot与bitbucket集成的问题

wordpress - 如何通过 github 将最新的稳定分支克隆到目录?

git - git 知道 merge 后哪个分支是哪个吗?