在今天帮助一个有git问题的朋友时,我不得不介绍一个 分支,它需要与master
分支完全分开。 这个分支的内容确实与0123xx分支上开发的 有不同的起源,但它们将在以后合并到master
分支中,并将被合并为 。在git中,是否有一种将不相关的分支引入到存储库的简单方法?
我从阅读想起约翰Wiegley的Git from the bottom up如何 分支机构基本上是一个标签提交遵循一定的 惯例以及如何提交绑定到文件的树和可选 父提交。我们去创造一个无父无母使用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的人 的那种程序 。 有没有更简单的方法来创建一个 新的分支,这与库中到目前为止发生的所有事情都完全无关?
注意:这个特性是在git 1.7.2中添加的 – Matthew 2011-02-11 01:26:59
你知道是否有可能创建一个孤立分支,当你从另一个“树”中签出任何分支时,它保持可见状态? – JJD 2011-06-07 16:38:22
@JJD:我想你想要的是git merge。 '(git checkout master && git merge --no-commit“orphan-branch”)'一些类似的技巧可以使用git-reset或者使用索引来工作。但这取决于您所需的工作流程。 – phord 2011-09-29 23:40:56