19

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

我希望为此创建一个没有以前历史的新并行分支(即有多个“初始提交”。这是否可以使用 Git 而不必创建第二个存储库?提交树看起来像这样:

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

o   old implementation

这样我就可以简单地使用git checkout old来访问代码。90 天后垃圾收集器不得对其进行清理,并且可以选择对其进行标记。

4

3 回答 3

26

git checkout对于这种用例有一个选项:--orphan.

来自 Git 手册:

--orphan <new_branch>

创建一个新的孤立分支,命名为<new_branch>,开始于<start_point>并切换到它。在这个新分支上进行的第一次提交将没有父母,它将成为与所有其他分支和提交完全断开的新历史的根。

此外,该男子明确表示:

如果你想开始一个断开的历史记录,记录一组完全不同的路径<start_point>,那么你应该在创建孤立分支后立即通过git rm -rf .从工作目录的顶层运行“”来清除索引和工作树。树。

于 2013-09-11T14:22:51.707 回答
8

除了使用该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如果您不需要它,您可以再次删除存储库()(但它不应该受到伤害)

于 2013-09-11T14:27:07.087 回答
3

您需要创建一个孤儿分支:

git checkout --orphan <branch>
于 2013-09-11T14:23:19.113 回答