git with --git-dir= results in 'not a git repository'

依然范特西╮ 提交于 2019-12-21 03:14:24

问题


I have a script in one of my iOS apps that should get the git revision hash and put it in the version number. In this script I run git --git-dir="$PROJECT_DIR" show -s --pretty=format:%h for that. However, I get the message that the directory isn't a git repository. If I echo the PROJECT_DIR var and go to the terminal the following works:

cd projectDirPath
git show -s --pretty=format:%h

What doesn't work is:

git --git-dir=projectDirPath show -s --pretty=format:%h

Am I missing something? The documentation states, that I can specify the path to a git repository with --git-dir and the specified path obviously is a git repository as all the git commands work without any problem if I first cd into that path. However if I am not in this path, specifing --git-dir doesn't work.

Best regards, Michael


回答1:


When using --git-dir, you need to point at the .git folder of your repository. Try:

git --git-dir=projectDirPath/.git show -s --pretty=format:%h

I use to have an issue remembering this myself. To help me remember what to do, I try to remember that the option is asking for exactly what it wants: the path to the .git directory (git-dir).




回答2:


Apart of --git-dir, also setting --work-tree may help. For the script, it's good to use relevant environments (it's easier), e.g.

#!/bin/bash -ex
export GIT_WORK_TREE=/path/to/repo
export GIT_DIR=/path/to/repo/.git
git show -s --pretty=format:%h


来源:https://stackoverflow.com/questions/12872446/git-with-git-dir-results-in-not-a-git-repository

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!