我在目录 A中。如何为目录 B中的 git 存储库执行 git log?
A
B
git log
来自 man git:
man git
在传递任何命令之前,可以使用 --git-dir参数执行此操作。
--git-dir
git --git-dir /foo/bar/.git log
(需要指定 .git目录)来自 文件:
.git
--git-dir= 设置存储库的路径。这也可以通过设置 GIT_DIR 环境变量来控制。它可以是当前工作目录的绝对路径或相对路径。
--git-dir=
设置存储库的路径。这也可以通过设置 GIT_DIR 环境变量来控制。它可以是当前工作目录的绝对路径或相对路径。
GIT_DIR
对于 Git 1.8.5(2013年第4季),您将有另一个选择,而不是设置 --git-dir。 如果要在文件夹 B中执行 git log,请键入:
git -C B log
就像“ make -C <directory>”和“ “ git -C <directory> ...”告诉 Git 在做其他事情之前先去那里”。
make -C <directory>
git -C <directory> ...
见 犯罪,第四季,第4集 by 纳兹里 · 拉姆利(Nazri Ramliy):
在不离开工作目录的情况下,在另一个目录中调用 git 命令需要更多的按键: (cd ~/foo & & git status) Git —— git-dir = ~/foo/. git —— work-tree = ~/foo status GIT _ DIR = ~/foo/. GIT GIT _ WORK _ TREE = ~/foo GIT status (cd ../..; git grep foo) for d in d1 d2 d3; do (cd $d && git svn rebase); done 上面显示的方法对于脚本来说是可以接受的,但是对于快速命令行调用来说太麻烦了。 使用这个新选项,可以通过更少的击键来完成以上操作: git -C ~/foo status git -C ../.. grep foo for d in d1 d2 d3; do git -C $d svn rebase; done
在不离开工作目录的情况下,在另一个目录中调用 git 命令需要更多的按键:
(cd ~/foo & & git status) Git —— git-dir = ~/foo/. git —— work-tree = ~/foo status GIT _ DIR = ~/foo/. GIT GIT _ WORK _ TREE = ~/foo GIT status
(cd ../..; git grep foo)
for d in d1 d2 d3; do (cd $d && git svn rebase); done
上面显示的方法对于脚本来说是可以接受的,但是对于快速命令行调用来说太麻烦了。
使用这个新选项,可以通过更少的击键来完成以上操作:
git -C ~/foo status
git -C ../.. grep foo
for d in d1 d2 d3; do git -C $d svn rebase; done
所有可能的选择:
-C <path>
<path>
--git-dir=<path>
--work-tree=<path>
通常,-C是大多数人想要的。对于其他用途,考虑结合以上。
-C