确定目录是否在 git 控制之下

新手上路,请多包涵

我如何判断给定目录是否是 git 存储库的一部分?

(以下是python的,不过bash什么的就可以了。)

 os.path.isdir('.svn')

将告诉您当前目录是否由 Subversion 控制。 Mercurial 和 Git 在存储库的顶部只有一个 .hg/.git,所以对于 hg 我可以使用

os.system('hg -q stat 2> /dev/null > /dev/null') == 0)

但是 git status 如果没有任何更改,则返回非零(错误)退出状态。

正在迭代寻找 .git 我自己的路径吗?

原文由 Grumdrig 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 551
2 个回答

在 ruby 中, system('git rev-parse') 如果当前目录在 git repo 中,则返回 true,否则返回 false。我想 pythonic 等价物应该类似地工作。

编辑: 果然:

 # in a git repo, running ipython
>>> system('git rev-parse')
0

# not in a git repo
>>> system('git rev-parse')
32768

请注意,当您不在回购中时,STDERR 上会有一些输出,如果这对您很重要的话。

原文由 John Hyland 发布,翻译遵循 CC BY-SA 2.5 许可协议

刚刚在 git help rev-parse 中找到了这个

git rev-parse --is-inside-work-tree

打印 true 如果它在工作树中, false 如果它在 .git 树中,如果两者都不是,则打印致命错误。 truefalse 都打印在 stdout 上,退出状态为 0,致命错误打印在 stderr 上,退出状态为 128。

原文由 falstro 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题