如何在Git中创建没有父项的提交?

时间:2011-04-16 22:11:26

标签: git

  

可能重复:
  In git, is there a simple way of introducing an unrelated branch to a repository?

我有一个小项目,我正在使用没有任何版本控制软件,我最终得到了相同脚本的三个不同版本,其中每个版本与其他版本略有不同。我用其中一个版本初始化了一个git repo,而且我真的很愿意在没有父母的情况下让其他两个版本中的每个版本。这样,我可以合并差异,就好像脚本的三个版本中的每一个都是不同分支的提示一样。

我甚至不确定这是否一定是一种理智或合理的方式来解决这个问题...任何关于如何以这种方式做事的建议,或者更好地处理这种情况的建议都会很多赞赏。

3 个答案:

答案 0 :(得分:131)

来自我的评论:

  

为什么不创建两个分支并将其他两个版本添加到它们然后在分支上工作?

我认为这也与ctcherry的答案一致。


但是如果你真的想要创建一个与master无关的完全不同的“分支”,那么你可以使用git checkout --orphan来完成它。 manual for git checkout描述了选项--orphan

的工作原理
  

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

您可以这样使用它:

git checkout --orphan version2
git rm -rf .
<add version2 script>
git add your files
git commit -m 'Initial commit for version 2'

如果你的Git早于1.7.2(引入git checkout --orphan时),那么你可以使用“Creating New Empty Branches”Git Community Book的备用命令序列:

  

有时,您可能希望在您的存储库中保留不与您的普通代码共享祖先的分支。这方面的一些例子可能是生成文档或类似的东西。如果要创建一个不使用当前代码库作为父代的新分支头,可以创建一个如下所示的空分支:

git symbolic-ref HEAD refs/heads/newbranch 
rm .git/index 
git clean -fdx 
<do work> 
git add your files 
git commit -m 'Initial commit'

答案 1 :(得分:2)

为什么不从'空'回购开始(例如上面问题陈述的单一自述)。然后,您可以分支三次并将不同的脚本版本添加到每个分支中,并单独提交它们。

然后,您可以分支/编辑/提交/合并,并以管理良好的方式尝试所有选项。

答案 2 :(得分:1)

您可以为每个版本的脚本创建一个分支,并将它们提交给那些单独的分支。然后将它们一次一个地合并回主人。这应该会产生你想要的效果。