gpt4 book ai didi

git - 当我使用 Git 时,我应该在 merge 之前 rebase 吗?

转载 作者:IT王子 更新时间:2023-10-29 01:16:54 25 4
gpt4 key购买 nike

我正在从事一个大型 Rails 项目,与我合作的团队正在使用 Github 来管理该项目。虽然许多更改是在本地进行的,然后直接推送到我们的开发分支,但当我们要进行非常大的更改时,我们会创建一个分支。当将该分支 merge 回开发时,我经常尝试在将我的功能分支 merge 到开发之前将开发 rebase 回我的功能分支(以防止覆盖其他人的工作)。我发现当我这样做时,我似乎遇到了两次相同的 merge 冲突。我在 rebase 时遇到了一整列冲突,然后在 merge 时再次遇到了相同的冲突列表。在将我的功能 merge 到开发之前,我应该将 develop rebase 到我的功能分支,还是应该将我的功能 merge 到开发中?

假设我的功能分支名为“new_feature”。我将它与“开发”分支 merge 的过程是这样的:

git checkout develop 

git pull (this is set up on our rig to always pull rebase)

git checkout new_feature

git rebase develop

(lots of merge conflicts ensue)

git checkout develop

git merge -no-ff new_feature

(same set of merge conflicts again)

就好像时间线从我的 rebase 改变导致我的新功能分支一直向后发展,然后与它自己的伪副本发生冲突。

最佳答案

好的,现在评论太长了。

解释手册(git help rebase)

   Assume the following history exists and the current branch is "new_feature":

A---B---C new_feature
/
D---E---F---G develop


From this point, the result of either of the following commands:

git rebase develop
git rebase develop new_feature

would be:

A'--B'--C' <new_feature
/
D---E---F---G <develop

现在,如果你有冲突,第一次运行 rebase 后的实际状态将是

              A'--B'--C'--[local state]
/ ^
D---E---F---G new_feature
^ develop

[local state] 是您尚未修复的冲突 merge 。解决 merge 冲突并将解决的文件添加到索引后,运行 git rebase --continue:现在您的状态将是

              A'--B'--C'--H <new_feature
/
D---E---F---G <develop

显然此时将 new_feature merge 回 develop 可以像这样快进:

              A'--B'--C'--H <new_feature  <develop
/
D---E---F---G

但如果不是,你会得到这个

              A'--B'--C'--H <new_feature
/ \
D---E---F---G---------------I <develop

现在,从时间轴的角度来看,无论您喜欢哪一个,都不清楚为什么其中一个会出现问题……除非您从未完成 rebase 并解决了与 H 的冲突,但我会认为 git 会对此提示。

关于git - 当我使用 Git 时,我应该在 merge 之前 rebase 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9117128/

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