git –git-dir没有按预期工作
我试图从一个不同的目录运行git比我在。所以例如,如果我在:
cd /home/domain/ git status << runs perfect ie # On branch master # Your branch is ahead of 'origin/master' by 6 commits.
所以现在我想使用--git-dir
选项从不同的目录运行这个命令。
所以,让我们说我在root/
试试这个:
git --git-dir="/home/domain/" status ## Error fatal: Not a git repository: '/home/domain/'
我也试图包括.git
文件夹即
git --git-dir="/home/domain/.git/" status
但是这看起来像是试图从根目录运行git,即删除我的域名文件夹中的所有内容,并在根目录中添加所有内容。
希望有人可以build议我做错了什么。
您还必须定义工作目录。 混淆我知道,但这是一个灵活的事情。
git --git-dir=/mycode/.git --work-tree=/mycode status
你可以在这里阅读更多
开始git 1.8.5 (应该在下周出来),它会更简单:
git -C "/home/domain/" status
不需要设置--git-dir
和--work-tree
了!
见Nazri Ramliy的 提交 44e1e4 :
在不离开当前目录的情况下,需要更多按键来调用不同目录中的git命令:
(cd ~/foo && git status)
git --git-dir=~/foo/.git --work-dir=~/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
上面显示的方法对于脚本来说是可以接受的,但是对于快速的命令行调用来说太麻烦了。
有了这个新的选项,上面的操作可以用更less的击键来完成:
git -C ~/foo status
git -C ../.. grep foo
for d in d1 d2 d3; do git -C $d svn rebase; done
根据你上面的评论,这听起来像你仍然遇到一个问题:
root @ erx [/]#git --git-dir = / home / domain / .git --work-tree = / home / domain / pull origin master 致命的:/ usr / local / libexec / git-core / git-pull不能在没有工作树的情况下使用
这听起来像你可能打算从crontab
或其他东西运行。 首先使用cd
切换到您的工作目录可能会更好。 例如:
root @ erx [/]#(cd / home / domain && git pull origin master)
这将临时(在一个子shell中,这是括号所做的)将当前目录更改为/home/domain
,然后运行git pull origin master
。 命令完成后,您的当前目录将保留在命令之前的任何内容。