gpt4 book ai didi

git - 如何经常从主分支重新建立功能分支,而不强制推送到功能分支

转载 作者:行者123 更新时间:2023-12-02 01:38:38 25 4
gpt4 key购买 nike

我们有一个 master 分支和 feature 分支,我们在其中进行工作。
我的组织遵循 rebase 工作流程。

我们从 master 分支分支出来:

(master)git checkout -b feature

经过几次提交后,当天需要注销时,我们只需推送:

(feature)git push

一旦功能准备就绪,我们就将 feature 分支从 master 分支重新建立基础:

(feature)git checkout master
(master)git pull
(master)git checkout feature
(feature)git rebase master

解决所有 merge 冲突,以防星期一。
然后我们将本地分支推送到origin,以便管理器可以使用gitlab接口(interface)将其与master merge 。
在这里,我们被迫将 feature 强制推送到远程:

(feature)git push -f

这几乎是我整个团队所做的事情,每个人通常在不同的分支工作,所以这不是问题。但我还是想避免强制。

更安全的替代方案:

(feature)git push --force-with-lease

如果推送要覆盖其他人的提交,则使用 force-with-lease 会失败。

但是有人知道我们可以完全避免任何类型的武力的另一种方法吗?

可能是 rebase 显示为额外提交的情况?

最佳答案

根据定义, rebase 意味着您正在重写分支的历史 - 这需要强制推送。

如果您想使用 master/main 中的更改来更新功能分支,而不需要事后强制推送,则需要使用 merge (这不是 rebase)。

您的两个选择是传统的 merge 提交或压缩 merge 。传统的 merge 提交就像这样完成:

git checkout feature
git merge master --no-ff

这都会使用 master 的更改来更新 feature,并且会使 master 成为 feature< 的父级之一.

提交图如下所示:

git merge master --no-ff

您所描述的方式,“ rebase 显示为额外提交的东西?”,可以使用“挤压 merge ”来完成:

git checkout feature
git merge --squash master
git commit

这会将 master 的所有更改压缩为对 feature 的单个提交,从而使用 master 的更改来更新 feature。它不会更改 feature 的父项。

这个提交图看起来像这样:

git merge --squash

关于git - 如何经常从主分支重新建立功能分支,而不强制推送到功能分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71969140/

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