Используйте команду git "log" в другой папке
У меня есть несколько файлов php в папке A (это проект git). В этом php-файле я хочу выполнить "git log", но для папки B. Папка B - это другой git-проект (поэтому log отличается между A и B).
Как я могу сделать это с помощью команды оболочки?
3 ответа
От, man git
:
Вы можете сделать это с --git-dir
Параметр, прежде чем передавать какие-либо команды.
git --git-dir /foo/bar/.git log
(Указав .git
каталог необходим.) Из документации:
--git-dir=<path>
Установите путь к хранилищу. Это также можно контролировать, установив
GIT_DIR
переменная окружения. Это может быть абсолютный или относительный путь к текущему рабочему каталогу.
С git 1.8.5 (4 квартал 2013 г.) у вас будет другой выбор вместо настройки --git-dir
,
Если вы хотите выполнить git log
в папке B
, тип:
git -C B log
Как "
make -C <directory>
", "git -C <directory> ...
"говорит Git пойти туда, прежде чем делать что-либо еще.
Смотрите коммит 44e1e4 от Назри Рамлия:
Требуется больше нажатий клавиш для вызова команды git в другом каталоге, не выходя из текущего каталога:
(cd ~/foo && git status)
git --git-dir=~/foo/.git --work-tree=~/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
Все возможные варианты:
-C <path>
: Запускает команду, как если бы git был запущен в<path>
.--git-dir=<path>
: устанавливает путь к каталогу «.git».--work-tree=<path>
: Задает путь к рабочему дереву.
Обычно,
-C
это то, чего хочет большинство людей. Для других целей рассмотрите возможность объединения вышеуказанного.