我们正在使用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

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


当前回答

创建一个空的新分支,像这样:

true | git mktree | xargs git commit-tree | xargs git branch proj-doc

如果你的proji -doc文件已经在一个单独的子目录下提交,你可以这样创建新的分支:

git commit-tree thatcommit:path/to/dir | xargs git branch proj-doc

这可能比git分支——orphan更方便,如果它会让你有很多git rm和git移动要做的话。

Try

git branch --set-upstream proj-doc origin/proj-doc

看看这能不能帮你解决"多拿"的问题。另外,如果你真的只想获取一个分支,在命令行上指定它是最安全的。

其他回答

创建一个空的新分支,像这样:

true | git mktree | xargs git commit-tree | xargs git branch proj-doc

如果你的proji -doc文件已经在一个单独的子目录下提交,你可以这样创建新的分支:

git commit-tree thatcommit:path/to/dir | xargs git branch proj-doc

这可能比git分支——orphan更方便,如果它会让你有很多git rm和git移动要做的话。

Try

git branch --set-upstream proj-doc origin/proj-doc

看看这能不能帮你解决"多拿"的问题。另外,如果你真的只想获取一个分支,在命令行上指定它是最安全的。

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

git checkout --orphan <branchname>

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

git rm --cached -r .

添加文档文件,提交到github上。

pull或fetch总是会更新关于所有远程分支的本地信息。如果您只想为单个远程分支提取/获取信息,则需要指定它。

我发现这个方法很有用:

git checkout --orphan empty.branch.name
git rm --cached -r .
echo "init empty branch" > README.md
git add README.md
git commit -m "init empty branch"

我在这里找到的

如果你使用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>