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.

user1795998
quelle

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).

LopSae
quelle
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
Michael Hasan
quelle
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.

ocodo
quelle
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
Davvs
quelle
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.

user959690
quelle
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
Dampfer25
quelle
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.

Naligator
quelle
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
Brandon Howard
quelle