Git 为新项目创建新的空分支
我们正在使用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 $
$ 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推送来源新分支机构名称
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"