获取我的本地特性分支与远程主分支没有过时的信息



简介:我们是一个10人的团队,积极致力于一个项目。更新是非常频繁地发布的,并且在更改发布到我们的GitHub存储库之后,分支会立即与远程主分支过时,因此在更新之前不需要运行CI/CD和其他所有内容。

例如,我正在开发功能分支,将其推送到远程存储库,并打开一个新的拉取请求。但是我无法提前知道我的分支是不是按照master更新的。在每次推送之前,我需要手动更新本地主分支并进行rebase。

为了减少操作,我想设置一个git pre-push hook,自动检查我想要推送的当前分支是否过期

在GitHub页面上,它显示了这个消息:This branch is out-of-date with the base branch

有任何想法如何获得此信息并取消推送到远程吗?谢谢。

可能是指git push命令中的--dry-run选项。如果我理解正确的话。

如果你想推送到的上游/远程没有提交,而本地没有提交,则返回0。

你可以在钩子脚本中这样做:

git push --dry-run mirror master || { echo "can't push now, need to fetch & merge/rebase" ; exit 1 ; }
echo "proceed with the push"
git push mirror master

但是我无法提前知道我的分支是不是按照master更新的在每次推送之前,我需要手动更新本地主分支并进行rebase。

:

我需要手动更新本地主分支

你只需要一个git取回,为了更新你的远程跟踪分支origin/master。不需要更新master本身:你不工作的master无论如何。

第二:

做一个rebase。

在任何推送/拉取请求之前,这是一个很好的做法。
但是如果你当前的分支已经位于origin/master之上,你就不需要做这个操作了。

要检查(不重基),您可以简单地检查origin/master是否可以从当前分支访问HEAD:

git switch myBranch
git branch --contains origin/master

如果你自己的分支被列出,你不需要重新base,可以直接推送。

最新更新