【问题标题】:Get information that my local feature branch is not out-of-date with the remote master branch获取我的本地功能分支与远程主分支没有过期的信息
【发布时间】:2021-01-30 23:28:19
【问题描述】:

简介:我们是一个由 10 人组成的团队,积极致力于一个项目。更新经常发布,并且在将更改发布到我们的 GitHub 存储库后,该分支立即与远程 master 分支过时,无需在其上运行 CI/CD 和其他所有内容得到更新。

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

为了减少操作,我想设置一个git pre-push hook,它会自动检查我要推送的当前分支是否相对于主分支过时 - 如果是,请取消推送.

在 GitHub 页面上显示此消息:This branch is out-of-date with the base branch

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

【问题讨论】:

标签: git githooks


【解决方案1】:

您可能指的是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

【讨论】:

    【解决方案2】:

    但是我无法提前知道我的分支是否根据master更新。在每次推送之前,我需要手动更新本地 master 分支并做一个 rebase。

    第一:

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

    你只需要一个 git fetch 来更新你的远程跟踪分支origin/master。无需更新master 本身:无论如何,你不用在master 上工作。

    第二:

    然后做一个变基。

    在任何推/拉请求之前这是一个很好的做法。
    但是,如果您当前的分支已经位于 origin/master 之上,则您不必进行 rebase。

    并且要检查(不进行变基),您可以简单地检查 origin/master 是否为accessible from your current branch HEAD

    git switch myBranch
    git branch --contains origin/master
    

    如果列出了自己的分支,就不用rebase,直接push即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-19
      • 1970-01-01
      • 2016-02-18
      • 2014-06-09
      • 2023-01-07
      • 2013-04-30
      • 1970-01-01
      相关资源
      最近更新 更多