Github创建空分支

时间:2015-12-05 01:07:51

标签: git github

我在网上搜索了几个小时,找不到解决这个问题的方法:

我想创建一个名为GitHub的新release分支。 这个分支需要为空!但是有一个现有的x提交分支,我不希望它有commit history

我找到的唯一方法是创建本地 --orphan分支


在此先感谢;)

5 个答案:

答案 0 :(得分:53)

--orphan选项出了什么问题?如果你想要一个空的分支并且没有历史记录,那么就可以了......

git checkout --orphan empty-branch

然后您可以删除暂存区域中的所有文件(以便它们不会被提交):

git rm -rf .

此时你的机器上有一个空分支。

在你可以推送到GitHub(或任何其他Git存储库)之前,你需要至少一次提交,即使它没有任何内容(即空提交),因为你不能推送空分支

git commit --allow-empty -m "root commit"

最后,将它推到遥控器,并打开啤酒

git push origin empty-branch

答案 1 :(得分:3)

被接受的答案使我遇到了一些问题,所以我这样做了:

$ git branch
* staging
$ git branch master c74d99cf46f6ed23e742f2617e9908294b4a608b
$ git checkout master
Switched to branch 'master'

得到了我想要的内容,并且没有合并/请求请求问题。我只是必须选择一个基本提交才能从中创建第二个分支

答案 2 :(得分:0)

您还可以按照here说明在master分支的根目录下创建空提交。然后只需创建空根提交所在的release分支。

答案 3 :(得分:0)

--orphan非常适合在本地创建一个空分支,但是要推送它或与其他分支交互,则需要提交。

在您的孤立分支上创建新提交不是一个好主意,因为您将无法与其他分支进行交互。即

git checkout --orphan test
git commit --allow-empty -m "init test branch"
git merge master
fatal: refusing to merge unrelated histories

相反,您应该更喜欢从master的第一次提交创建一个新分支。如果提交不为空,则可以在第一个提交之前添加一个空提交,如@houtanb所述。

答案 4 :(得分:0)

接受的答案确实是要走的路。但是如果你已经有其他分支无法合并到新创建的新开发分支,我个人最喜欢的解决方案是进行rebase,在需要合并开发的分支上执行以下操作:

git rebase develop

这样,初始提交也将是要合并的分支上的第一个提交。当然有一个警告:) 您正在通过执行 rebase 来重写分支上的历史记录。所以你必须强制将分支推到原点:

git push -f

其他也使用分支的人,现在将无法拉取,因此在获取开发之后,他们也必须在本地执行变基。假设它们位于需要重新定位的分支上:

git fetch
git rebase origin/develop