Mam kilka plików php w folderze A (który jest projektem git). W tym pliku php chcę wykonać "dziennik git", ale dla folderu B. Folder B to kolejny projekt git (więc log różni się między A i B).
Możesz to zrobić za pomocą --git-dirparametru, przed przekazaniem jakichkolwiek poleceń.
git --git-dir /foo/bar/.git log
( .gitKonieczne jest określenie katalogu). Z dokumentacji :
--git-dir=<path>
Ustaw ścieżkę do repozytorium. Można to również kontrolować, ustawiając GIT_DIRzmienną środowiskową. Może to być ścieżka bezwzględna lub ścieżka względna do bieżącego katalogu roboczego.
Musisz odwołać się do .gitkatalogu. Spróbuj git --git-dir=/foo/bar/.git log.
mipadi
6
przepraszam, moja wina, że nie umieszczasz = między --git-dir a nazwą katalogu. więc staje się git --git-dir / foo / bar log
rgngl
23
Ostrzeżenie! To podejście jest zepsute w przypadku operacji innych niż log. Spróbuj git --git-dir /foo/someclone/.git status- git jest całkowicie zdezorientowany. Polecam, -Cjak podano poniżej.
Air
Nie znalazłem jeszcze strony pomocy git zawierającej ciąg „--git-dir”: '(
thinsoldier
1
@thinsoldier man gitdziała w moim systemie (2.3.5). Ale odpowiedź @VonC działa znacznie lepiej.
Calimo
145
Z git 1.8.5 (Q4 2013) będziesz miał inny wybór zamiast ustawiania --git-dir.
Jeśli chcesz wykonać git logw folderze B, wpisz:
git -C B log
Tak jak „ make -C <directory>”, „ git -C <directory> ...” mówi Gitowi, aby udał się tam, zanim zrobi cokolwiek innego .
Jest to znacznie bardziej niezawodne podejście i działa w przypadku poleceń innych niż log.
Air
wow, i nic na stronie podręcznika! Jaka szkoda. (ok, teraz widzę to dodane na stronie
podręcznika
Niestety, nadal nie jest to tak przyjemne, jak -Ropcja Mercurial , ponieważ zakłóca względne ścieżki. Na przykład, jeśli git -C subdir log subdir/myfilewpisuję, wyświetla błąd (ponieważ szuka pliku subdir/subdir/myfile).
jwd
--git-dir jest wygodniejszy, gdy robisz coś takiego:for p in (find . -type d -name ".git"); do git --git-dir $p ...; done
shabunc
1
@jwd: Nie jestem pewien, jaki to problem? To, co zacytowałeś, to dokładne zachowanie, którego bym się spodziewał, i nie chciałbym gitmyśleć, że jest mądrzejszy ode mnie i tego, co napisałem. Jeśli mówię „uruchom to w katalogu X”, nie mam na myśli „z wyjątkiem tego, że czasami zrób coś innego”.
cd /other/dir && git log && cd -
w powłoce bash?--git-dir
: zobacz moją odpowiedź poniżejOdpowiedzi:
Od
man git
:Możesz to zrobić za pomocą
--git-dir
parametru, przed przekazaniem jakichkolwiek poleceń.(
.git
Konieczne jest określenie katalogu). Z dokumentacji :źródło
.git
katalogu. Spróbujgit --git-dir=/foo/bar/.git log
.log
. Spróbujgit --git-dir /foo/someclone/.git status
- git jest całkowicie zdezorientowany. Polecam,-C
jak podano poniżej.man git
działa w moim systemie (2.3.5). Ale odpowiedź @VonC działa znacznie lepiej.Z git 1.8.5 (Q4 2013) będziesz miał inny wybór zamiast ustawiania
--git-dir
.Jeśli chcesz wykonać
git log
w folderzeB
, wpisz:Zobacz popełnić 44e1e4 przez Nazri Ramliy :
źródło
log
.-R
opcja Mercurial , ponieważ zakłóca względne ścieżki. Na przykład, jeśligit -C subdir log subdir/myfile
wpisuję, wyświetla błąd (ponieważ szuka plikusubdir/subdir/myfile
).for p in (find . -type d -name ".git"); do git --git-dir $p ...; done
git
myśleć, że jest mądrzejszy ode mnie i tego, co napisałem. Jeśli mówię „uruchom to w katalogu X”, nie mam na myśli „z wyjątkiem tego, że czasami zrób coś innego”.