我有 3 个分支:“dev”、“test”和“main”。他们受到保护,我无法直接推动他们。 当我开发某些东西时,我必须创建一个新分支(例如:new-feature)。然后,推动它,并执行从“new-feature”到“dev”、从“dev”到“test”、从“test”到“main”的拉取请求。
通常,当我尝试从“开发”到“测试”进行 PR 时,我会得到“此分支与基础分支已过时”。 我怎样才能避免它?
我尝试在从“dev”创建新分支之前拉出我的 3 个分支,但这似乎还不够:“dev”的 PR 没问题,但从“dev”到“test”则不起作用(相同)从“dev”到“master”)因为这个“过时”的问题。
谢谢
简短回答:不用担心。
如果您不断地将
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 的提交。