不支持 git checkout --orphan in --orphan 的替代方案

alternative to git checkout --orphan when --orphan is not supprted

我编写了一个脚本,该脚本会在某个时候运行

git checkout --orphan $BRANCH_NAME
git rm -rf *
git commit --allow-empty -m 'Orphaned Branch inited'

这完全符合我的意愿

现在要部署了,别问我为什么,这个服务器的git不支持--orphan选项,导致

error: unknown option `orphan'

git checkout --help 不显示选项 git --version 结果为

git version 2.9.2

根据我的阅读,--orphan 在 git 2.

之前就已存在

以任何方式接触服务器都不是一种选择,所以我需要重新编写我的脚本,所以我最终得到一个孤立的空分支(并且不会在这个过程中弄乱我的其他分支)

我怎样才能做到这一点?

提前致谢

编辑:更新了命令

一种方法是删除新分支的引用:

git checkout -b emptybranch
git rm -rf *
git update-ref -d refs/heads/emptybranch
git commit --allow-empty -m 'Orphaned Branch inited'

自 1.7.2 以来的任何 Git 都应该支持 --orphan;然而,git checkout --orphan 需要一个 new 分支名称,对于尚不存在的分支。

如果你有不支持它的旧 Git(例如 CentOS 上的 Git 1.7),你可以使用 git update-ref 编写正确的(不存在的)新分支名称为 HEAD:

git update-ref HEAD refs/heads/new-branch-that-does-not-exist-yet

首次提交此类分支会创建它。