git 如果 origin/develop 不同步,流程功能完成不会推送

git flow feature finish doesn't push if origin/develop out of sync

我刚刚注意到如果我们有本地和 origin/develop 看起来像

local:          A---B
origin/develop: A---B

如果我再做 git flow feature start Z 并工作一段时间,我可能会得到:

local:          A---B
origin/develop: A---B---C---D

我现在 git flow feature finish Z 并且收到警告:

Branches 'develop' and 'origin/develop' have diverged.
And local branch 'develop' is ahead of 'origin/develop'

我现在有(没有推送):

local:          A---B---Z
origin/develop: A---B---C---D---E

我尝试做 git pull,然后出现一堆 git 合并到 develop 的更新,所以我最终得到:

local:          A---B---Z-----------Z'
                     \--C---D---E--/
origin/develop: A---B---C---D---E

如果我做 git push origin/develop 我会搞砸我们漂亮整洁的单一 develop 流,所以在谷歌搜索后我最终做了:

git pull --rebase --prune
git push origin develop

这让我恢复到:

local:          A---B---C---D---E---Z
origin/develop: A---B---C---D---E---Z

这样做我实际上发现以前的功能也因为同样的问题而失败了......我以为我们使用 git flow 来隐藏所有这些常见的小问题和陷阱。

那么,我是不是用错了git flow?在 feature finish 之前是否应该始终执行一些额外的命令以确保您不会失去同步?

我没用过git flow(但我们用的是git流程方法),基本的git命令就够了。

这可能无法直接回答您的问题,但我建议删除 git flow 扩展名。您不必学习两种产品:gitgit flow

和我一样,你可以在本地设置:

git config --global pull.rebase true
git config --global  rebase.autoStash true

这样,在 git flow finish 之后完成的 develop 上的任何拉动都会有效地自动变基 Z(尚未推送)。