在GitHub上创建空分支


131

我想创建一个名为的新GitHub分支release

该分支必须为空!但是,现有分支具有x提交,我不想拥有其提交历史记录。

我发现的唯一方法是创建本地 --orphan分支。



1
为什么要这样做?您可以将空集称为“ Fred”,但它仍然是空集。
msw 2015年

如果您告诉我们有关您为什么要这样做的更多信息,则可能会帮助我们提供良好的答案。
willoller

您将使用git进行的所有操作都将是本地的,直到您使用git push origin _branch_

Answers:


275

--orphan选项有什么问题?如果您想要的分支是空的并且没有历史记录,这就是要走的路...

git checkout --orphan empty-branch

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

git rm -rf .

此时,您的计算机上有一个空分支。

在推送到GitHub(或任何其他Git存储库)之前,您将至少需要进行一次提交,即使其中没​​有任何内容(即,空提交),因为您不能推送空分支。

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

最后,将其推到遥控器上,然后打开啤酒

git push origin empty-branch

3
嗨,当我尝试从其他分支创建请求请求时,创建空分支github存储库后未显示任何文件差异。你能告诉我如何解决这个问题。
Raghavendra S

@RaghavendraS看到我的答案。我遇到过同样的问题。
Greg M. Krsak

2
也许有些人对此接受的答案有疑问,因为git add .在删除所有文件之后再提交之前,它缺少一个步骤?
SCoyle

我喜欢啤酒
El Ronnoco

13

--orphan 对于在本地创建一个空分支很有用,但是,为了推送它或与其他分支交互,您将需要提交。

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

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

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


5

您还可以按照此处的说明master分支的根目录创建一个空的提交。然后,只需release在该空根提交所在的位置创建分支即可。


3

公认的答案使我遇到了一些问题,所以我这样做:

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

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


根据定义,如果您的分支具有基本提交,则它不是分支。创建孤立分支时遇到什么问题?
C. Augusto Proiete
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.