【问题标题】:How to list all unmerged changes in Git?如何列出 Git 中所有未合并的更改?
【发布时间】:2011-04-05 18:28:41
【问题描述】:

为各种主题创建一个分支,并且在我不再需要它们时不定期删除它们,我现在已经完成了大约 50 个分支。

我尝试删除分支,但其中一些有未合并的更改。

我想要的是能够准确查看我的 repo 的任何分支中存在哪些不在 master 中的更改。有没有办法做到这一点?

【问题讨论】:

    标签: git branch


    【解决方案1】:

    对于 PowerShell 人来说,上面所说的内容的一点组合。如果需要,请将 master 替换为 main。通过粘贴到您的 shell 中进行测试。

    $notMergedList = (git branch --no-merged master) -replace " ", ""
    ForEach($branchItem in $notMergedList) {
      write-host "~~> branch: $branchItem" -Foregroundcolor DarkCyan
      git cherry -v master $branchItem }
    

    【讨论】:

      【解决方案2】:

      这个问题已经很好回答了,但我认为还有一个答案值得记录:

      列出尚未与 master 合并的任何分支上的所有提交:

      git log --all --not master
      

      或者,等效地:

      git log --all ^master
      

      --all 选择所有分支,因此您不必列出它们,然后 --not master^master 从选择中删除 master。

      【讨论】:

      • + 一些格式以获得更优雅的输出git log --all --not master --graph --pretty=format:"%C(auto)%h%d%Creset %C(cyan)(%ci)%Creset %C(green)%cn <%ce>%Creset %s" --name-status --date=short
      【解决方案3】:

      当我试图记住...的语法时遇到了这个问题

      git log <branch> --not master --stat
      

      这将显示对 尚未合并到 master 的提交。 --stat 将包括随着提交而更改的文件。您还可以通过将 master 替换为不同的分支名称来使用它来比较任意两个分支。

      【讨论】:

        【解决方案4】:

        列出未合并到 master 的提交的分支:

        git branch --no-merged master
        

        列出相关的提交:

        git cherry -v master <branch>
        

        【讨论】:

        • "git branch --no-merged master" 不显示远程分支 - 也可以看到这些线索?
        • 添加-a 标志以包含远程分支。
        • 如果它给你错误,尝试将master替换为origin作为上游。
        • 请注意,通过 squash & merge 合并的分支仍然会显示差异,即使没有差异。
        • 添加-a参数将显示本地和远程分支,-r将仅显示远程分支。
        【解决方案5】:

        使用gitk 可以很容易地了解您的分支机构。

        【讨论】:

        • 如果您有 >20 个分支机构,则不会
        猜你喜欢
        • 2014-07-07
        • 1970-01-01
        • 2013-09-26
        • 2011-01-20
        • 2015-10-05
        • 2016-02-05
        • 2017-01-17
        • 1970-01-01
        • 2022-08-14
        相关资源
        最近更新 更多