我试图从一个不同于我的目录运行git.所以例如,如果我在:
cd /home/domain/
git status << runs perfect ie
# On branch master
# Your branch is ahead of 'origin/master' by 6 commits.
Run Code Online (Sandbox Code Playgroud)
所以现在我想使用该--git-dir选项从不同的目录运行此命令.
所以,让我说我在root/尝试这个:
git --git-dir="/home/domain/" status
## Error
fatal: Not a git repository: '/home/domain/'
Run Code Online (Sandbox Code Playgroud)
我也尝试过包含.git文件夹ie
git --git-dir="/home/domain/.git/" status
Run Code Online (Sandbox Code Playgroud)
但这看起来好像是试图从root运行git,即从我的域文件夹中删除所有内容并在root中添加所有内容.
希望有人能就我做错的事情提出建议.
Jon*_*tar 304
您还必须定义工作目录.让我感到困惑,但这是一种灵活性.
git --git-dir=/mycode/.git --work-tree=/mycode status
Run Code Online (Sandbox Code Playgroud)
你可以在这里阅读更多内容
Von*_*onC 130
启动git 1.8.5(应该在下周出来),它会更简单:
git -C "/home/domain/" status
Run Code Online (Sandbox Code Playgroud)
无需设置--git-dir和--work-tree了!
在不离开当前目录的情况下,需要更多的按键才能在不同的目录中调用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上面显示的方法对于脚本编写是可接受的,但对于快速命令行调用来说太麻烦了.
使用这个新选项,可以用更少的击键完成上述操作:
git -C ~/foo statusgit -C ../.. grep foofor d in d1 d2 d3; do git -C $d svn rebase; done
Gre*_*ill 41
根据您上面的评论,听起来您仍然遇到问题:
root@erx [/]# git --git-dir=/home/domain/.git --work-tree=/home/domain/ pull origin master fatal: /usr/local/libexec/git-core/git-pull cannot be used without a working tree
听起来你可能打算从这个crontab或其他东西运行它.您可能最好先使用cd切换到工作目录.例如:
root@erx [/]# (cd /home/domain && git pull origin master)
这将暂时(在子shell中,这是括号所做的)将当前目录更改为/home/domain,然后运行git pull origin master.命令完成后,您当前的目录将保持命令之前的状态.
| 归档时间: |
|
| 查看次数: |
75573 次 |
| 最近记录: |