Git对多个分支上的单行进行更改,并保留所有更改
我的代码中有一行很长的代码,其中包含了一些东西的ID。下面是一个例子Git对多个分支上的单行进行更改,并保留所有更改,git,merge-conflict-resolution,git-merge-conflict,Git,Merge Conflict Resolution,Git Merge Conflict,我的代码中有一行很长的代码,其中包含了一些东西的ID。下面是一个例子 const IDs="0,1,2,3,4" 我想在多个分支上添加到此行。这里有一个例子 分支机构1: const IDs="0,1,2,3,4,87" 分支机构2: const IDs="0,1,2,3,4,95" 在分支1上,我在行中添加了87,在分支2上,我添加了95。一旦这些合并,就会出现合并冲突 解决这个问题的一个简单方法就是保留其中一个更改,然后手动添加来自另一个分支的更改。但在我的实际案例中,这一行要长得多,
const IDs="0,1,2,3,4"
我想在多个分支上添加到此行。这里有一个例子
分支机构1:
const IDs="0,1,2,3,4,87"
分支机构2:
const IDs="0,1,2,3,4,95"
在分支1上,我在行中添加了87
,在分支2上,我添加了95
。一旦这些合并,就会出现合并冲突
解决这个问题的一个简单方法就是保留其中一个更改,然后手动添加来自另一个分支的更改。但在我的实际案例中,这一行要长得多,添加了更多的ID,它们并没有全部附加到末尾。它们大多分散在中部
有没有一种方法可以解决冲突,这样就可以添加两个添加项,而不用我自己手动添加它们,这样看起来就像这样
const IDs="0,1,2,3,4,87,95"
您可以编写自己的合并驱动程序
当Git遇到可能导致合并冲突的情况时,它会运行一个合并驱动程序。Git的默认内置合并驱动程序查找冲突,将其声明为冲突,并将冲突标记保留在工作树中的文件副本中。这就是你一直在用手解决的问题
但是,如果您使用将源文件标记为具有合并驱动程序,Git将使用您定义的合并驱动程序而不是其内置驱动程序。Git在索引中已经有文件的所有三个副本:
- 合并基础副本,来自公共、共享提交李>
从--ours
提交/当前分支复制;及HEAD
从要合并的提交中复制——他们的
- 找出基本文件与
和我们的
副本之间的差异,以及他们的
- 合并这些差异,将结果写入
副本ours
git merge file
。它将执行与Git内置的低级驱动程序相同的操作,并返回相同的退出状态。然后,您可以检查该状态,如果它说存在合并冲突,您可以让您的程序尝试解决它们。如果您的程序成功,您的程序可以报告零退出状态
(编写好的合并驱动程序是不平凡的,但是对于您的特定情况,如果您使用git merge file
来完成大部分工作,那么它可能没有那么糟糕。)您可以编写自己的合并驱动程序
当Git遇到可能导致合并冲突的情况时,它会运行一个合并驱动程序。Git的默认内置合并驱动程序查找冲突,将其声明为冲突,并将冲突标记保留在工作树中的文件副本中。这就是你一直在用手解决的问题
但是,如果您使用将源文件标记为具有合并驱动程序,Git将使用您定义的合并驱动程序而不是其内置驱动程序。Git在索引中已经有文件的所有三个副本:
- 合并基础副本,来自公共、共享提交李>
从--ours
提交/当前分支复制;及HEAD
从要合并的提交中复制——他们的
- 找出基本文件与
和我们的
副本之间的差异,以及他们的
- 合并这些差异,将结果写入
副本ours
git merge file
。它将执行与Git内置的低级驱动程序相同的操作,并返回相同的退出状态。然后,您可以检查该状态,如果它说存在合并冲突,您可以让您的程序尝试解决它们。如果您的程序成功,您的程序可以报告零退出状态
(编写好的合并驱动程序是不平凡的,但是对于您的特定情况,如果您使用
git merge file
来完成大部分工作,那么它可能没有那么糟糕。)这是一个很好的答案。谢谢这是一个很好的答案。谢谢