Используйте команду git «log» в другой папке

У меня есть несколько файлов php в папке A (это проект git). В этом php-файле я хочу выполнить «git log», но для папки B. Папка B - это другой проект git (поэтому log отличается между A и B).

Как я могу сделать это с помощью команды оболочки?

 takeshin22 сент. 2010 г., 14:39
cd /other/dir && git log && cd - в оболочке bash?
 VonC21 нояб. 2013 г., 09:24
С git 1.8.5 (4 квартал 2013 г.) у вас будет другой выбор вместо настройки--git-dir: увидетьмой ответ ниже
 Code-Apprentice30 дек. 2016 г., 22:27
Возможный дубликатgit pull пока не в каталоге git
 Abimaran Kugathasan03 февр. 2012 г., 05:09
Ваш вопрос не ясен.

Ответы на вопрос(2)

С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)<br>git --git-dir=~/foo/.git --work-tree=~/foo status<br>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 statusgit -C ../.. grep foofor d in d1 d2 d3; do git -C $d svn rebase; done
 shabunc03 дек. 2017 г., 22:13
--git-dir удобнее, когда вы делаете что-то вроде этого:for p in (find . -type d -name ".git"); do git --git-dir $p ...; done
 Air26 сент. 2014 г., 00:25
Это гораздо более надежный подход и работает для команд, кромеlog.
 ibic31 авг. 2017 г., 05:47
Это должен быть принятый ответ, спасибо.
 jwd21 мар. 2017 г., 00:16
К сожалению, это все еще не так хорошо, как Mercurial-R вариант, так как он путает относительные пути. Например, если я наберуgit -C subdir log subdir/myfile выдает ошибку (так как ищет файлsubdir/subdir/myfile).
 jwd24 мар. 2018 г., 00:08
@underscore_d: Это всего лишь немного неудобств, ИМО. Я не думаю, что это особенно умная или неожиданная идея: если я дам команду пути к файлу (возможно, с помощью табуляции для легкого получения имени), я ожидаю, что эта команда будет знать, о каком файле я говорю , даже если у него может быть другое имя относительно его репозитория.
 akostadinov05 февр. 2016 г., 10:34
вау, и ничего на странице руководства! Какой позор. (хорошо, теперь я вижу, что это добавлено в справочной странице 2.7)
 underscore_d27 янв. 2018 г., 19:29
@jwd: я не уверен, как это проблема? То, что вы цитировали, - это точное поведение, которого я ожидал, и я бы не хотелgit думать, что это было умнее меня и того, что я напечатал. Если я говорю «запустите это в каталоге X», я не имею в виду «кроме иногда, сделайте что-нибудь еще».
Решение Вопроса

От,man git:

Вы можете сделать это с--git-dir параметр, прежде чем передавать какие-либо команды.

git --git-dir /foo/bar/.git log

(Указав.git каталог необходим.) Издокументация:

--git-dir=<path>

Установите путь к хранилищу. Это также можно контролировать, установивGIT_DIR переменная окружения. Это может быть абсолютный или относительный путь к текущему рабочему каталогу.

 rgngl23 сент. 2010 г., 08:39
извините, я ошибаюсь, вы не ставите = между --git-dir и именем каталога. так что это становится git --git-dir / foo / bar log
 thinsoldier01 апр. 2015 г., 00:26
Я еще не наткнулся на страницу справки git, которая содержит строку "--git-dir": '(
 mipadi22 сент. 2010 г., 20:29
Вы должны ссылаться на.git каталог. Пытатьсяgit --git-dir=/foo/bar/.git log.
 Air26 сент. 2014 г., 00:25
Предупреждение! Этот подход нарушен для операций, отличных отlog, Пытатьсяgit --git-dir /foo/someclone/.git status - мерзавец совершенно запутался. рекомендую-C как отмечено ниже.
 Calimo17 апр. 2015 г., 14:25
@thinsoldierman git делает в моей системе (2.3.5). Но ответ @VonC работает намного лучше.
 AlphaB22 сент. 2010 г., 19:30
Я пытаюсь, но это не работает: /

Ваш ответ на вопрос