Git 为新项目创建新的空分支

Git 为新项目创建新的空分支,git,branch,git-branch,Git,Branch,Git Branch,我们正在使用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存储库来存储我们的项目。我们的分支机构与原来的分支机构不同。但是现在我们想创建一个新的小项目来跟踪一些文档。为此,我们希望创建一个新的空分支来开始存储我们的文件,我希望网络的其他用户克隆该分支

我们怎么能做到呢

我试过一些方法,但都不管用

$ 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 checkout --orphan <branchname>
git checkout --orphan <branchname>
并添加文档文件,提交它们并将它们推送到github


拉取或提取操作将始终更新有关所有远程分支的本地信息。如果只想提取单个远程分支的信息,则需要指定它。

创建一个空的新分支,如下所示:

true | git mktree | xargs git commit-tree | xargs git branch proj-doc
如果项目文档文件已在单个子目录下提交,则可以通过以下方式创建新分支:

git commit-tree thatcommit:path/to/dir | xargs git branch proj-doc
这可能比git branch--Orphant更方便,如果这会给您留下大量的git rm和git mv任务的话

试一试


然后看看这是否有助于解决抓取太多的问题。另外,如果您确实只想获取单个分支,则只需在命令行中指定它是最安全的。

正确的答案是创建孤立分支。我详细解释了如何做到这一点(存档链接)

开始之前,请升级到GIT的最新版本。确定 您正在运行最新版本,请运行

which git
如果它抛出了一个旧版本,您可能需要使用 包含您刚刚安装的版本的文件夹

好的,我们准备好了。将cd放入包含git的文件夹后 签出,创建孤立分支。对于本例,我将命名 分行“我的分行”

git checkout --orphan mybranch
删除孤立分支中的所有内容

git rm -rf .
做些改变

vi README.txt
添加并提交更改

git add README.txt
git commit -m "Adding readme file"
就这样。如果你跑

git log
您会注意到,提交历史从零开始。转换 回到你的主分支,快跑

git checkout master
您可以通过运行返回到孤立分支

git checkout mybranch

如果您的git版本没有--orphan选项,则应使用以下方法:

git symbolic-ref HEAD refs/heads/<newbranch> 
rm .git/index 
git clean -fdx 
git符号参考头部参考/头部/
吉特令吉/索引
git-clean-fdx
完成一些工作后:

git add -A
git commit -m <message>
git push origin <newbranch>
git添加-A
git提交-m
git推送原点

假设您有一个带有文件/目录的
master
分支:

> git branch  
master
> ls -la # (files and dirs which you may keep in master)
.git
directory1
directory2
file_1
..
file_n
如何逐步创建空分支:
  • git签出-孤立新分支机构名称
  • 在执行以下命令之前,请确保您位于正确的目录中:
    ls-la | awk{print$9}| grep-v git | xargs-I | rm-rf./\ucode>
  • git rm-rf.
  • 触摸新建文件
  • git添加新文件
  • git commit-m'在新分支中添加了第一个文件'
  • git推送来源新分支机构名称
  • 在步骤2中,我们只需在本地删除所有文件,以避免与新分支上的文件以及保存在
    master
    分支中的文件混淆。 然后,我们在步骤3中取消所有这些文件的链接。最后,步骤4和之后将使用新的空分支

    完成后,您可以轻松地在分支之间切换:

    git checkout master 
    git checkout new_branch
    

    最好的解决方案是使用
    --orphan
    选项创建一个新分支,如下所示

    git checkout --orphan <branch name>
    

    详细说明
    --orphan
    的作用:
    --孤立的

    创建一个新的孤立分支,名为
    ,从
    开始并切换到它。在此新分支上进行的第一次提交将没有父级,并且它将是与所有其他分支和提交完全断开连接的新历史的根

    索引和工作树被调整,就像您以前运行git checkout一样。这允许您启动一个新的历史记录,记录一组类似于的路径,方法是轻松地运行git commit-a以进行根提交

    当您希望从提交中发布树而不公开其完整历史记录时,这非常有用。您可能希望这样做,以发布一个项目的开源分支,该项目的当前树是“干净的”,但其完整历史记录包含专有的或其他阻碍的代码位

    如果您想启动一个断开连接的历史记录,记录一组完全不同于的路径,那么您应该在通过运行git rm-rf创建孤立分支之后立即清除索引和工作树。从工作树的顶层。之后,您将准备好准备新文件、重新填充工作树、从其他地方复制它们、提取tarball等。

    在此基础上


    可以将分支创建为孤立分支:

    git checkout --orphan <branchname>
    
    git checkout --orphan <branchname>
    
    然后,您只需使用空提交提交分支,然后推送

    git commit -m <commit message> --allow-empty
    git push origin <newbranch>
    
    git提交-m——允许为空
    git推送原点
    
    我找到了以下帮助:

    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"
    

    为什么需要将其存储在分支中?分支通常用于与同一代码库的某些偏差。也许仅仅启动一个新的存储库会是一个更好的解决方案。好吧,我们以前做过,IIRC,我想再做一次,所以我很好奇;)“对于一个新项目”-作为@honk,我建议将其放入一个新的存储库中。有两个选项可以集成它们。在原始项目中设置为a,例如,
    docs/
    指向其他回购协议。或者,如果以后要合并代码,请将其作为远程文件添加。孤立方法的另一个缺点是需要保留
    .gitignore
    'd文件,并且还需要在两个根(分支)之间不断切换。所以我也支持新的回购方式,在一个新的文件夹中,拥有相同的遥控器,并推到另一个文件夹
    git commit -m <commit message> --allow-empty
    git push origin <newbranch>
    
    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"