Festschreiben des Verlaufs im Remote-Repository


205

Ich versuche, auf den Commit-Verlauf eines Zweigs in einem Remote-Repository zuzugreifen. Ich habe mir das Dokument angesehen , konnte jedoch keine wesentlichen Informationen darüber finden, wie ich mit meinem lokalen Git-Client auf den Commit-Verlauf eines Remote-Repos zugreifen kann.

Antworten:


252
git log remotename/branchname

Zeigt das Protokoll eines bestimmten Remote-Zweigs in diesem Repository an, aber nur die Protokolle, die Sie aus ihrem Repository in Ihre persönliche "Kopie" des Remote-Repositorys "abgerufen" haben.

Denken Sie daran, dass Ihr Klon des Repositorys den Status aller Remote-Zweige nur auf diese Weise aktualisiert git fetch. Sie können keine direkte Verbindung zum Server herstellen, um dort das Protokoll zu überprüfen. Sie müssen lediglich den Status des Servers mit herunterladen git fetchund dann lokal das Protokoll der Remote-Zweige anzeigen.

Vielleicht könnte ein anderer nützlicher Befehl sein:

git log HEAD..remote/branch

Hier werden die Commits angezeigt, die sich in der Remote-Verzweigung befinden, jedoch nicht in Ihrer aktuellen Verzweigung ( HEAD).


8
"Sie können dort keine direkte Verbindung zum Server herstellen, um das Protokoll zu überprüfen" - das war das Problem, das ich hatte
Brian J

1
Ich bekomme nur lokale gezogene Änderungen ... beachte die entfernten, sogar das Abrufen vorher.
Loenix

6
Wenn git fetchSie a ausführen, müssen Sie --allzum Abrufen von Fernbedienungen verwenden.
ocodo

25
Das ist schade, also muss ich Objekte im Wert von 2 GB klonen, um die Commit-Protokolle zu durchsuchen?
TWiStErRob

2
Hallo @TWiStErRob, Sie können Schmerzen lindern, indem Sie die mit einem flachen Klon abgerufene Datenmenge verwalten (siehe --depth in git-scm.com/docs/git-clone ) und dann Abrufe mit verwalten (siehe "flach" in git-scm) .com / docs / git-fetch ).
Qneill

65

NB. "origin" wird unten verwendet, um den Upstream eines geklonten Repositorys darzustellen. Ersetzen Sie "origin" durch einen beschreibenden Namen für das Remote-Repo. "Remote-Referenz" kann dasselbe Format verwenden, das im Klonbefehl verwendet wird.

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

2
@ user1795998 Die Git-URL des Remote-Repositorys, z. B.git://git.somedomain.tld/some/repo
gertvdijk

1
Müssen Sie <refspec>beim Abrufen (oder Verwenden fetch --all) nicht angeben , ob Sie keinen Zweig auf der Fernbedienung verfolgen?
Gertvdijk

1
Was meinst du mit "Projektanbieter / Diag"? Ist das ein Ordner im Repository? Ein anderer Zweig?
LopSae

1
Ein Repository kann mehrere Zweige haben, aber "Projekt" ist kein Begriff, der sich auf Git bezieht. Daher ist die Verwirrung darüber, was ein "Projekt" in diesem Fall bedeutet. Was hätte das mit der Frage zu tun?
LopSae

1
Ich glaube nicht, dass dies in GIT möglich ist. Sie müssen dieses Remote-Repository klonen, bevor Sie ein Git-Protokoll dafür erstellen können.
user959690

12

Sie können das Protokoll nur in einem lokalen Repository anzeigen. Dies kann jedoch die abgerufenen Zweige aller von Ihnen eingerichteten Fernbedienungen enthalten.

Also, wenn Sie ein Repo klonen ...

git clone git@gitserver:folder/repo.git

Dies wird standardmäßig auf origin/master.

Sie können diesem Repo eine andere Fernbedienung hinzufügen, als originwir hinzufügen möchten production. Aus dem lokalen Klonordner:

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

Wenn wir jemals das Protokoll von sehen productionwollen, müssen wir Folgendes tun:

git fetch --all 

Dies wird von ALLEN Fernbedienungen abgerufen (Standardabruf ohne --allwürde nur von abrufen origin)

Nach dem Abrufen können wir uns das Protokoll auf der productionFernbedienung ansehen. Sie müssen auch den Zweig angeben.

git log production/master

Alle Optionen funktionieren wie bei der Anmeldung bei lokalen Zweigstellen.


12

Eine schnelle Möglichkeit, dies zu tun, besteht darin, mit dem --bareSchlüsselwort zu klonen und dann das Protokoll zu überprüfen:

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

11

Ich glaube nicht, dass das möglich ist. Ich glaube, Sie müssen dieses Remote-Repo lokal klonen und ausführen git fetch, bevor Sie ein dagegen ausstellen git logkönnen.


1
Stellen Sie sich vor, Sie klonen das Repo bereits auf local und nehmen einige Änderungen vor. . dann möchten Sie überprüfen, ob sich jemand für das Remote-Repo entschieden hat
Chhorn Elit

2
Wenn Sie diese Antwort in "Es ist nicht möglich" ändern, ist dies die beste Antwort. Es gibt keine Möglichkeit, mit einem Remote-Git-Client auf den Commit-Verlauf eines Remote-Repos zuzugreifen.
Qneill


2

Ich bin nicht sicher, wann die Filterung hinzugefügt wurde, aber es ist eine Möglichkeit, die Objekt-Blobs auszuschließen, wenn Sie nur den Verlauf / die Ref-Protokolle abrufen möchten:

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

Das ist perfekt . Angesichts der anderen Antworten wäre es fantastisch, wenn dies neben der bereitgestellten Antwort hervorstechen könnte.
Eric Cousineau

0

Sie können das Protokoll des Remote-Servers problemlos abrufen. Hier ist wie:

(1) Wenn Sie git über ssh verwenden - melden Sie sich einfach mit Ihrem git-Login und -Kennwort beim Remote-Server an - und chdir den Remote-Ordner, in dem Ihr Repository vorhanden ist - und führen Sie den Befehl "git log" in Ihrem Repository auf dem Remote-Server aus.

(2) Wenn Sie Git über das Standard-Anmeldeprotokoll von Unix verwenden, telneten Sie einfach mit Ihrem Remote-Server und führen Sie dort ein Git-Protokoll durch.

Hoffe das hilft.


13
Um neu zu formulieren: "Sie können kein Protokoll eines Remote-Servers erhalten, Sie müssen sich anmelden und das Protokoll mit einem lokalen Git-Client
abrufen

Löschen Sie einfach diese Antwort, sie beantwortet die Frage nicht und es ist nicht so, dass die meisten Git-Benutzer keinen Server-Shell-Zugriff haben
am

0

Hier ist eine Bash-Funktion, mit der Sie die Protokolle auf einer Fernbedienung einfach anzeigen können. Es werden zwei optionale Argumente benötigt. Der erste ist der Zweig , der standardmäßig gemastert wird . Die zweite ist die Fernbedienung , wird standardmäßig Inszenierung .

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

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

Beispiele:

 $ git_log_remote
 $ git_log_remote development origin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.