首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >git with -- git -dir=导致'not a git repository‘

git with -- git -dir=导致'not a git repository‘
EN

Stack Overflow用户
提问于 2012-10-13 18:58:50
回答 3查看 5.2K关注 0票数 33

我在我的一个iOS应用程序中有一个脚本,它应该获取git修订散列并将其放入版本号中。在此脚本中,我为此运行git --git-dir="$PROJECT_DIR“show -s --pretty=format:%h。但是,我得到的消息是该目录不是git存储库。如果我回显PROJECT_DIR变量并转到终端,则会执行以下操作:

代码语言:javascript
复制
cd projectDirPath
git show -s --pretty=format:%h

不起作用的是:

代码语言:javascript
复制
git --git-dir=projectDirPath show -s --pretty=format:%h

我是不是遗漏了什么?文档指出,我可以使用-- git -dir指定git存储库的路径,指定的路径显然是一个git存储库,因为如果我第一次cd进入该路径,所有git命令都可以正常工作。但是,如果我不在此路径中,指定--git-dir将不起作用。

致以最好的问候,迈克尔

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-14 18:40:03

在使用--git-dir时,您需要指向存储库的.git文件夹。尝试:

代码语言:javascript
复制
git --git-dir=projectDirPath/.git show -s --pretty=format:%h

--git-dir上的医生说:

--git-dir=

设置存储库的路径(".git“目录)。这也可以通过设置GIT_DIR环境变量来控制。它可以是当前工作目录的绝对路径或相对路径。

我曾经有过一个问题,那就是我自己也记不住。为了帮助我记住要做什么,我尽量记住该选项要求的正是它想要的:.git目录的路径(git-dir)。

票数 44
EN

Stack Overflow用户

发布于 2020-02-06 04:36:24

您正在寻找git -C command line option

-C <path>

运行时,就好像git是在而不是当前工作目录中启动的。当给定多个-C选项时,每个后续的非绝对-C <path>都是相对于前面的-C <path>进行解释的。如果<path>存在但为空,例如-C "",则保持当前工作目录不变。

此选项会影响期望使用--git-dir--work-tree等路径名的选项,因为它们对路径名的解释将相对于-C选项导致的工作目录进行。例如,以下调用是等效的:

git -- git -dir=a.git --工作树=a.git c状态 --git-dir=c/a.git --工作树=c/b状态git

票数 3
EN

Stack Overflow用户

发布于 2017-05-19 03:45:08

除了--git-dir之外,也设置--work-tree可能会有所帮助。对于脚本,使用相关的环境是很好的(它更容易),例如

代码语言:javascript
复制
#!/bin/bash -ex
export GIT_WORK_TREE=/path/to/repo
export GIT_DIR=/path/to/repo/.git
git show -s --pretty=format:%h
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12872446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档