Haben Sie versucht, 'git log -n 1' zu verwenden, als Sie diesen bestimmten Zweig ausgecheckt haben?
Rick van Bodegraven
Git-Protokoll gibt lokalen Repositorys Hash, aber Git Hub Repository hat neuen Hash.
mbdvg
1
git log -n 1 [branch_name]branch_name (kann ein entfernter oder lokaler Zweig sein) ist optional. Ohne branch_name wird das letzte Commit des aktuellen Zweigs angezeigt.
Hinweis: Es muss nicht die git://URL sein. Es könnte sein https://oder [email protected]:auch.
Ursprünglich war dies darauf ausgerichtet, das letzte Commit eines Remote-Zweigs herauszufinden (nicht nur aus Ihrem letzten Abruf, sondern auch aus dem tatsächlich letzten Commit in dem Zweig im Remote-Repository). Wenn Sie den Commit-Hash für etwas vor Ort benötigen, lautet die beste Antwort:
git rev-parse branch-name
Es ist schnell, einfach und ein einziger Befehl. Wenn Sie den Commit-Hash für den aktuellen Zweig möchten, können Sie sich HEAD ansehen:
git rev-parse my_branch_nameODER git log -n 1 my_branch_name | grep commit | awk '{ print $2 }'einfachere Antwort; wird nur den letzten Commit-Hash vonmy_branch_name
betoharres
@betoharres Das OP hat ursprünglich versucht, das Commit für ein Remote-Repository zu ermitteln (nicht das, was wir haben refs/remotes, sondern das tatsächliche Remote-Repo). git rev-parse branch-nameist definitiv der richtige Weg für eine lokale Niederlassung.
John Szakmeister
Dies funktioniert nur im Feld von, git svnweil git svn fetchdie git logAusgabe geändert wird und daher git lognicht mehr verwendet werden kann, um den letzten Remote- Git-Repository-Commit-Hash abzurufen.
Andry
@ Andy Ich bin mir nicht sicher, was du meinst ... Ich habe Probleme, deinem Kommentar zu folgen. Kannst du mehr erklären?
John Szakmeister
138
git log -n 1 [branch_name]
branch_name(kann eine entfernte oder lokale Zweigstelle sein) ist optional. Ohne branch_namewird das letzte Commit für den aktuellen Zweig angezeigt.
Zum Beispiel:
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
Holen Sie sich einen kurzen Hash: 'git rev-parse --short --verify my_branch' aus einer ähnlichen Frage: stackoverflow.com/a/949391/134761
angularsen
Schön, ich habe dies zu meiner .gitconfig hinzugefügt, damit ich das letzte Commit einfach mit git hash | pbcopy clip `` `[alias] hash ="! F () {\ git log -n 1 --pretty = format: "% H" kopieren kann; \}; f "` ``
Hose
2
Versuchen Sie es git log -n 1nach a git checkout branchname. Hier werden der Commit-Hash, der Autor, das Datum und die Commit-Nachricht für das letzte Commit angezeigt.
Führen Sie eine git pull origin/branchnameerste Aktion durch , um sicherzustellen, dass Ihr lokales Repo mit dem Upstream übereinstimmt.
Wenn Sie möglicherweise nur eine Liste der Commits anzeigen möchten, hinter denen sich Ihre lokale Niederlassung in der Remote-Niederlassung befindet, gehen Sie wie folgt vor:
Meine Anforderung besteht darin, zu überprüfen, ob lokale Repositorys und Commit-Hashs für Github-Repositorys gleich sind oder nicht. Wie können wir dies tun?
mbdvg
Soweit ich weiß, können sich die Commit-Hashes für dieselben Commits auf keinen Fall zwischen Ihren lokalen und Ihren Remote-Repos unterscheiden. Meinten Sie vielleicht eine Liste der Commits, die in Ihrem lokalen Repository im Vergleich zum Remote-Repository fehlen?
Rick van Bodegraven
Ja, Rick van, es gibt ein Missverhältnis, also möchte ich zeigen, dass es einen Unterschied zwischen lokalem und Github-Repo gibt. Ich brauche also einen Weg, dies herauszufinden
mbdvg
2
Sie können git fetch nameofremoterepodanngit log
und persönlich ich alias gitlogzu git log --graph --oneline --pretty --decorate --all. Probieren Sie es aus und sehen Sie, ob es zu Ihnen passt
--onlineist eine Abkürzung für --pretty=oneline --abbrev-commit. Aber Sie verwenden --prettyauch, was zurückkehrt --pretty=oneline... Ich würde git log --graph --abbrev-commit --decorate --allstattdessen empfehlen .
Felix Kling
Cool. Das habe ich nicht bemerkt. Vielen Dank!
Nglinh
0
In einem Kommentar, den Sie geschrieben haben
Ich möchte zeigen, dass es einen Unterschied zwischen lokalem und Github-Repo gibt
Wie bereits in einer anderen Antwort erwähnt, sollten Sie git fetch originzuerst eine machen. Wenn sich die Fernbedienung vor Ihrer aktuellen Zweigstelle befindet, können Sie alle Commits zwischen Ihrer lokalen Zweigstelle und der Fernbedienung mit auflisten
git log master..origin/master --stat
Wenn Ihre lokale Niederlassung voraus ist:
git log origin/master..master --stat
--stat zeigt auch eine Liste der geänderten Dateien.
Wenn Sie die Hinzufügungen und Löschungen explizit auflisten möchten, verwenden Sie git diff:
Beachten Sie, dass bei Verwendung der Option "git log -n 1 [branch_name]". -n gibt nur eine Protokollzeile zurück, aber die Reihenfolge, in der diese zurückgegeben wird, kann nicht garantiert werden. Es folgt ein Auszug aus der git-log-Manpage
.....
.....
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]
branch_name (kann ein entfernter oder lokaler Zweig sein) ist optional. Ohne branch_name wird das letzte Commit des aktuellen Zweigs angezeigt.Antworten:
Verwenden Sie
git ls-remote git://github.com/<user>/<project>.git
. Zum Beispiel gibt mein Trac-Backlog-Projekt Folgendes:Greifen Sie einfach nach dem, den Sie brauchen, und schneiden Sie es aus:
Oder Sie können in der Befehlszeile angeben, welche Refs Sie möchten, und das grep vermeiden mit:
Hinweis: Es muss nicht die
git://
URL sein. Es könnte seinhttps://
oder[email protected]:
auch.Ursprünglich war dies darauf ausgerichtet, das letzte Commit eines Remote-Zweigs herauszufinden (nicht nur aus Ihrem letzten Abruf, sondern auch aus dem tatsächlich letzten Commit in dem Zweig im Remote-Repository). Wenn Sie den Commit-Hash für etwas vor Ort benötigen, lautet die beste Antwort:
Es ist schnell, einfach und ein einziger Befehl. Wenn Sie den Commit-Hash für den aktuellen Zweig möchten, können Sie sich HEAD ansehen:
quelle
git rev-parse my_branch_name
ODERgit log -n 1 my_branch_name | grep commit | awk '{ print $2 }'
einfachere Antwort; wird nur den letzten Commit-Hash vonmy_branch_name
refs/remotes
, sondern das tatsächliche Remote-Repo).git rev-parse branch-name
ist definitiv der richtige Weg für eine lokale Niederlassung.git svn
weilgit svn fetch
diegit log
Ausgabe geändert wird und dahergit log
nicht mehr verwendet werden kann, um den letzten Remote- Git-Repository-Commit-Hash abzurufen.branch_name
(kann eine entfernte oder lokale Zweigstelle sein) ist optional. Ohnebranch_name
wird das letzte Commit für den aktuellen Zweig angezeigt.Zum Beispiel:
quelle
git hash | pbcopy clip
`` `[alias] hash ="! F () {\ git log -n 1 --pretty = format: "% H" kopieren kann; \}; f "` ``Versuchen Sie es
git log -n 1
nach agit checkout branchname
. Hier werden der Commit-Hash, der Autor, das Datum und die Commit-Nachricht für das letzte Commit angezeigt.Führen Sie eine
git pull origin/branchname
erste Aktion durch , um sicherzustellen, dass Ihr lokales Repo mit dem Upstream übereinstimmt.Wenn Sie möglicherweise nur eine Liste der Commits anzeigen möchten, hinter denen sich Ihre lokale Niederlassung in der Remote-Niederlassung befindet, gehen Sie wie folgt vor:
Dadurch werden alle Hashes der Commits aufgelistet, die Sie noch nicht in Ihrer lokalen Niederlassung zusammengeführt haben.
quelle
Sie können
git fetch nameofremoterepo
danngit log
und persönlich ich alias
gitlog
zugit log --graph --oneline --pretty --decorate --all
. Probieren Sie es aus und sehen Sie, ob es zu Ihnen passtquelle
--online
ist eine Abkürzung für--pretty=oneline --abbrev-commit
. Aber Sie verwenden--pretty
auch, was zurückkehrt--pretty=oneline
... Ich würdegit log --graph --abbrev-commit --decorate --all
stattdessen empfehlen .In einem Kommentar, den Sie geschrieben haben
Wie bereits in einer anderen Antwort erwähnt, sollten Sie
git fetch origin
zuerst eine machen. Wenn sich die Fernbedienung vor Ihrer aktuellen Zweigstelle befindet, können Sie alle Commits zwischen Ihrer lokalen Zweigstelle und der Fernbedienung mit auflistenWenn Ihre lokale Niederlassung voraus ist:
--stat
zeigt auch eine Liste der geänderten Dateien.Wenn Sie die Hinzufügungen und Löschungen explizit auflisten möchten, verwenden Sie
git diff
:quelle
Beachten Sie, dass bei Verwendung der Option "git log -n 1 [branch_name]". -n gibt nur eine Protokollzeile zurück, aber die Reihenfolge, in der diese zurückgegeben wird, kann nicht garantiert werden. Es folgt ein Auszug aus der git-log-Manpage
quelle