Answers:
来自,man git:
您可以--git-dir在传递任何命令之前使用参数来执行此操作。
git --git-dir /foo/bar/.git log
(必须指定.git目录。)从文档中:
--git-dir=<path>设置存储库的路径。也可以通过设置
GIT_DIR环境变量来控制。它可以是当前工作目录的绝对路径或相对路径。
.git目录。尝试git --git-dir=/foo/bar/.git log。
log。试试git --git-dir /foo/someclone/.git status-git完全感到困惑。我建议-C如下所述。
man git在我的系统上执行(2.3.5)。但是@VonC答案效果更好。
使用git 1.8.5(2013年第四季度)时,您将有另一种选择,而不是设置--git-dir。
如果要git log在folder中执行B,请键入:
git -C B log
就像“
make -C <directory>”一样,“git -C <directory> ...”告诉Git在做其他事情之前要去那里。
在不离开当前目录的情况下,需要更多的按键才能在不同目录中调用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 statusgit -C ../.. grep foofor d in d1 d2 d3; do git -C $d svn rebase; done
log。
-R选项好,因为它弄乱了相对路径。例如,如果我键入git -C subdir log subdir/myfile它会给出错误(因为它正在查找文件subdir/subdir/myfile)。
for p in (find . -type d -name ".git"); do git --git-dir $p ...; done
git认为它比我和我键入的内容更聪明。如果我说“在目录X中运行此文件”,则不是指“除了某些时候,请执行其他操作”。
cd /other/dir && git log && cd -在bash外壳中?