为特定文件(“我们的”、“我的”、“他们的”)选择Git合并策略 我是在一个代码> git拉-重新基础< /代码>的基础上重新编译的。我有几个文件有合并冲突。如何接受特定文件的“他们的”更改或“我的”更改 $ git status # Not currently on any branch. # You are currently rebasing. # (fix conflicts and then run "git rebase --continue") # (use "git rebase --skip" to skip this patch) # (use "git rebase --abort" to check out the original branch) # # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: CorrectlyMergedFile # # Unmerged paths: # (use "git reset HEAD <file>..." to unstage) # (use "git add <file>..." to mark resolution) # # both modified: FileWhereIWantToAcceptTheirChanges # both modified: FileWhereIWantToAcceptMyChanges $git状态 #目前不在任何分支上。 #您当前正在重新定基。 #(修复冲突,然后运行“git-rebase--continue”) #(使用“git-rebase--skip”跳过此修补程序) #(使用“git rebase--abort”签出原始分支) # #要提交的更改: #(使用“git重置磁头…”取消分级) # #修改:更正RGEDFILE # #未合并路径: #(使用“git重置磁头…”取消分级) #(使用“git add…”标记分辨率) # #两个都已修改:我要在其中接受其更改的文件 #都已修改:文件,我想在其中接受我的更改

为特定文件(“我们的”、“我的”、“他们的”)选择Git合并策略 我是在一个代码> git拉-重新基础< /代码>的基础上重新编译的。我有几个文件有合并冲突。如何接受特定文件的“他们的”更改或“我的”更改 $ git status # Not currently on any branch. # You are currently rebasing. # (fix conflicts and then run "git rebase --continue") # (use "git rebase --skip" to skip this patch) # (use "git rebase --abort" to check out the original branch) # # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: CorrectlyMergedFile # # Unmerged paths: # (use "git reset HEAD <file>..." to unstage) # (use "git add <file>..." to mark resolution) # # both modified: FileWhereIWantToAcceptTheirChanges # both modified: FileWhereIWantToAcceptMyChanges $git状态 #目前不在任何分支上。 #您当前正在重新定基。 #(修复冲突,然后运行“git-rebase--continue”) #(使用“git-rebase--skip”跳过此修补程序) #(使用“git rebase--abort”签出原始分支) # #要提交的更改: #(使用“git重置磁头…”取消分级) # #修改:更正RGEDFILE # #未合并路径: #(使用“git重置磁头…”取消分级) #(使用“git add…”标记分辨率) # #两个都已修改:我要在其中接受其更改的文件 #都已修改:文件,我想在其中接受我的更改,git,git-rebase,git-merge-conflict,Git,Git Rebase,Git Merge Conflict,通常我只是打开文件或合并工具,手动接受所有“他们的”或“我的”更改。然而,我怀疑我缺少了一个方便的git命令 另外,请注意,只有当我看到哪些文件发生冲突时,我才能为每个文件选择合并策略,可能冲突是什么。对于您得到的每个冲突文件,您可以指定 git checkout --ours -- <paths> # or git checkout --theirs -- <paths> git签出——我们的-- #或 git结帐--他们的-- 从 git checkout[-f|

通常我只是打开文件或合并工具,手动接受所有“他们的”或“我的”更改。然而,我怀疑我缺少了一个方便的git命令


另外,请注意,只有当我看到哪些文件发生冲突时,我才能为每个文件选择合并策略,可能冲突是什么。

对于您得到的每个冲突文件,您可以指定

git checkout --ours -- <paths>
# or
git checkout --theirs -- <paths>
git签出——我们的--
#或
git结帐--他们的--

git checkout[-f|--ours |--theres |-m |--conflict=][[--]…

--我们的

--他们的

从索引中检出路径时,请检出未合并路径的第2阶段(
我们的
)或第3阶段(
他们的

由于上一次合并失败,索引可能包含未合并的项。默认情况下,如果尝试从索引中签出这样的条目,签出操作将失败,并且不会签出任何内容。使用
-f
将忽略这些未合并的条目。可以使用
--ours
--theres
从索引中检出合并特定端的内容。使用
-m
,可以放弃对工作树文件所做的更改,以重新创建原始的冲突合并结果


对于获得的每个冲突文件,可以指定

git checkout --ours -- <paths>
# or
git checkout --theirs -- <paths>
git签出——我们的--
#或
git结帐--他们的--

git checkout[-f|--ours |--theres |-m |--conflict=][[--]…

--我们的

--他们的

从索引中检出路径时,请检出未合并路径的第2阶段(
我们的
)或第3阶段(
他们的

由于上一次合并失败,索引可能包含未合并的项。默认情况下,如果尝试从索引中签出这样的条目,签出操作将失败,并且不会签出任何内容。使用
-f
将忽略这些未合并的条目。可以使用
--ours
--theres
从索引中检出合并特定端的内容。使用
-m
,可以放弃对工作树文件所做的更改,以重新创建原始的冲突合并结果


请注意,
git checkout--ours |--theres
将完全覆盖文件,方法是选择
theres
ours
版本,这可能是您想要做的,也可能不是您想要做的(如果您有任何来自另一方的非冲突更改,它们将丢失)


相反,如果您希望对文件执行三方合并,并且只使用
--ours |--theres
解决冲突的块头,而将非冲突的块头从两侧保留在适当的位置,那么您可能需要求助于
git merge file
;请参阅中的详细信息。

注意,
git checkout--ours |--theres
将完全覆盖文件,方法是选择
theres
ours
版本,这可能是您想要做的,也可能不是您想要做的(如果您有任何来自另一端的非冲突更改,它们将丢失)


相反,如果您希望对文件执行三方合并,并且只使用
--ours |--theres
解决冲突的块头,而将非冲突的块头从两侧保留在适当的位置,那么您可能需要求助于
git merge file
;请参阅中的详细信息。

即使回答了这个问题,但提供了一个示例,说明在git rebase vs merge的情况下,“他们的”和“我们的”是什么意思。看

吉特再基地
他们的
实际上是重基情况下的当前分支。因此,下面的一组命令实际上是通过远程分支接受当前分支的更改

# see current branch
$ git branch
... 
* branch-a
# rebase preferring current branch changes during conflicts
$ git rebase -X theirs branch-b
Git合并
对于合并,
他们的
我们的
的含义是相反的。因此,为了在合并过程中获得相同的效果,也就是说,将当前分支更改(
ours
)保留在正在合并的远程分支上(
theres

#假设分支a是我们当前的版本

$git merge-X ours branch-b#即使这个问题得到了回答,也提供了一个例子,说明在git rebase vs merge的情况下,“他们的”和“我们的”是什么意思。看

吉特再基地
他们的
实际上是重基情况下的当前分支。因此,下面的一组命令实际上是通过远程分支接受当前分支的更改

# see current branch
$ git branch
... 
* branch-a
# rebase preferring current branch changes during conflicts
$ git rebase -X theirs branch-b
Git合并
对于合并,
他们的
我们的
的含义是相反的。因此,为了在合并过程中获得相同的效果,也就是说,将当前分支更改(
ours
)保留在正在合并的远程分支上(
theres

#假设分支a是我们当前的版本

$git merge-X我们的分支-b#quoting@user456814来自上面的评论:

git rebase-s recursive-X


git merge-s recursive-X