检查develop分支是否已合并到功能分支中?

Has*_*sen 3 git

我有一个脚本碰撞版本并使用凹凸进行提交并对其进行标记.我遇到的问题是确保开发从远程获取然后合并到功能分支以确保PR合并期间没有冲突.

如何检查功能和开发是否同步合并?

tor*_*rek 8

git branch命令将显示合并或未合并的分支.例如,如果您在分支上main并且分支side在某个时候合并,但另一个分支ahead尚未合并:

$ git branch --merged
* main
  side
$ git branch --no-merged
  ahead
$ 
Run Code Online (Sandbox Code Playgroud)

使用它来检查是可能的(但有些痛苦).但是,如果您只想测试一对特定的分支(或者实际上是任何特定的提交对),那么"is/is-not merged"的质量就是提交图表中的一个是否是另一个的祖先.

git merge-base命令具有其中它执行本试验中,两个特定提交(你可以在列出的任何形式指定模式gitrevisions文档):

$ if git merge-base --is-ancestor side main; then
>     echo side is merged into main
> fi
side is merged into main
$ 
Run Code Online (Sandbox Code Playgroud)

该测试git branch --merged使用(对于每个分支,比较它与当前分支)是一样的试验git merge-base --is-ancestor使用,即,SHA-1,第一承诺(这里side^{commit})是当前分支的尖端的祖先提交.(提交被认为是它自己的祖先,所以你总是得到你自己的当前分支git branch --merged.当然假设你在一个分支上 - 如果你处于"分离的HEAD"状态,那么所有命名的列表分支机构不包括您的独立HEAD.)

  • 您刚刚创建的新分支可能已经合并.如果您创建新分支*然后向其添加提交*将不再合并.(这是因为branch*names*在这里没有任何意义:测试是commit*X*是否是commit*Y*的祖先.分支名称只是识别某个特定提交的一种方式.在给定分支上具有更改分支名称以指向刚刚进行的新提交的副作用,同时增长提交图.) (2认同)