我们正在使用git存储库来存储我们的项目。我们的分支脱离了原来的分支。但是现在我们想要创建一个小的新项目来跟踪一些文档。为此,我们需要创建一个新的空分支来开始存储我们的文件,并且我希望网络上的其他用户克隆该分支。

我们怎么做呢?

我试过一些方法,但都没用。

$ mkdir proj_doc; cd proj_doc
$ git init
$ git add .
$ git commit -m 'first commit'
$ git br proj_doc
$ git co proj_doc
$ git br -d master
$ git push origin proj_doc

它似乎推了分支,但当我进行取回或拉取时,它从其他分支下载信息,然后我也从其他项目获得一些额外的文件。最好的解决办法是什么?


当前回答

我在这里找到的

如果你使用git 2.23或以上版本,你可能会习惯git切换和git恢复,而不是git签出

所以如果你需要一个空的分支试试这个:

git switch --orphan YourNewBranch

就是这样:)

其他回答

如果你的git版本没有——orphan选项,应该使用这个方法:

git symbolic-ref HEAD refs/heads/<newbranch> 
rm .git/index 
git clean -fdx 

在做了一些工作之后:

git add -A
git commit -m <message>
git push origin <newbranch>

2022年更新

从Git 2.23开始,你可以使用Git switch——orphan <new branch>来创建一个没有历史记录的空分支。不像git签出——孤儿,所有跟踪文件将被删除。

一旦你真的在这个分支上提交了,它就可以被推送到远程存储库:

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

假设你有一个带有文件/目录的主分支:

> git branch  
master
> ls -la # (files and dirs which you may keep in master)
.git
directory1
directory2
file_1
..
file_n

如何一步一步地创建一个空分支:

Git checkout -orphan new_branch_name 执行以下命令前请确认所在目录正确。 ls -la |awk '{print $9}' |grep -v git |xargs -I _ rm -rf ./_ Git rm -rf。 触摸new_file Git添加了new_file Git commit -m '在新分支中添加第一个文件' Git push origin new_branch_name

在步骤2中,我们简单地在本地删除所有文件,以避免与新分支上的文件和保留在主分支中的文件混淆。 然后,我们在步骤3中解除所有这些文件的链接。最后,第4步和之后将使用新的空分支。

一旦你完成了,你可以很容易地在你的分支之间切换:

git checkout master 
git checkout new_branch

基于Hiery Nomus的回答。

你可以创建一个孤儿分支:

git checkout --orphan <branchname>

这将创建一个没有父结点的新分支。然后,您可以使用以下命令清除工作目录:

git rm --cached -r .

然后你只需要用空commit和push来提交分支

git commit -m <commit message> --allow-empty
git push origin <newbranch>

我在这里找到的

如果你使用git 2.23或以上版本,你可能会习惯git切换和git恢复,而不是git签出

所以如果你需要一个空的分支试试这个:

git switch --orphan YourNewBranch

就是这样:)