我在我的一个iOS应用程序中有一个脚本,它应该获取git修订散列并将其放入版本号中。在此脚本中,我为此运行git --git-dir="$PROJECT_DIR“show -s --pretty=format:%h。但是,我得到的消息是该目录不是git存储库。如果我回显PROJECT_DIR变量并转到终端,则会执行以下操作:
cd projectDirPath
git show -s --pretty=format:%h不起作用的是:
git --git-dir=projectDirPath show -s --pretty=format:%h我是不是遗漏了什么?文档指出,我可以使用-- git -dir指定git存储库的路径,指定的路径显然是一个git存储库,因为如果我第一次cd进入该路径,所有git命令都可以正常工作。但是,如果我不在此路径中,指定--git-dir将不起作用。
致以最好的问候,迈克尔
发布于 2012-10-14 18:40:03
在使用--git-dir时,您需要指向存储库的.git文件夹。尝试:
git --git-dir=projectDirPath/.git show -s --pretty=format:%h--git-dir上的医生说:
--git-dir=
设置存储库的路径(".git“目录)。这也可以通过设置GIT_DIR环境变量来控制。它可以是当前工作目录的绝对路径或相对路径。
我曾经有过一个问题,那就是我自己也记不住。为了帮助我记住要做什么,我尽量记住该选项要求的正是它想要的:.git目录的路径(git-dir)。
发布于 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
发布于 2017-05-19 03:45:08
除了--git-dir之外,也设置--work-tree可能会有所帮助。对于脚本,使用相关的环境是很好的(它更容易),例如
#!/bin/bash -ex
export GIT_WORK_TREE=/path/to/repo
export GIT_DIR=/path/to/repo/.git
git show -s --pretty=format:%hhttps://stackoverflow.com/questions/12872446
复制相似问题