背景:项目进行中,需要创建一个空分支。在 Git 中创建分支,是必须有一个父节点的,也就是说必须在已有的分支上来创建新的分支,如果你的工程已经进行了一段时间,这个时候是无法创建空分支的。解决方法:
1.使用 git checkout 的 --orphan 参数创建一个新分支
git checkout --orphan branchname
这个命令会生成一个叫 dev
的分支,该分支会包含父分支的所有文件。但新的分支不会指向任何以前的提交,就是它没有历史,如果你提交当前内容,那么这次提交就是这个分支的首次提交。
2.删除所有文件(想要空分支,所以需要把当前内容全部删除)
2.1 此方法适用当我们需要删除暂存区或分支上的文件, 同时工作区也不需要这个文件了, 可以使用
git rm -rf .
# git rm -rf . 参数 rf 表示强制删除目录及文件 (.)表示所有文件
# git rm -r 删除目录
# git rm login.py 删除某个文件
2.2 当我们需要删除暂存区或分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制, 可以使用
git rm --cached -r .
# (.)会将全部文件删除 可以替换成某个文件或者目录 多个文件或者目录职期间用空格隔开
注:git rm --cached
删除的是git追踪文件,并不是真正的删除文件
3.提交
如果没有任何文件提交的话,分支是看不到的,所以我们需要创建一个新文件,然后提交到新创建的 branch 就会显示出来。
touch new_file # 创建新文件
git add new_file # 将改变提交到本地仓库
git commit
# 如果你只是想创建一个空分支提交到远程仓库,前面的步骤可以省略
git commit --allow-empty -m "description"
4.推送
git push origin branchname
注:
从索引中删除文件,或从工作树和索引中删除文件。 git rm
不会从您的工作目录中删除文件。 (没有任何选项只能从工作树中删除文件,并将其保留在索引中;)要删除的文件必须与分支的提示相同,并且在索引中不能对其内容进行更新,尽管可以使用 -f 选项覆盖(默认行为)。 当给出 --cached 时,暂存区内容必须与分支的提示或磁盘上的文件相匹配,从而仅将文件从索引中删除。使用 git rm 来删除文件,同时还会将这个删除操作记录下来;而使用 rm 来删除文件,仅仅是删除了物理文件,没有将其从 git 的记录中剔除。也就是说你在本地仓库文件目录下添加了一些文件,这些新添加的文件有一部分会提交到远程仓库,剩下的保留 对这些新创建的文件进行 git rm ---cached
操作是无效的,会报错 因为是本地新添加的文件,git 工作树中并没有。
截图中 edu.sql、数据模型分析.md
两个文件就是我在本地仓库目录下新添加的,执行出现了错误 。 当你使用 git add
命令时,上述中相关 git rm --cached
命令的操作可以忽视(没有卵用)。