使用git新建一个空白分支

前言

最近在工作中遇到这样一个场景,一个使用git进行版本管理的项目打算进行重构,并且在原版本的基础上新拉了一个分支出来。但开发过程中发现首次拉代码的时候,.git目录的文件大小还是很大,而且也保留了原分支的代码提交记录。由于重构使用新架构其实并不依赖原项目之前的代码,所以希望可以实现新增不受原分支影响的空白分支出来。本篇文章将对实现的步骤进行介绍,详细步骤可以看第一章,只要执行命令的话可以直接看第二章~

一、使用checkout --orphan新建空白分支

步骤一: 先在远程仓库上面新建一个分支(如果已经建过了这一步可以省略)

新建完成后,我们可以看到新建的分支其实是基于旧分支的代码的,而且也带着原有分支的提交记录


步骤二:把代码拉到本地
git clone -b branchName sshUrl
步骤三:使用checkout命令新建一个空白分支
git checkout --orphan newBranchName

执行上面这条命令后,会新建一个空白分支并且本地会自动切换到新分支上面。


步骤四:把文件内的内容添加到分支中

经过步骤三后,本地虽然新建了一个分支,但是此时还需要提交一次改动,才能让这个分支正式生效。用git branch命令查看,我们在输出结果中是看不到新建的这个分支的

如果想保留原文件,只清空提交记录,可以直接使用下面的命令把文件加入到git管理中,如果是不想要原分支的文件的话,需要先rm -rf .清一下文件,根据需要添加进对应的文件后,再纳入到git管理中。

git add -A  # Add all files and commit them
git commit

执行完上面这条命令后,我们会发现现在已经能看到新的分支了


步骤五:完成本地分支的切换
git branch -D oldBranchName  # Deletes the master branch
git branch -m oldBranchName  # Rename the current branch to master

简单理解的话,就是把本地的原分支给删掉,再把刚刚新建的分支命名为旧分支的名字,从而覆盖掉新建分支test1原有的旧代码提交记录。

步骤六:将代码推送到远程仓库

这一步也是为了让远程仓库的分支也变为空白分支

git push -f origin master  # Force push master branch to github

我们可以登录码云上面看,可以看到之前新建的test1分支,现在确实没有了原来的代码提交记录,只有刚刚的代码提交记录


步骤七:修剪本地的.git目录

这一步是为了减少本地的.git目录大小(不过本人实测好像没什么用...)

git gc --aggressive --prune=all     # remove the old files

二、纯命令版

git checkout --orphan newBranch
git add -A  # Add all files and commit them
git commit
git branch -D master  # Deletes the master branch
git branch -m master  # Rename the current branch to master
git push -f origin master  # Force push master branch to github
git gc --aggressive --prune=all     # remove the old files

三、上面这种做法的优缺点

新建空白分支最初的目的有2个,一个是清除不相关的代码提交记录,第二是减少.git目录的大小。但是其实后这种方式实践后只能实现第一个目标,对于减少.git目录大小并没有什么作用。但转念一想,其实既要新分支没有无关的代码提交记录,又想减少.git目录大小的话,感觉和新建一个仓库似乎也没什么区别了...
总的来说,如果只是单纯的想要一个提交记录为空白的新分支,那么git checkout --orphan会是一个很好的选择。

参考资料:
1、stackoverflow:让当前提交成为初始化提交
2、git官网 checkout用法

posted @ 2022-09-03 14:45  moutory  阅读(616)  评论(0编辑  收藏  举报  来源