如何在Git中手动合并所有文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Git中手动合并所有文件?相关的知识,希望对你有一定的参考价值。

我想手动合并所有文件与meld或任何其他diff工具,我怎么能用Git做到这一点? 当我运行git mergetool时,它说no files need merging。所以我想我只有在遇到冲突时才能这样做。

答案

有更简单的方法:

git merge --no-commit merge_branch

正如男人所说:

使用--no-commit执行合并但假装合并失败并且不自动提交,以便让用户有机会在提交之前检查并进一步调整合并结果。

另一答案

我有一个场景:

git merge --no-commit merge_branch 

刚刚造成快进。

如果发生这种情况,您可以使

git merge --no-commit --no-ff merge_branch

然后你就可以查看你的更改了

另一答案

类似的问题是How to prevent an automerge using git?

分形空间有一个我觉得有用的答案:

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

这个想法是使用difftools而不是自动合并工具来手动选择你需要的东西并创建新文件。

另一答案

请注意,如果您坚持手动合并(可能是某类文件),您仍然可以定义合并驱动程序。 你在“Git - how to force merge conflict and manual merge on selected file”中有一个具体的例子。

这样,您的合并驱动程序脚本可以调用您想要的任何合并工具。

另一答案

对于任何来到这里并且现在想知道使用git difftool的@ True的答案和使用git merge的其他答案之间的区别的人,请参阅Git mergetool vs difftool

简而言之,如果您将git配置为使用现代diff.tool(如kdiff3,meld或vimdiff),您将能够使用diff工具本身手动合并不同的文件,并且命令行可以很简单:

git difftool other_branch

...这将允许您在当前分支和other_branch之间进行双向手动合并(在man git-config中描述为$ LOCAL和$ REMOTE)。

其他答案讨论的“正确”方式是将git配置为使用例如git。 kdiff3或vimdiff作为你的merge.tool,并使用:

git merge --no-commit --no-ff other_branch
git mergetool

...此命令可以在$ BASE,$ LOCAL和$ REMOTE之间进行N路手动合并,进入$ MERGED。有关如何配置git的一个示例,请参阅https://stackoverflow.com/a/2235841/1264797。如果您使用git已经知道的工具之一,那么您根本不需要配置mergetool.*.cmd条目。 (Meld只能显示三个窗格,所以如果你使用默认设置的meld,你将看不到$ BASE。)

有人可能会跳进来纠正我,但除了N路合并能力之外,这两种方法似乎产生了相同的结果。 difftoolmergetool都没有在新提交中添加other_branch作为父级,因此在这两种情况下,合并在例如gitk并且必须在提交消息中进行描述(并在后面注意到)。

另一答案

我选择了我们的策略(它也存在于TortoiseGit中作为选择),在做了手动差异之后,你手动进行了所需的更改。

来自:https://git-scm.com/docs/merge-strategies

合并机制(git merge和git pull命令)允许使用-s选项选择后端“合并策略”。一些策略也可以采用自己的选项,可以通过给git merge和/或git pull提供-X参数来传递。

我们的

这会解析任意数量的头,但合并的结果树始终是当前分支头的树,实际上忽略了所有其他分支的所有更改。它旨在用于取代侧枝的旧发展历史。请注意,这与“递归”合并策略的-Xours选项不同。

Bitbucket后来看到的对我来说是一个谜,它认为提交为合并但未能实际合并分支(不解决拉动请求) - 可能Bitbucket大师可以帮助解决这个问题,我甚至不能给你任何日志/错误消息,因为我没有那个可见性 - git / TortoiseGit根本没有抱怨。

以上是关于如何在Git中手动合并所有文件?的主要内容,如果未能解决你的问题,请参考以下文章

Git如何合并分支代码

idea解决代码冲突

IntelliJ Idea with Git:当自动合并崩溃时,如何继续手动合并

idea如何在git上将分支代码合并到主干

git 如何去解决冲突

如何解决Git中的合并冲突