合并第一位分支的提交



我有一个分支机构,来自master的最新提交。该分支上有两个提交。我想快速向前合并那些提交的第一个

我知道我可以做一个樱桃的挑选,但是如果我能帮助它,我真的不想分歧大师和分支。

当前状态:

Branch:       +--->B--->C
             /
Master: --->A

樱桃挑选选项:

Branch:       +--->B--->C
             /
Master: --->A--->B'

理想的选择:

Branch:            +--->C
                  /
Master: --->A--->B

这是可能的吗?

请注意,提交都已被推到遥控器;但是目前没有其他人可以访问此特定的存储库,因此push -f可以。

我似乎还记得在签到一个分支时可能会有某种方法可以合并到主人...如果是真的,我可以简单地检查提交B,然后以这种方式合并?

更具体地说,您可能想要:

git merge --ff-only <commit-specifier>

告诉git对当前分支进行快速前进的非现实 - 对指定的提交。这样的操作:

  1. 测试HEAD是否是<commit-specifier>的祖先:如果没有,则失败,如果是,请继续进行...
  2. 推进当前的分支,以便指向<commit-specifier>并将其读取到索引和工作树中(git read-tree,"两个树合并"案例,请注意,如果您没有承诺,则可能会失败,或者没有跟踪目标提交中的文件)。

现在,查找 n 提交的特定哈希在"在某些目标提交方向上的当前提交之前都可能很棘手。例如,例如:

...--o--o   <-- master
         
                C--D
               /    
            A--B      G--H   <-- branch
                    /
                 E--F

branch的提示提交是master的提示提交之前的八个提交 - 还是?我认为每个人都同意Amaster之前的一个提交,而B领先两个。但是CE以及DF呢?C领先三个,但E也是如此。DF都领先四个。但是Gmaster领先五:它似乎是 7 领先主人。同样,H又名branch似乎比master领先八个。

所以,如果我告诉您要提前三提示,您会选择CE提交吗?您会给我一个错误还是选择?为什么?

如果您将事物限制为线性链,我们可以列举" masterbranch之间的提交",不包括master,包括branch,with:

git rev-list --reverse master..branch

,然后 n -th列表中的commit是给 git merge --ff-only的提示。但是,如果在"这两个点之间"之间有分支机构链,那么整个问题就变得棘手了。

正如雷蒙德·陈(Raymond Chen)评论的那样,对的问题的解决方案是 git merge B

我会把问题打开一段时间,尽管如果有人对这个问题的答案更为一般,则标题为,即n提议,而不是1。

相关内容

  • 没有找到相关文章

最新更新