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.

Итак, теперь я хочу запустить эту команду из другого каталога с помощью .

Итак, допустим, я в root/ и попробуйте это:

git --git-dir="/home/domain/" status
## Error 
fatal: Not a git repository: '/home/domain/'

Я также попытался включить .git папку, т. е.

git --git-dir="/home/domain/.git/" status

но похоже, что он пытается запустить git из корня, т. е. удалить все из папки моего домена и добавить все в корне.

надеюсь, что кто-то может посоветовать, что я делаю неправильно.

3   181  
2009-09-06 22:08:54

3 ответа:

вы также должны определить рабочий каталог. Запутанный я знаю, но это вещь гибкости.

git --git-dir=/mycode/.git --work-tree=/mycode status

вы можете прочитать немного больше здесь

начиная с git 1.8.5 (который должен выйти на следующей неделе), это будет еще проще:

 git -C "/home/domain/" status

нет необходимости устанавливать --git-dir и

основываясь на вашем комментарии выше, похоже, что вы все еще сталкиваетесь с проблемой:

[email protected] [/]# 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 чтобы переключиться в рабочий каталог в первую очередь. Например:

[email protected] [/]# (cd /home/domain && git pull origin master)

это временно (в подрешетке, что и делают круглые скобки) изменит текущий каталог на /home/domain, а затем запустить git pull origin master. После завершения команды ваш текущий каталог остается тем, что было до команды.