【问题标题】:Git: How to understand the 'git branch -a --merged master' listing?Git:如何理解 'git branch -a --merged master' 列表?
【发布时间】:2019-10-09 16:04:18
【问题描述】:

在 master 分支上我执行了以下命令:

git fetch
git branch -a --merged master

我得到了以下列表:

$ git branch -a --merged master
  branch1
  branch2
* master
  remotes/origin/branch1
  remotes/origin/branch4
  remotes/origin/branch3

我可以从这个清单中理解 branch1 已合并并推送到远程 master 分支吗?

我强调我感兴趣的要点:它是否也被推送到了 master 分支?

【问题讨论】:

    标签: git git-branch


    【解决方案1】:

    作为上下文和提醒:

    • Git 中的提交是一个链表,每个提交都包含其父级的哈希
    • 分支是特定提交的标签(实际上,分支是一个文件,其名称为分支的名称,内容为它指向的提交的哈希

    命令git branch -a --merged master 为您提供所有分支(本地和远程,来自-a 选项,--all),可从(“合并”)master(来自--merged master 选项)访问.这意味着所有指向提交的分支都是 master 的祖先(父母/祖父母/...)。

    --merged 一词有点误导,因为它并不一定意味着分支已在 master 中合并(通过合并提交等)。

    编辑: 根据您在 cmets 中的问题:

    我想知道我的本地分支是否已经合并到远程 master 并推送到远程存储库。

    您的分支是否合并到远程 master:

    git branch --merged origin/master # Here do your branches appear?
    

    你的分支是否被推送到远程仓库:

    git branch -r # Here do your branches appear?
    git branch -v # This will show your for each branch if they are ahead, behind or both. This works only if their upstream is set.
    

    欲了解更多信息:man git-branch

    【讨论】:

    • 我仍然不确定我是否理解这些分支 1,3 和 4 是否被“推送”到远程主机中。也许如果我能更好地理解推送和合并之间的区别......
    • 这是两个非常不同的东西。您将一个分支 A 合并到另一个分支 (B) 中,以便 B 包含 A 的更改。您将分支推送到远程存储库,以便克隆(d)项目的其他开发人员可以使用它。一个并不意味着另一个,它们完全不相关。
    • 感谢您的宝贵时间。再说一遍,我使用的命令显示“合并”,对吗?那么,什么显示“推动”?将分支推送到远程主机是否必然意味着也被推送到远程存储库?我的理解是确实如此。我说的对吗?
    • 您到底想看什么?分支推到远程?如果是这样,git branch -a 会显示项目的本地和远程分支。 git branch -r 仅显示远程分支。
    • 我想知道我的本地分支是否已经合并到远程 master 并推送到远程存储库。
    猜你喜欢
    • 2013-02-13
    • 1970-01-01
    • 2013-05-04
    • 2019-12-25
    • 2020-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    相关资源
    最近更新 更多