我在网上搜索了几个小时,找不到解决这个问题的方法:
我想创建一个名为GitHub
的新release
分支。
这个分支需要为空!但是有一个现有的x提交分支,我不希望它有commit history
。
我找到的唯一方法是创建本地 --orphan
分支
在此先感谢;)
答案 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