
在 master 分支中,创建多个起始 commit(它们都没有 parent)。
仓库地址为 git://github.com/ossxp-com/gitdemo-commit-tree.git ,示意图如下 ↓

这该如何实现?
这也许是个很简单的要求,但我真的想了很长时间,也没搞清楚到底怎么做,所以来寻求帮助。
问题已经解决,感谢 @Kobayashi !
可以通过下列命令重现:
Remove-Item '*' -Force '.git'| Remove-Item -Force -Recurse git init 'text' > "A.txt" git add -A;git commit -a -m 'A' git checkout --orphan 'new_branch' 'text' > "B.txt" git add -A;git commit -a -m 'B' git checkout master git merge --no-ff --allow-unrelated-histories 'new_branch' git log --all --decorate --oneline --graph PS>git log --decorate --oneline --graph * 3805411 (HEAD -> master) Merge branch 'new_branch' |\ | * b2af1fd (new_branch) B * 70e2a07 A 感谢 @clrss 提供了另一种方法!
使用 git subtree add 的确可以实现多个根 commit。
PS>git log --all --decorate --oneline --graph * 50f7c25 (HEAD -> master) Add 'new_pre/' from commit '47b72dbdebd593bde75a80df7ff28544b2982ff1' |\ | * 47b72db (new_branch) B * fd9bb52 A 这个命令好像用的不是太多,之前从来没见过。
它好像是将两个 commit 合并之后,然后将结果放到子文件夹中。
如果看工作树的具体细节,会发现合并之后的结果与给出的仓库有很大出入。
Git\TDS\temp ├──new_pre │ ├──A.txt │ └──B.txt └──A.txt 1 FinnBai 2021 年 8 月 23 日 一个分支只能有一个起始 commit,你的需求是不是可以换个思路解决。比如多个分支? |
2 JKeita 2021 年 8 月 23 日 一个分支怎么可能多个根节点。 |
3 AlphaTr 2021 年 8 月 23 日 git checkout --orphan 加个参数? |
4 AndyAO OP @baiyi #1 **已经有这样的仓库存在,图片和具体地址,问该如何实现。** 上述仓库已经多个起始 commit 吗,从图上可以很明显的看出来,而且已经测试过那 5 个节点,根本都没有 parent 。 |
6 Kobayashi 2021 年 8 月 23 日 你没理解分支,这明显是多个分支合并的结果。 1. 创建多个无共同父节点分支,又称孤儿分支。 git checkout --orphan branch-name 2. 合并分支 git merge --no-ff --allow-unrelated-histories branch-name |
9 Kobayashi 2021 年 8 月 23 日 > 这是在相同的分支内发生的事情,不涉及到其他的分支啊,所以孤儿分支没什么呢。 @AndyAO 没明白你在说什么。正常分支是要求有共同父节点的。这几个有多个起点,其他几个分支不可能是从主分支创建出来的,必然是多个孤儿分支合并结果。 |
10 clrss 2021 年 8 月 23 日 git subtree add |