Czy próbowałeś użyć 'git log -n 1', gdy sprawdzałeś tę konkretną gałąź?
Rick van Bodegraven
git log podaje hash repozytoriów lokalnych, ale repozytorium git hub ma nowy hash.
mbdvg
1
git log -n 1 [branch_name]nazwa_gałęzi (może być oddziałem zdalnym lub lokalnym) jest opcjonalna. Bez nazwa_gałęzi pokaże najnowsze zatwierdzenie aktualnej gałęzi.
Uwaga: nie musi to być git://adres URL. Mógłby być https://albo [email protected]:też.
Pierwotnie miało to na celu znalezienie ostatniego zatwierdzenia zdalnej gałęzi (nie tylko z ostatniego pobrania, ale aktualnego ostatniego zatwierdzenia w gałęzi w zdalnym repozytorium). Jeśli potrzebujesz skrótu zatwierdzenia dla czegoś lokalnego, najlepszą odpowiedzią jest:
git rev-parse branch-name
To szybkie, łatwe i jedno polecenie. Jeśli potrzebujesz skrótu zatwierdzenia dla bieżącej gałęzi, możesz spojrzeć na HEAD:
@betoharres OP początkowo próbował określić zatwierdzenie w zdalnym repozytorium (nie w tym, co mamy refs/remotes, ale w rzeczywistym repozytorium zdalnym). git rev-parse branch-nameto zdecydowanie droga do lokalnego oddziału.
John Szakmeister
Działa to tylko w polu, git svnponieważ git svn fetchzmienia dane git logwyjściowe, więc git lognie można już go używać do uzyskania ostatniego skrótu zatwierdzenia repozytorium zdalnego git.
Andry,
@Andry Nie jestem pewien, co masz na myśli ... Mam problem ze zrozumieniem Twojego komentarza. Czy możesz to bardziej wyjaśnić?
John Szakmeister
141
git log -n 1 [branch_name]
branch_name(może to być oddział zdalny lub lokalny) jest opcjonalny. Bez branch_nametego pokaże najnowsze zatwierdzenie w bieżącej gałęzi.
Na przykład:
git log -n 1
git log -n 1 origin/master
git log -n 1 some_local_branch
git log -n 1 --pretty=format:"%H" #To get only hash value of commit
Świetnie, dodałem to do mojego .gitconfig, aby po prostu skopiować ostatnią zmianę za pomocą git hash | pbcopy clip `` [alias] hash = "! F () {\ git log -n 1 --pretty = format:"% H "; \}; f "` ``
Spodnie
2
Spróbuj użyć git log -n 1po wykonaniu git checkout branchname. Pokazuje skrót zatwierdzenia, autora, datę i komunikat o zatwierdzeniu dla ostatniego zatwierdzenia.
Wykonaj git pull origin/branchnamepierwszy, aby upewnić się, że lokalne repozytorium jest zgodne z wcześniejszym.
Jeśli być może chcesz zobaczyć tylko listę zatwierdzeń, które znajduje się za twoim lokalnym oddziałem w zdalnym oddziale, wykonaj następujące czynności:
moim wymaganiem jest sprawdzenie, czy lokalne repozytoria i repozytoria github są takie same, czy nie, jak możemy to zrobić?
mbdvg
O ile wiem, nie ma możliwości, aby skróty zatwierdzeń różniły się między repozytoriami lokalnymi i zdalnymi dla tych samych zatwierdzeń. Czy może chodziło Ci o listę zatwierdzeń, których brakuje w twoim lokalnym repozytorium w porównaniu z repozytorium zdalnym?
Rick van Bodegraven
Tak, Rick van, jest niedopasowanie, więc chcę pokazać, że istnieje różnica w repozytorium lokalnym i github, więc potrzebuję sposobu, aby się dowiedzieć
mbdvg
2
możesz git fetch nameofremoterepowięcgit log
i osobiście nazywam gitlogsię git log --graph --oneline --pretty --decorate --all. wypróbuj i zobacz, czy Ci pasuje
--onlinejest skrótem dla --pretty=oneline --abbrev-commit. Ale ty też używasz --pretty, co powraca --pretty=oneline... Polecam git log --graph --abbrev-commit --decorate --allzamiast tego.
Felix Kling
Fajne. Nie zauważyłem tego. Dzięki!
nglinh
0
W komentarzu, który napisałeś
chcę pokazać, że istnieje różnica w repozytorium lokalnym i github
Jak już wspomniano w innej odpowiedzi, powinieneś zrobić git fetch originpierwszy. Następnie, jeśli zdalny jest przed bieżącą gałęzią, możesz wyświetlić listę wszystkich zatwierdzeń między lokalnym oddziałem a zdalnym za pomocą
git log master..origin/master --stat
Jeśli Twój lokalny oddział jest przed nami:
git log origin/master..master --stat
--stat pokazuje również listę zmienionych plików.
Jeśli chcesz jawnie wymienić dodatki i usunięcia, użyj git diff:
Zauważ, że gdy używasz opcji "git log -n 1 [nazwa_gałęzi]". -n zwraca tylko jedną linię dziennika, ale kolejność, w jakiej jest zwracana, nie jest gwarantowana. Poniżej znajduje się wyciąg ze strony podręcznika git-log
.....
.....
Commit Limiting
Besides specifying a range of commits that should be listed using the special notations explained in the description, additional commit limiting may be applied.
Using more options generally further limits the output (e.g. --since=<date1> limits to commits newer than <date1>, and using it with --grep=<pattern> further limits to commits whose log message has a line that matches <pattern>), unless otherwise noted.
Note that these are applied before commit ordering and formatting options, such as --reverse.
-<number>
-n <number>
.....
.....
git log -n 1 [branch_name]
nazwa_gałęzi (może być oddziałem zdalnym lub lokalnym) jest opcjonalna. Bez nazwa_gałęzi pokaże najnowsze zatwierdzenie aktualnej gałęzi.Odpowiedzi:
Użyj
git ls-remote git://github.com/<user>/<project>.git
. Na przykład mój projekt trac-backlog podaje:Po prostu grep dla tego, którego potrzebujesz i wytnij go:
Lub możesz określić, które referencje chcesz w linii poleceń i uniknąć grep za pomocą:
Uwaga: nie musi to być
git://
adres URL. Mógłby byćhttps://
albo[email protected]:
też.Pierwotnie miało to na celu znalezienie ostatniego zatwierdzenia zdalnej gałęzi (nie tylko z ostatniego pobrania, ale aktualnego ostatniego zatwierdzenia w gałęzi w zdalnym repozytorium). Jeśli potrzebujesz skrótu zatwierdzenia dla czegoś lokalnego, najlepszą odpowiedzią jest:
To szybkie, łatwe i jedno polecenie. Jeśli potrzebujesz skrótu zatwierdzenia dla bieżącej gałęzi, możesz spojrzeć na HEAD:
źródło
git rev-parse my_branch_name
LUBgit log -n 1 my_branch_name | grep commit | awk '{ print $2 }'
prostsza odpowiedź; zwróci tylko ostatnią wartość skrótu zatwierdzeniamy_branch_name
refs/remotes
, ale w rzeczywistym repozytorium zdalnym).git rev-parse branch-name
to zdecydowanie droga do lokalnego oddziału.git svn
ponieważgit svn fetch
zmienia danegit log
wyjściowe, więcgit log
nie można już go używać do uzyskania ostatniego skrótu zatwierdzenia repozytorium zdalnego git.branch_name
(może to być oddział zdalny lub lokalny) jest opcjonalny. Bezbranch_name
tego pokaże najnowsze zatwierdzenie w bieżącej gałęzi.Na przykład:
źródło
git hash | pbcopy clip
`` [alias] hash = "! F () {\ git log -n 1 --pretty = format:"% H "; \}; f "` ``Spróbuj użyć
git log -n 1
po wykonaniugit checkout branchname
. Pokazuje skrót zatwierdzenia, autora, datę i komunikat o zatwierdzeniu dla ostatniego zatwierdzenia.Wykonaj
git pull origin/branchname
pierwszy, aby upewnić się, że lokalne repozytorium jest zgodne z wcześniejszym.Jeśli być może chcesz zobaczyć tylko listę zatwierdzeń, które znajduje się za twoim lokalnym oddziałem w zdalnym oddziale, wykonaj następujące czynności:
Spowoduje to wyświetlenie wszystkich skrótów zatwierdzeń, których jeszcze nie scaliłeś z lokalnym oddziałem.
źródło
możesz
git fetch nameofremoterepo
więcgit log
i osobiście nazywam
gitlog
sięgit log --graph --oneline --pretty --decorate --all
. wypróbuj i zobacz, czy Ci pasujeźródło
--online
jest skrótem dla--pretty=oneline --abbrev-commit
. Ale ty też używasz--pretty
, co powraca--pretty=oneline
... Polecamgit log --graph --abbrev-commit --decorate --all
zamiast tego.W komentarzu, który napisałeś
Jak już wspomniano w innej odpowiedzi, powinieneś zrobić
git fetch origin
pierwszy. Następnie, jeśli zdalny jest przed bieżącą gałęzią, możesz wyświetlić listę wszystkich zatwierdzeń między lokalnym oddziałem a zdalnym za pomocąJeśli Twój lokalny oddział jest przed nami:
--stat
pokazuje również listę zmienionych plików.Jeśli chcesz jawnie wymienić dodatki i usunięcia, użyj
git diff
:źródło
Zauważ, że gdy używasz opcji "git log -n 1 [nazwa_gałęzi]". -n zwraca tylko jedną linię dziennika, ale kolejność, w jakiej jest zwracana, nie jest gwarantowana. Poniżej znajduje się wyciąg ze strony podręcznika git-log
źródło