Подтвердить что ты не робот

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 i.e.

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

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

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

4b9b3361

Ответ 1

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

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

Вы можете прочитать немного здесь

Ответ 2

Запуск 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

Ответ 3

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

[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. По завершении команды ваш текущий каталог остается тем, чем он был до команды.