为什么我的分支总是“过时”,即使有常客“拉”?

问题描述 投票:0回答:1

我有 3 个分支:“dev”、“test”和“main”。他们受到保护,我无法直接推动他们。 当我开发某些东西时,我必须创建一个新分支(例如:new-feature)。然后,推动它,并执行从“new-feature”到“dev”、从“dev”到“test”、从“test”到“main”的拉取请求。

通常,当我尝试从“开发”到“测试”进行 PR 时,我会得到“此分支与基础分支已过时”。 我怎样才能避免它?

我尝试在从“dev”创建新分支之前拉出我的 3 个分支,但这似乎还不够:“dev”的 PR 没问题,但从“dev”到“test”则不起作用(相同)从“dev”到“master”)因为这个“过时”的问题。

谢谢

git push branch pull
1个回答
0
投票

简短回答:不用担心。

如果您不断地将

test
合并到
main
中,除非您始终使用快进合并,否则
main
分支中总会有额外的合并提交,而
test
则不会。这必然会发生。有时这称为 rebase-and-squash,但在合并像您的情况这样的长期存在的侧分支时,我不推荐它。

我发现一个适合我的策略是,当我想更改分支 X 时,我在分支 X 的 HEAD 处启动我的功能分支(即

git checkout -b my-feature origin/branchx
- 然后是
add
commit
等) .

如果我的更改注定要针对两个分支 X 和分支 Y,我会从分支之间的“合并基础”开始(即两个分支共同的最新提交 -

git checkout -b my-feature $(git merge-base --octopus origin/branchx origin/branchy)
)。这只是而已,所以我不会在别人不属于的地方介绍他们的改变;假设 Bob 破坏了
test
分支,而我不想要他的提交 - 这种基于合并的策略使得我不会抓住 Bob 的提交。

© www.soinside.com 2019 - 2024. All rights reserved.