难题:如何在 master 分支中创建多个起始 commit?

2021-08-23 10:59:21 +08:00
 AndyAO

在 master 分支中,创建多个起始 commit(它们都没有 parent)。

仓库地址为 git://github.com/ossxp-com/gitdemo-commit-tree.git ,示意图如下 ↓

这该如何实现?

这也许是个很简单的要求,但我真的想了很长时间,也没搞清楚到底怎么做,所以来寻求帮助。


  1. 直接 commit,会将当前 commit 作为 parent
  2. 查阅 commit 和 checkout 相关文档,没有发现自己想要的选项,也许是我忽略了什么
1404 次点击
所在节点    问与答
10 条回复
baiyi
2021-08-23 11:06:52 +08:00
一个分支只能有一个起始 commit,你的需求是不是可以换个思路解决。比如多个分支?
JKeita
2021-08-23 11:08:57 +08:00
一个分支怎么可能多个根节点。
AlphaTr
2021-08-23 11:08:57 +08:00
git checkout --orphan 加个参数?
AndyAO
2021-08-23 11:09:48 +08:00
@baiyi #1

**已经有这样的仓库存在,图片和具体地址,问该如何实现。**

上述仓库已经多个起始 commit 吗,从图上可以很明显的看出来,而且已经测试过那 5 个节点,根本都没有 parent 。
AndyAO
2021-08-23 11:10:27 +08:00
@JKeita #2

已经给出了仓库和示意图,如果感觉有问题,可以 clone 后检查。
Kobayashi
2021-08-23 11:10:56 +08:00
你没理解分支,这明显是多个分支合并的结果。

1. 创建多个无共同父节点分支,又称孤儿分支。 git checkout --orphan branch-name
2. 合并分支 git merge --no-ff --allow-unrelated-histories branch-name
baiyi
2021-08-23 11:12:59 +08:00
@AndyAO #4 你是指那几个 tag 吗?
AndyAO
2021-08-23 11:13:01 +08:00
@AlphaTr #3

这是在相同的分支内发生的事情,不涉及到其他的分支啊,所以孤儿分支没什么呢。
Kobayashi
2021-08-23 11:16:09 +08:00
> 这是在相同的分支内发生的事情,不涉及到其他的分支啊,所以孤儿分支没什么呢。
@AndyAO 没明白你在说什么。正常分支是要求有共同父节点的。这几个有多个起点,其他几个分支不可能是从主分支创建出来的,必然是多个孤儿分支合并结果。
clrss
2021-08-23 11:18:56 +08:00
git subtree add

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/797420

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX