Ich suche nach einer Möglichkeit, einen Git-Server nach seinen Logs für einen bestimmten Bereich von Commits abzufragen. Da ich ein SVN-Benutzer bin, bin ich in der falschen Denkweise und hoffe daher, dass GIT-Experten helfen können. Ich suche etwas Ähnliches wie:
%Vor%aber für einen Git-Server. Mit anderen Worten, zeigen Sie mir die Logs für den 5. Commit bis zum 20. Commit. Danke für jede Hilfe.
Erstens, da es keine einfache Revisionsnummer mit Git gibt, würden Sie die Revision angeben, wie in Befehl rev-parse
Aber der einzige Befehl, der direkt einen Remote-Repo abfragt (ohne Daten zu klonen oder zu holen) ist git ls-remote
und:
Da das Protokoll Diffstats und Full Diffs anzeigen kann, können Sie nicht nach Protokollen fragen, ohne mindestens einen Remote in einem lokalen Repo zu holen.
Ich denke, du versuchst, einige Annahmen von Subversion zu übertragen, die nicht für Git gelten. Git ist ein dezentrales Versionskontrollsystem, also laufen alle Befehle gegen Ihren lokalen Klon des Repository, nicht gegen einen entfernten Server. Außerdem gibt es in git keinen einzigen linearen Verlauf von Commits, daher müssen Sie SHA-1-Commit-IDs angeben. Sie können nicht einfach Revisionsnummern verwenden.
Um ein Protokoll zu erhalten, müssen Sie die Commits zuerst an Ihren lokalen Klon des Repositorys übertragen und dann können Sie sie abfragen.
Wenn Sie das Remote-Repository noch nicht geklont haben, müssen Sie git clone REMOTE_URL
ausführen. Wenn Sie einen sekundären Remote-Server verwenden möchten, können Sie alternativ git remote add ALIAS OTHER_REMOTE_URL
in einem vorhandenen Repository ausführen.
Sie müssen dann die Commits mit git fetch origin
(oder git fetch ALIAS
, wenn Sie einen sekundären Remote-Server hinzugefügt haben) holen.
Sobald Sie das erledigt haben, können Sie Commits (für Zweige im Remote-Repository) mit git log origin/master~5..origin/master
auflisten (um beispielsweise die letzten fünf Commits anzuzeigen). Oder Sie können git log master..origin/master
ausführen, um die neuen Remote-Commits anzuzeigen, die noch nicht lokal zusammengeführt wurden. (Es gibt viele andere Möglichkeiten, Commit-Bereiche anzugeben. Weitere Informationen finden Sie in Dokumentation oder öffne eine andere Frage.)
git ls-remote
werden für einen Remote-Server ausgeführt, die meisten nicht.