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
扩展名。您不必学习两种产品:git
和 git flow
。
和我一样,你可以在本地设置:
git config --global pull.rebase true
git config --global rebase.autoStash true
这样,在 git flow finish
之后完成的 develop
上的任何拉动都会有效地自动变基 Z
(尚未推送)。
我刚刚注意到如果我们有本地和 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
扩展名。您不必学习两种产品:git
和 git flow
。
和我一样
git config --global pull.rebase true
git config --global rebase.autoStash true
这样,在 git flow finish
之后完成的 develop
上的任何拉动都会有效地自动变基 Z
(尚未推送)。