我正在编写一个自定义git命令,该命令只能在没有提交的全新存储库中运行(请参阅此问题).如何在我的脚本中执行简单检查以查看现有repo是否为零提交?
基本上,下面的空白是什么?
if ___________ ; then
    echo "Git repo already has commits. Aborting.
else
    echo "Git repo has no commits. Doing whatever my script does."
fi
Cas*_*bel 28
摘要:
git rev-parse HEAD &> /dev/nullgit rev-list -n 1 --all &> /dev/nullgit fsck,git count-objects或检查的内容.git/objects现在讨论!
如果您想知道是否签出了提交,您可以使用git rev-parse HEAD.会有输出,所以你可能想要重定向到/dev/null并只使用退出代码.出于所有实际目的,这将是足够好的 - 做正常的事情,几乎不可能在没有HEAD指向任何东西的情况下结束.但是,例如通过删除.git目录中的文件是可能的.根据你的脚本,这可能很重要 - 如果你要吹掉.git目录,你确实想要偏执.
如果你想查看是否有任何引用,你可以使用git rev-list -n 1 --all.同样,将有输出(遇到第一次提交的SHA1),因此重定向到/dev/null并检查退出代码.
最后,如果你想检查是否有任何提交-即使他们没有任何裁判(你必须尝试真的很难进入这种状态),我可能只是检查物体的存在与git fsck或git count-objects-或做不到这一点,清单.git/objects和检查什么,除了info和pack(命令倾向,如果没有文件失败.git/HEAD).是的,你实际上可能有一个blob和树木的回购但没有提交,但你必须更努力地去那里.如果您的脚本很可怕,这些是绝对最安全的方法.
| 归档时间: | 
 | 
| 查看次数: | 4560 次 | 
| 最近记录: |