Effettua il commit della cronologia sul repository remoto


206

Sto cercando di accedere alla cronologia di commit di una filiale su un repository remoto. Ho dato un'occhiata al documento ma non sono riuscito a trovare informazioni sostanziali su come accedere alla cronologia di commit di un repository remoto utilizzando il mio client git locale.

Risposte:


252
git log remotename/branchname

Visualizzerà il registro di un determinato ramo remoto in quel repository, ma solo i registri che hai "recuperato" dal loro repository nella tua "copia" personale del repository remoto.

Ricorda che il tuo clone del repository aggiornerà il suo stato di eventuali rami remoti solo facendo git fetch. Non è possibile connettersi direttamente al server per controllare il registro lì, quello che fai è scaricare lo stato del server git fetche quindi visualizzare localmente il registro dei rami remoti.

Forse un altro comando utile potrebbe essere:

git log HEAD..remote/branch

che ti mostrerà i commit che si trovano nel ramo remoto, ma non nel ramo corrente ( HEAD).


8
"Non è possibile connettersi direttamente al server per controllare il registro lì" - quello era il problema che stavo avendo
Brian J

1
Ricevo solo modifiche locali estratte ... nota quelle remote, anche prima facendo il recupero.
Loenix,

6
Quando lo fai git fetchdevi usare --allper recuperare dai telecomandi.
Ocodo,

25
È un peccato, quindi devo clonare oggetti da 2 GB solo per esaminare i log di commit?
TWiStErRob

2
Ciao @TWiStErRob puoi mitigare il dolore gestendo la quantità di dati recuperati con un clone superficiale (vedi --depth in git-scm.com/docs/git-clone ), quindi gestisci i recuperi con (vedi "shallow" in git-scm .com / docs / git-fetch ).
qneill,

66

NB. "origin" di seguito utilizza per rappresentare l'upstream di un repository clonato, sostituisce "origin" con un nome descrittivo per il repository remoto. "riferimento remoto" può usare lo stesso formato usato nel comando clone.

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

2
@ user1795998 L'URL Git del repository remoto, ad es.git://git.somedomain.tld/some/repo
gertvdijk

1
Non è necessario specificare <refspec>durante il recupero (o l'uso fetch --all) se non si sta monitorando alcun ramo sul telecomando?
gertvdijk,

1
Cosa intendi con "fornitore di progetti / diag"? È una cartella all'interno del repository? Un altro ramo?
LopSae,

1
Un repository può avere più rami, ma "progetto" non è un termine correlato a git, da qui la confusione sul significato di "progetto" in questo caso. Tuttavia, cosa avrebbe a che fare con la domanda?
LopSae,

1
Non credo sia possibile farlo in GIT. È necessario clonare quel repository remoto prima di poter emettere un registro git su di esso.
user959690,

12

Puoi solo visualizzare il registro su un repository locale, tuttavia ciò può includere i rami recuperati di tutti i telecomandi che hai impostato.

Quindi, se cloni un repository ...

git clone git@gitserver:folder/repo.git

L'impostazione predefinita è origin/master .

È possibile aggiungere un telecomando a questo repository, oltre a originaggiungere production. Dall'interno della cartella del clone locale:

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

Se mai vogliamo vedere il registro di productiondovremo fare:

git fetch --all 

Questo recupera da TUTTI i telecomandi (il recupero predefinito senza --allrecupererebbe solo daorigin )

Dopo il recupero possiamo guardare il registro sul productiontelecomando, dovrai specificare anche il ramo.

git log production/master

Tutte le opzioni funzioneranno come fanno con i log nelle filiali locali.


12

Un modo rapido per farlo è clonare usando la --bareparola chiave e quindi controllare il registro:

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

11

Non credo sia possibile. Credo che devi clonare quel repository remoto localmente ed eseguire git fetchsu di esso prima di poter emettere un git logcontro di esso.


1
immagina di aver già clonato il repository su local e di apportare alcune modifiche. . quindi vuoi verificare se qualcuno si è impegnato nel repository remoto
Chhorn Elit il

2
Se cambi questa risposta in "Non è possibile", questa è la risposta migliore. Non è possibile accedere alla cronologia di commit di un repository remoto utilizzando un client git remoto.
qneill


2

Non sono sicuro quando è stato aggiunto il filtro, ma è un modo per escludere i BLOB di oggetti se si desidera solo recuperare la cronologia / i registri di riferimento:

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

Questo è perfetto . Date le altre risposte, sarebbe fantastico se questo fosse in grado di distinguersi accanto alla risposta fornita.
Eric Cousineau il

0

È possibile ottenere facilmente il registro del server remoto. Ecco come:

(1) Se si utilizza git tramite ssh, è sufficiente accedere al server remoto utilizzando login e password git, quindi chdir la cartella remota in cui esiste il repository ed eseguire il comando "git log" all'interno del repository sul server remoto.

(2) Se si utilizza git tramite il protocollo di accesso standard di Unix, quindi semplicemente telnet sul server remoto e fare un registro git lì.

Spero che questo ti aiuti.


13
Per riformulare "non è possibile ottenere un registro di un server remoto, è necessario accedere e ottenere il registro utilizzando un client git locale"
qneill

Basta eliminare questa risposta, non risponde alla domanda e non è come la maggior parte degli utenti git non abbia accesso alla shell del server
nhed

0

Ecco una funzione bash che semplifica la visualizzazione dei log su un telecomando. Sono necessari due argomenti opzionali. Il primo è il ramo , il cui valore predefinito è master . Il secondo è il telecomando , per impostazione predefinita è la stadiazione .

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

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

esempi:

 $ git_log_remote
 $ git_log_remote development origin
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.