Ответ 1
Вы также должны определить рабочий каталог. Смущает я знаю, но это гибкая вещь.
git --git-dir=/mycode/.git --work-tree=/mycode status
Вы можете прочитать немного здесь
Я пытаюсь запустить 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
i.e.
git --git-dir="/home/domain/.git/" status
Но похоже, что он пытается запустить git из корня, т.е. удаляя все из моей папки домена и добавляя все в корень.
Надеюсь, кто-то может посоветовать, что я делаю неправильно.
Вы также должны определить рабочий каталог. Смущает я знаю, но это гибкая вещь.
git --git-dir=/mycode/.git --work-tree=/mycode status
Вы можете прочитать немного здесь
Запуск git 1.8.5 (который должен появиться на следующей неделе), это будет еще проще:
git -C "/home/domain/" status
Не нужно больше устанавливать --git-dir
и --work-tree
!
Смотрите commit 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
Методы, показанные выше, приемлемы для сценариев, но слишком громоздки для быстрого вызова командной строки.
С помощью этой новой опции вышесказанное может быть выполнено с меньшим количеством нажатий клавиш:
git -C ~/foo status
git -C ../.. grep foo
for d in d1 d2 d3; do git -C $d svn rebase; done
Основываясь на вашем комментарии выше, похоже, что вы все еще сталкиваетесь с проблемой:
[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
. По завершении команды ваш текущий каталог остается тем, чем он был до команды.