将分支 Y 合并到 X 后,创建了三个版本的文件:fetch(X)、merge(X) 和 X
After merging branch Y into X, three versions of the file created: fetch(X), merge(X) and X
我正在尝试将 master
分支合并到 original
分支中。它们是不同的分支。
我只是运行
git checkout original
git merge master
正如我所料,这导致了很多冲突。
我打开了一个包含冲突的文件,当我 运行 git diff
这个文件(使用 vim-fugitive
)时,出现了三个分裂;一个叫 fetch(original)
,一个叫 original
,第三个叫 merge(original)
。
我不明白为什么 git diff
有三个版本,或者它们到底是什么。我在 git 个分支或日志中找不到它们。我应该如何使用它们来解决冲突?
一共有三个版本,因为你做的是三向合并。它们是基础版本、本地版本和远程版本。标准 git 术语是 base、ours 和 theirs;您还可以通过 :1:
filaname、:2:
filename 和 :3:
[=22= 获取它们]文件名 blob 引用。
其实有四个:还有合并结果所在的工作树文件。 diff 操作会显示合并结果和合并的两侧,本地(第 2 阶段)和远程(第 3 阶段)。
您使用 3 路合并算法的目标是将 base 和我们之间的变化与 base 和他们之间的变化结合起来。 git mergetool
命令可以帮助您。为此,我建议使用 kdiff3(即安装它,配置 git 以使用它,然后 git mergetool
将根据需要启动它)。
我正在尝试将 master
分支合并到 original
分支中。它们是不同的分支。
我只是运行
git checkout original
git merge master
正如我所料,这导致了很多冲突。
我打开了一个包含冲突的文件,当我 运行 git diff
这个文件(使用 vim-fugitive
)时,出现了三个分裂;一个叫 fetch(original)
,一个叫 original
,第三个叫 merge(original)
。
我不明白为什么 git diff
有三个版本,或者它们到底是什么。我在 git 个分支或日志中找不到它们。我应该如何使用它们来解决冲突?
一共有三个版本,因为你做的是三向合并。它们是基础版本、本地版本和远程版本。标准 git 术语是 base、ours 和 theirs;您还可以通过 :1:
filaname、:2:
filename 和 :3:
[=22= 获取它们]文件名 blob 引用。
其实有四个:还有合并结果所在的工作树文件。 diff 操作会显示合并结果和合并的两侧,本地(第 2 阶段)和远程(第 3 阶段)。
您使用 3 路合并算法的目标是将 base 和我们之间的变化与 base 和他们之间的变化结合起来。 git mergetool
命令可以帮助您。为此,我建议使用 kdiff3(即安装它,配置 git 以使用它,然后 git mergetool
将根据需要启动它)。