今天在帮助有git问题的朋友时,我不得不介绍一个需要与该master
分支完全分开的分支。该分支的内容确实与该分支上开发的内容有不同的来源master
,但是master
稍后将合并到分支中。
我从头到尾地阅读了约翰·威格利的《Git》,从中回忆起分支实际上是遵循某种约定的提交的标签,以及如何将提交与文件树以及父提交(或可选地)绑定在一起。我们使用git的管道创建对现有存储库的无父母提交:
所以我们摆脱了索引中的所有文件...
$ git rm -rf .
...从压缩包中提取目录和文件,并将它们添加到索引中...
$ git add .
...并创建了一个树对象...
$ git write-tree
(git-write-tree
告诉我们所创建的树对象的sha1sum。)
然后,我们提交了树,但未指定父提交...
$ echo "Imported project foo" | git commit-tree $TREE
(git-commit-tree
告诉我们创建的提交对象的sha1sum。)
...并创建一个指向我们新创建的提交的新分支。
$ git update-ref refs/heads/other-branch $COMMIT
最后,我们回到master
分支机构继续在那里工作。
$ git checkout -f master
这似乎按计划进行。但这显然不是我建议刚开始使用git的人喜欢的那种过程。有没有更简单的方法来创建一个新分支,该分支与到目前为止存储库中发生的一切完全无关?