Zatwierdź historię w zdalnym repozytorium


206

Próbuję uzyskać dostęp do historii zatwierdzania oddziału w zdalnym repozytorium. Spojrzałem na dokument, ale nie mogłem znaleźć żadnych istotnych informacji o tym, jak uzyskać dostęp do historii zatwierdzeń zdalnego repo przy użyciu mojego lokalnego klienta git.

Odpowiedzi:


252
git log remotename/branchname

Wyświetli dziennik danego zdalnego oddziału w tym repozytorium, ale tylko dzienniki, które „pobrałeś” z ich repozytorium do osobistej „kopii” zdalnego repozytorium.

Pamiętaj, że klon repozytorium zaktualizuje swój stan wszystkich zdalnych gałęzi tylko poprzez wykonanie tej czynności git fetch. Nie można połączyć się bezpośrednio z serwerem, aby sprawdzić tam dziennik, wystarczy pobrać stan serwera, git fetcha następnie lokalnie wyświetlić dziennik zdalnych gałęzi.

Być może innym przydatnym poleceniem może być:

git log HEAD..remote/branch

który pokaże ci commity, które znajdują się w zdalnej gałęzi, ale nie w bieżącej gałęzi ( HEAD).


8
„Nie możesz połączyć się bezpośrednio z serwerem, aby sprawdzić tam dziennik” - to był problem, który miałem
Brian J

1
Dostaję tylko lokalne zmiany ściągane ... zwróć uwagę na te zdalne, nawet wcześniej pobierałem.
Loenix,

6
Robiąc git fetch, musisz użyć, --allaby pobrać z pilotów.
ocodo

25
To źle, więc muszę sklonować obiekty o wartości 2 GB tylko po to, by przejrzeć dzienniki zatwierdzeń?
TWiStErRob 11.04.16

2
Cześć @TWiStErRob, możesz złagodzić ból, zarządzając ilością danych pobieranych za pomocą płytkiego klonu (patrz --depth w git-scm.com/docs/git-clone ), a następnie zarządzaj pobieraniem za pomocą (patrz „płytki” w git-scm .com / docs / git-fetch ).
qneill

66

NB „origin” poniżej służy do reprezentowania w górę sklonowanego repozytorium, zamień „origin” na opisową nazwę dla zdalnego repozytorium. „zdalne odwołanie” może używać tego samego formatu, co w poleceniu klonowania.

git remote add origin <remote reference>
git fetch
git log origin/master

2
@ user1795998 Adres URL Git zdalnego repozytorium, np.git://git.somedomain.tld/some/repo
gertvdijk,

1
Nie musisz określać, <refspec>kiedy pobierasz (lub używasz fetch --all), jeśli nie śledzisz żadnej gałęzi na pilocie?
gertvdijk,

1
Co masz na myśli mówiąc „dostawca projektu / diag”? Czy to folder w repozytorium? Kolejny oddział?
LopSae,

1
Repozytorium może mieć wiele rozgałęzień, ale „projekt” nie jest terminem związanym z git, stąd zamieszanie związane z tym, co w tym przypadku oznacza „projekt”. Co to ma wspólnego z tym pytaniem?
LopSae,

1
Nie wierzę, że można to zrobić w GIT. Musisz sklonować to zdalne repozytorium, zanim będziesz mógł wydać na nim dziennik git.
user959690

12

Możesz przeglądać dziennik tylko w lokalnym repozytorium, ale może ono zawierać pobrane gałęzie wszystkich skonfigurowanych pilotów.

Więc jeśli sklonujesz repo ...

git clone git@gitserver:folder/repo.git

Domyślnie będzie to origin/master.

Możesz dodać zdalne do tego repozytorium, inne niż origindodajmy production. Z poziomu lokalnego folderu klonowania:

git remote add production git@production-server:folder/repo.git

Jeśli kiedykolwiek chcemy zobaczyć dziennik production, musimy wykonać:

git fetch --all 

Pobiera ze WSZYSTKICH pilotów (domyślne pobieranie bez --allpobierania tylko z origin)

Po pobraniu możemy spojrzeć na dziennik na productionpilocie, musisz także określić gałąź.

git log production/master

Wszystkie opcje będą działać tak samo, jak w przypadku logowania do lokalnych oddziałów.


12

Szybkim sposobem jest klonowanie przy użyciu --baresłowa kluczowego, a następnie sprawdzenie dziennika:

git clone --bare git@giturl tmpdir
cd tmpdir
git log branch

11

Nie wierzę, że to jest możliwe. Uważam, że musisz sklonować to zdalne repozytorium lokalnie i wykonać git fetchje, zanim będziesz mógł wydać git logprzeciwko niemu repozytorium .


1
wyobraź sobie, że już klonujesz repozytorium do lokalnego i wprowadzasz zmiany. . następnie chcesz sprawdzić, czy ktoś zaangażował się w zdalne repozytorium
Chhorn Elit,

2
Jeśli zmienisz tę odpowiedź na „To niemożliwe”, jest to najlepsza odpowiedź. Nie ma sposobu na uzyskanie dostępu do historii zatwierdzania zdalnego repo przy użyciu zdalnego klienta git.
qneill


2

Nie jestem pewien, kiedy dodano filtrowanie, ale jest to sposób na wykluczenie obiektów blob obiektu, jeśli chcesz tylko pobrać historię / ref-logi:

git clone --filter=blob:none --no-checkout --single-branch --branch master git://some.repo.git .
git log

To jest idealne . Biorąc pod uwagę inne odpowiedzi, byłoby wspaniale, gdyby były w stanie wyróżnić się obok podanej odpowiedzi.
Eric Cousineau,

0

Możesz łatwo uzyskać dziennik zdalnego serwera. Oto jak:

(1) Jeśli używasz git przez ssh - po prostu zaloguj się do zdalnego serwera przy użyciu loginu i hasła git - i chdir zdalny folder, w którym znajduje się twoje repozytorium - i uruchom komendę „git log” w repozytorium na zdalnym serwerze.

(2) Jeśli używasz git za pomocą standardowego protokołu logowania Unixa - po prostu telnet na zdalny serwer i zrób tam log git.

Mam nadzieję że to pomoże.


13
Aby sformułować inaczej: „nie można uzyskać dziennika zdalnego serwera, należy się zalogować i pobrać dziennik za pomocą lokalnego klienta git”
qneill

Po prostu usuń tę odpowiedź, to nie odpowiada na pytanie i nie jest tak, że większość użytkowników git nie ma dostępu do powłoki serwera
nun

0

Oto funkcja bash, która ułatwia przeglądanie dzienników na pilocie. Wymaga dwóch opcjonalnych argumentów. Pierwszy to gałąź , domyślnie master . Drugi to pilot , domyślnie jest to inscenizacja .

git_log_remote() {
  branch=${1:-master}
  remote=${2:-staging}

  git checkout $remote/$branch
  git fetch
  git log
  git checkout -
}

przykłady:

 $ git_log_remote
 $ git_log_remote development origin
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.