git checkout的替代方案 - 当不支持--orphan时的非法

时间:2017-11-22 18:54:45

标签: git git-checkout

我编写了一个在某些时候运行的脚本

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之前已经存在。

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

我怎样才能做到这一点?

提前致谢

编辑:更新了命令

2 个答案:

答案 0 :(得分:1)

自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

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

答案 1 :(得分:0)

这样做的一种方法是删除新分支的参考:

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