Git:两个初始提交

21

我有一个项目最近开始使用版本控制。
有一份完全不同的代码的早期尝试,我想把它添加到版本控制以备后人,但它既不是当前master分支的初始提交的祖先也不是其后代。

我希望为此创建一个没有历史记录的新并行分支(即具有多个“初始提交”)。这是否可能在Git中实现而不必创建第二个存储库?提交树将类似于以下内容:

o---o---o   master
     \
      o---o   branch

o   old implementation

我希望可以通过使用 git checkout old 命令来获取代码。 代码不得在90天后被垃圾收集器清理,并且可以选择附加标签。

3个回答

29

git checkout有一个选项可以完全满足这种情况:--orphan

来自Git手册:

--orphan <new_branch>

创建一个名为<new_branch>的新孤立分支,从<start_point>开始并切换到该分支。 在此新分支上进行的第一个提交将没有父级,并且它将是一个与所有其他分支和提交完全断开连接的新历史记录的根。

此外,手册明确说明:

如果您想要启动一个记录一组路径的已断开历史记录,与<start_point>完全不同,则应该在创建孤立分支后立即清除索引和工作树,方法是从工作树的顶层运行“git rm -rf .”。


谢谢您。正如您从我的问题中所了解的那样,我在考虑创建一个“并行分支”,因此一直在阅读所有 git-branch 帮助文档,而不是 git checkout - Nicholas Shanks
1
嗯,git 并不是以直观和一致的界面而闻名的 ;) - Marcin Łoś

9

除了使用checkout --orphan方法外,您还可以在另一个代码库中创建一个单独的存储库,进行初始提交,然后将其推送到另一个存储库(或从另一个存储库拉取此存储库)。

cd old-code
git init
git add .
git commit -m 'Initial commit of historical codebase'
git push ../path/to/current/code/repository master:historical

接下来,如果您不需要该存储库(但这不应该有影响),则可以删除存储库 (rm -rf old-code/.git)。


4
你需要创建一个孤立分支:
git checkout --orphan <branch>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接