ChatGPT解决这个技术问题 Extra ChatGPT

查找未合并的 Git 分支?

我有一个包含许多分支的 Git 存储库,其中一些已经合并,有些没有。由于分支的数量很大,如何确定哪些分支尚未合并?我想避免必须进行“章鱼”合并和重新合并已经合并的分支。

首先,我在嘲笑“章鱼合并”这个词。但如果您像我一样不知道:这是合并策略的正式名称 :-) 请参阅 git-scm.com/docs/git-mergeatlassian.com/de/git/tutorials/using-branches/merge-strategy

A
Amber

尝试这个:

git branch --merged master

它执行它在 tin 上所说的(列出已合并到 master 中的分支)。您还可以使用以下方法提取逆:

git branch --no-merged master

如果您不指定 master,例如..

git branch --merged

然后它将显示已合并到当前 HEAD 中的分支(因此,如果您在 master 上,则相当于第一个命令;如果您在 foo 上,则相当于 git branch --merged foo) .

您还可以通过指定 -r 标志和要检查的 ref 来比较上游分支,可以是本地的或远程的:

git branch -r --no-merged origin/master

如果您将 foo 合并到 master,它将出现在 git branch --merged master 列表中。但是,如果您再次提交 foo 会发生什么?它是否不再出现在该列表中,或者即使它有新的提交,它也在某一时刻合并到 master 中?
@CraigOtis 它将不再出现在列表中。 --merged 仅列出完全 合并到给定分支中的分支。
想象一下……一个易于理解和使用的 git 答案!
有没有办法在不检查分支的情况下获取列表?像指向服务器然后获取列表?
正如我所发现的,git branch --no-merged master 仅显示我的本地分支机构。它不显示任何未在我的计算机上签出并由其他人创建的分支。
o
observer

您还可以使用 -r 参数显示未合并到 master 的远程分支:

git branch -r --merged master

git branch -r --no-merged

                         

-a 同时查看远程和本地
最后一个应该是 git branch -r --no-merged master 吗?
A
Adam Dymitruk

如果一个分支已经合并,再次合并它不会做任何事情。所以你不必担心“重新合并”已经合并的分支。

要回答您的问题,您可以简单地发出

 git branch --merged

查看合并的分支或

 git branch --no-merged

查看未合并的分支。您当前的分支是隐含的,但您可以根据需要指定其他分支。

 git branch --no-merged integration

将显示尚未合并到 integration 分支的分支。


m
moldcraft

以下脚本将找到当前分支之前的所有 origin/* 个分支

#!/bin/bash

CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)

echo -e "Current branch: \e[94m$CURRENT_BRANCH\e[0m"
echo ''

git branch -a | grep remotes/origin/ | while read LINE
do
    CMD="git diff --shortstat remotes/origin/${CURRENT_BRANCH}...${LINE}"

    if $CMD | grep ' file' > /dev/null; then
        echo -e "\e[93m$LINE\e[0m" | sed 's/remotes\/origin\///'
        $CMD
        echo ''
    fi
done

The up-to-date version of the script


链接死了……