Используйте команду 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 в другом каталоге, не выходя из текущего каталога:

  1. (cd ~/foo && git status)
    git --git-dir=~/foo/.git --work-tree=~/foo status
    GIT_DIR=~/foo/.git GIT_WORK_TREE=~/foo git status
  2. (cd ../..; git grep foo)
  3. for d in d1 d2 d3; do (cd $d && git svn rebase); done

Методы, показанные выше, приемлемы для сценариев, но слишком громоздки для быстрых вызовов командной строки.

С помощью этой новой опции вышеупомянутое может быть сделано с меньшим количеством нажатий клавиш:

  1. git -C ~/foo status
  2. git -C ../.. grep foo
  3. 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это то, чего хочет большинство людей. Для других целей рассмотрите возможность объединения вышеуказанного.

Другие вопросы по тегам