从现有仓库创建一个空分支的Git操作

16

我有一个 git 存储库,其中有许多分支,我的要求是创建一个新的空分支,使其独立于之前的分支。


你是指像一个全新的仓库,完全不包含任何内容吗?还是像一个基于主分支的新分支,包含所有已合并的代码? - GolezTrol
1
@GolezTrol 我目前的项目要求是重构我们称之为遗留代码的代码,并从头开始创建一个新项目,这将是一个更新的版本。我想使用与遗留代码相同的存储库,但应该有一个干净的分支。 - Brajesh Pant
1
创建一个新的仓库。如果你想从头开始,那么你将没有共同的提交记录,在一个仓库中拥有两个完全不同的代码库是毫无意义的。 - eckes
3个回答

17

这不是一个好的做法,但如果你真的想要开始一个与主分支无关的新分支,你必须使用--orphan参数进行检出:

git checkout --orphan version2
# and remove your project files

你可以在文档http://git-scm.com/docs/git-checkout中了解更多关于--orphan参数的详细信息。


3
谢谢提供的解决方案。但我认为创建一个新的仓库会是更好的解决方案,因为我无法将孤立的代码合并到任何分支中。 - Brajesh Pant
听起来是一个更好的解决方案。祝你好运 ;) - Samuel Dauzon
1
谢谢!这似乎很好地为在 GitHub 上添加 gh-pages 工作。 - André van Schoubroeck

5

2022 更新

从 Git 2.23 开始,您可以使用 git switch --orphan <new branch> 命令创建一个没有历史记录的空分支。与 git checkout --orphan 不同的是,所有被跟踪的文件都将被删除。

一旦您在此分支上实际有了提交,它就可以被推送到远程仓库:

git switch --orphan <new branch>
git commit --allow-empty -m "Initial commit on orphan branch"
git push -u origin <new branch>

有关文档中switch选项的更多详细信息:https://git-scm.com/docs/git-switch


-3
在你的本地机器上创建分支并切换到该分支。
$ git checkout -b [name_of_your_new_branch]

将分支推送到Github:

$ git push origin [name_of_your_new_branch]

您可以使用以下命令将所有分支与当前工作分支标记为*:

$ git branch

此外,您还可以找到所有git分支和合并文件的完整列表使用git创建新分支和管理分支


想知道为什么这被认为是不好的做法?似乎这是最直接的方法。如果你这样做会有什么注意事项? - geofrey
2
@geofrey,我知道你已经等了很久……原因是新分支不会为空,它将包含在创建新分支之前提交的所有提交。 - avital

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接