git签出的替代方法--孤立时--不支持孤立

git签出的替代方法--孤立时--不支持孤立,git,git-checkout,Git,Git Checkout,我编写了一个脚本,可以在某个时间运行 git checkout --orphan $BRANCH_NAME git rm -rf * git commit --allow-empty -m 'Orphaned Branch inited' 这正是我想要的工作 现在我必须部署它,不要问我为什么,这个服务器的git不支持--孤儿选项,导致 error: unknown option `orphan' git checkout--帮助不显示该选项 git——版本结果为 git version 2.

我编写了一个脚本,可以在某个时间运行

git checkout --orphan $BRANCH_NAME
git rm -rf *
git commit --allow-empty -m 'Orphaned Branch inited'
这正是我想要的工作

现在我必须部署它,不要问我为什么,这个服务器的git不支持--孤儿选项,导致

error: unknown option `orphan'
git checkout--帮助不显示该选项 git——版本结果为

git version 2.9.2
从我读到的,孤儿在git 2之前就已经存在了

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

我怎样才能做到这一点

提前谢谢


编辑:更新命令

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

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
需要一个新的分支名称,用于尚未存在的分支

如果您有一个不支持它的旧Git(例如CentOS上的Git 1.7),您可以使用
Git update ref
将正确(不存在)的新分支名称写入
HEAD

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

第一次提交这样一个分支就创建了它。

很抱歉,我的问题错了。我检查了脚本,并提供了分支名称。此时,我将检查是否安装了多个不同版本的Git,并且您正在运行古老版本,或者
--orphan
拼写错误(例如,包含一些不可见的字符,如零宽度空格,或类似ASCII字符的Unicode字符,但不同)。结果表明,oracle linux发行版附带了受损版本的git。xmllint也存在同样的问题,缺少一些选项:S。谢谢你,我设法解决了这个问题:)