Uzak depoda işlem geçmişi


206

Uzak bir depoda bir şubenin işlem geçmişine erişmeye çalışıyorum. Ben bir göz vardı doc ama benim yerel git istemcisi kullanarak tarihini işlemek uzak repo erişmek için nasıl kayda değer bir bilgi bulamadık.

Yanıtlar:


252
git log remotename/branchname

Bu depodaki belirli bir uzak dalın günlüğünü görüntüler, ancak yalnızca depolarından uzak deponun kişisel "kopyasına" "getirdiğiniz" günlükleri görüntüler.

Depo klonunuzun, uzak dallardaki durumunu yalnızca yaparak güncelleyeceğini unutmayın git fetch. Buradaki günlüğü kontrol etmek için doğrudan sunucuya bağlanamazsınız, yaptığınız şey sunucunun durumunu indirip git fetchuzak dalların günlüğünü yerel olarak görmek.

Belki başka bir yararlı komut şunlar olabilir:

git log HEAD..remote/branch

bu size uzak dalda olan ancak geçerli dalınızda ( HEAD) olmayan taahhütleri gösterir .


8
"Oradaki günlüğü kontrol etmek için doğrudan sunucuya bağlanamazsınız" - yaşadığım sorun
Brian J

1
Sadece yerel değişiklikler alıyorum ... uzak olanları not et, hatta daha önce getir.
Loenix

6
Bir yaparken uzaktan kumandalardan almak git fetchiçin kullanmanız gerekir --all.
ocodo

25
Bu çok kötü, bu yüzden sadece taahhüt günlüklerine bakmak için 2GB değerinde nesneleri klonlamak zorundayım?
TWiStErRob

2
Merhaba @TWiStErRob sığ bir klonla getirilen veri miktarını yöneterek ağrıyı azaltabilirsiniz (git-scm.com/docs/git-clone'da derinliğe bakınız ), sonra git- scm'de "sığ" a bakın .com / docs / git-fetch ).
qneill

66

NB. Aşağıdaki "orijin", klonlanmış bir deponun yukarı akışını temsil etmek için kullanılır, "orijin" yi uzak repo için açıklayıcı bir adla değiştirin. "uzaktan başvuru" klon komutunda kullanılan biçimi kullanabilir.

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

2
@ user1795998 Uzak depo Git URL'si, ör.git://git.somedomain.tld/some/repo
gertvdijk

1
Uzaktan kumandadaki bir dalı izlemiyorsanız <refspec>getirirken (veya kullanırken fetch --all) belirtmeniz gerekmez mi?
gertvdijk

1
"Proje satıcısı / diag" ile ne demek istiyorsun? Havuzun içindeki bir klasör mü? Başka bir dal mı?
LopSae

1
Bir havuzun birden fazla şubesi olabilir, ancak "proje" git ile ilgili bir terim değildir, oradan bir "proje" nin bu durumda ne anlama geldiği konusunda kafa karışıklığı vardır. Yine de, bunun soru ile ne ilgisi var?
LopSae

1
Bunu GIT'de yapmanın mümkün olduğuna inanmıyorum. Bir git günlüğü verebilmeniz için önce bu uzak deponun klonlanması gerekir.
user959690

12

Günlüğü yalnızca yerel bir depoda görüntüleyebilirsiniz, ancak bu, ayarladığınız tüm uzaktan kumandaların getirilen dallarını içerebilir.

Bir repoyu klonlarsan ...

git clone git@gitserver:folder/repo.git

Bu varsayılan olarak ayarlanacaktır origin/master.

Bu repoya ekleyelim dışında bir uzaktan kumanda originekleyebilirsiniz production. Yerel klon klasörü içinden:

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

Günlüğü görmek productionistersek yapmamız gerekecek:

git fetch --all 

Bu TÜM uzaktan kumandalardan getirilir (olmadan varsayılan --allgetirme sadece getirilir origin)

Getirdikten sonra productionuzaktan kumandadaki günlüğe bakabiliriz , dalı da belirtmeniz gerekir.

git log production/master

Tüm seçenekler yerel şubelerde oturum açtıkça çalışacaktır.


12

Bunu yapmanın hızlı bir yolu, --bareanahtar kelimeyi kullanarak klonlamak ve daha sonra günlüğü kontrol etmektir:

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

11

Bunun mümkün olduğuna inanmıyorum. Bu uzak repoyu yerel olarak klonlamanız ve git fetchbuna git logkarşı çıkmadan önce gerçekleştirmeniz gerektiğine inanıyorum .


1
repoyu yerel olarak zaten klonladığını ve bazı değişiklikler yaptığını hayal et. . o zaman kimsenin uzak
repoda

2
Bu cevabı "Mümkün değil" olarak değiştirirseniz, bu en iyi cevaptır. Uzak git istemcisini kullanarak uzak bir repo'nun işlem geçmişine erişmenin bir yolu yoktur.
qneill


2

Filtreleme eklendiğinde emin değilim, ancak yalnızca geçmiş / ref-günlüklerini almak istiyorsanız nesne bloblarını hariç tutmanın bir yolu var:

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

Bu mükemmel . Diğer cevaplar göz önüne alındığında, bunun verilen cevabın yanında öne çıkması harika olurdu.
Eric Cousineau

0

Uzak sunucunun günlüğünü kolayca alabilirsiniz. Bunu nasıl yapacağınız aşağıda açıklanmıştır:

(1) git ssh ile kullanılıyorsa - git girişinizi ve şifrenizi kullanarak uzak sunucuya giriş yapın ve deponuzun bulunduğu uzak klasörü yönlendirin ve uzak sunucudaki deponuzun içindeki "git log" komutunu çalıştırın.

(2) Git'i Unix'in standart giriş protokolü üzerinden kullanıyorsanız, o zaman uzak sunucunuza telnet yapın ve oraya bir git günlüğü yapın.

Bu yardımcı olur umarım.


13
Yeniden ifade etmek için, "uzak bir sunucunun günlüğünü alamıyorsunuz, yerel bir git istemcisini kullanarak oturum açmanız ve günlüğü almanız gerekiyor"
qneill

Sadece bu cevabı silin, soruyu cevaplamıyor ve çoğu git kullanıcısının sunucu kabuğu erişimine sahip olmadığı değil
nhed

0

İşte bir uzaktan kumandadaki günlükleri görüntülemeyi kolaylaştıran bir bash işlevi. İki isteğe bağlı argüman alır. Birincisi şube , varsayılan olarak master . İkincisi uzaktan kumanda , varsayılan olarak evreleme .

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

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

örnekler:

 $ git_log_remote
 $ git_log_remote development origin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.