gpt4 book ai didi

git pull --rebase 通过保持本地更改来解决冲突

转载 作者:行者123 更新时间:2023-12-03 20:24:41 26 4
gpt4 key购买 nike

我在本地分支上重新设置为 master。与此同时,有人在远程对这个分支进行了更改。我在做 git pull --rebase 。我不明白当涉及到 currentincoming 以及 ourstheirs 的命名时,git 如何解释这个命令。
我应该选择哪个来始终保留我的本地更改?另外,在我第一次与 master rebase 后,有几十个冲突。是否有一个命令可以让 git pull --rebase 只保留我所有的本地更改,而不必手动执行?我知道 ourstheirs ,但我不知道如何将这些关键字 merge 到 git pull --rebase 命令中。
这些东西令人困惑,因为所有这些关键字都在 merge 和 rebase 之间颠倒了,然后使用 rebase pull 以增加额外的困惑。

最佳答案

支持本地分支更改的命令是:

git pull --rebase -X theirs
直觉上,当您想说“我们的”时,您必须说“他们的”的原因是因为与 merge 相比,在 rebase 期间“我们的”和“他们的”的含义交换了。让我解释。
merge 与 rebase 中的我们和他们
当你进行 merge 时,你总是 merge 到当前分支;如果发生冲突,“我们的”表示您所在的分支,而“他们的”表示您要 merge 的分支。正如您所期望的那样。
rebase 是不同的。假设您将一个名为 local 的分支 rebase 到 master 上。
        master

o---o---o
\
A---B---C ‹ local
在 rebase 期间,Git 创建了一种“临时分支”来完成这项工作。它首先将 HEAD 移动到您要重新定位的分支的尖端,在本例中为 master :
        master

o---o---o ‹ HEAD
\
A---B---C ‹ local
然后,它一次从 local 中挑选一个提交:
        master

o---o---o---A'---B' ‹ HEAD
\
A---B---C ‹ local
现在,让我们想象一下提交 C 有冲突:
        master
⌄ X
o---o---o---A'---B'---C' ‹ HEAD
\
A---B---C ‹ local
在这种情况下,“ours”表示 Git 正在处理的临时分支,而“theirs”是从其挑选提交的分支,即 local
如果您想保留 local 分支中的更改,则必须选择“他们的”一侧。相反,如果您想保留 master 中的更改,您会选择“我们的”方面。
冲突解决后,Git 通过将 local 移动到 HEAD 所在的位置来完成 rebase 操作:
        master

o---o---o---A'---B'---C' ‹ HEAD, local
\
A---B---C
鉴于没有留下任何分支引用提交 C ,这些提交变成 unreachable 并且最终将被删除:
        master

o---o---o---A'---B'---C' ‹ HEAD, local

1 它实际上只是一个 detached head ,但出于本说明的目的,您可以将其视为一个临时分支,即使没有创建分支引用。

关于git pull --rebase 通过保持本地更改来解决冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63611460/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com