【问题标题】:Does git know which branch is which after a merge?git 是否知道合并后哪个分支是哪个分支?
【发布时间】:2011-02-22 08:56:09
【问题描述】:

对不起,如果这是一个只有是/否答案的愚蠢问题,但如果我理解正确,在 git 中,分支只是指向提交的指针。这不是说一旦你合并了两个分支,git 就不知道哪一个指向哪一组提交了吗?

之前

A---B---C---D---E    <- X
 \                
  1----2----3----4   <- Y

之后

A---B---C---D---E--M  <-X & Y
 \                /
  1----2----3----4

【问题讨论】:

  • 单次合并后,只有一个分支会指向 M。可以安排您说明的拓扑,但会涉及另一个合并、重置或 git branch --force 等。但是“哪一个指向哪一组提交”并不是 Git 记录的内容。我读过 Mercurial 在提交中记录分支名称,但 Git 不这样做(除非它在合并提交的提交消息中记录合并分支的名称)。要记录提交的“名称”,您可以使用额外的标签、分支或 git 注释(在 Git >= 1.6.6 中)。

标签: git merge branch


【解决方案1】:

合并分支实际上并不合并另一个分支的引用;它将另一个分支的内容合并到当前分支中。

【讨论】:

    【解决方案2】:

    如果我没记错的话,你将一个分支合并到另一个分支中,比如将 feature1 合并到 master,所以 master 现在指向合并提交,但 feature1 仍然指向它之前指向的位置。

    Jefromi 编辑:这是正确的。图片应如下所示:

    git checkout branch X
    
        A---B---C---D---E   branchX (HEAD)
         \                
          1----2----3----4   branchY
    
    git merge branchY
    
        A---B---C---D---E--M  branchX (HEAD)
         \                /
          1----2----3----4  branchY
    

    【讨论】:

    • 是的 - 你将一个分支合并到另一个分支。因此,当您发出合并命令时,您所在的任何分支都将是合并后的当前分支。
    • @Jefromi 好的,那么如果我按照此处的建议 (stackoverflow.com/questions/804115/git-rebase-vs-git-merge/…) 进行变基然后合并会发生什么?
    • @Benjol 如果您对它的内部工作感兴趣,可以查看book.git-scm.com/index.html 的 Git 社区书籍,但简而言之,变基和合并都不会改变任何分支的位置,除了当前分支。无论 git 在做什么,它都不会删除或更改任何现有的提交(除非您运行 git gc 等内容)。它所做的只是创建新的提交(甚至用于变基),因此无需更改其他分支。
    猜你喜欢
    • 2013-03-05
    • 2017-06-21
    • 2015-11-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    相关资源
    最近更新 更多