今天在帮一个朋友解决git问题的时候,我不得不介绍一个 需要与主分支完全分离的分支。 这个分支的内容确实有一个不同的起源 已经在主分支上开发了,但它们将是 在稍后的时间合并到主分支。
我记得我读过约翰·威格利的《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
最后,我们回到主分支继续工作。
$ git checkout -f master
这似乎按计划进行了。但这显然不是那种 我向那些刚开始学习的人推荐的一些程序 委婉地说,使用git。是否有更简单的方法来创建 新的分支,与发生的一切完全无关 到目前为止在存储库中?