Bir Github deposundaki en eski işleme nasıl gidebilirim?


152

GitHub'da, büyük bir açık kaynak projesinin en eski taahhüdüne gitmenin kolay bir yolu var mı?

Projenin bugün itibariyle 13.000'den fazla taahhüdü bulunmaktadır. İlk işleme (veya ilk işleme) ulaşmak için işlem geçmişi sayfasındaki "Eski" düğmesine yüzlerce ve yüzlerce kez basmak istemiyorum.


2
Bunun yerine yerel olarak gezinmek için veri havuzunu klonlamayı düşündünüz mü?
jub0bs


Analizler / Katkıda Bulunanlar ana dal için yapılan tüm taahhütleri gösterir.
ToolmakerSteve

Yanıtlar:


102

Depoyu klonlayın, komut satırıyla açın ve çalıştırın $ git log --reverse

Bu, işlemleri ters sırada gösterecektir.

Sonra ilk taahhüdün kimliğine (Nesne Adı) sahip olduğunuzda github'da görebilirsiniz ... gibi bir şey ... https://github.com/UserName/Repo/commit/6a5ace7b941120db5d2d50af6321770ddad4779e


16
Basit, makul bir cevap bulmak için ne kadar garip, aşırı karmaşık biz elemek zorunda inanamıyorum. Teşekkürler.
Sammitch

7
Bir tweak, bunu onelinearg git log --reverse --onelineolarak
eklerdim

Windows komut istemini kullanıyorsanız ve Vim (?) İçine çekilmekten kaçınmak istiyorsanız, kullanın git log --reverse --oneline | more. Standart moredavranış, çıkmak için Ctrl + C.
Sinjai

83

Bunu yapmak için belirgin bir kullanıcı arayüzü yoktur, ancak kayıt günlüğünün birinci sayfasına gitmek için doğru URL'yi oluşturmanın bir yolu vardır.

Diyelim ki dotnet / coreclr deposunun ilk taahhüdünü bulmak istiyoruz . Öncelikle depodaki taahhütlerin sayısını not edin: şu anda 16.634'tür. Şimdi işlemlerin listesine gidin ve "Eski" yi bir kez tıklayın . URL şöyle bir şey olacaktır:https://github.com/dotnet/coreclr/commits/master?after=872095a758a3a6191a9798c94a98e8d1e16b2254+34

Parçaya dikkat edin +34. Kaç tane taahhüt atlanır. Bunu sayfa başına 16.634 eksi 1 eksi 35 olarak değiştirin, bu da bize coreclr taahhüt geçmişinin ilk sayfasına götüren bu URL'yi verir .


4
Güzel, bunu yapmak için bir yer imi oluşturdum. github.com/bpceee/oldest
bpceee

Bu, proje taahhüt listesindeki ilk taahhüdü görüntülemek için iyi bir yanıttır.
Bobin

Haha bu, kabul edilen cevapta önerilen yoldan çok daha hızlı ;-)
aderchox

46

Şubat 2015: In GitHub , kolay bir yolu yoktur gezinmek erken büyük bir açık kaynak projesi kesinleştirme?

Evet şimdi var! (Anlamı: repoyu klonlamadan git logve yerel klonlamadan)

Ocak 2017'den beri GitHub'da " Geliştirilmiş suçlama görünümü ile dosya geçmişinde daha hızlı gezinin ".

İster bir regresyonda hata ayıklayın, ister bazı kodların mevcut şekline nasıl geldiğini anlamaya çalışın, belirli bir değişiklikten önce bir dosyanın neye benzediğini görmek istersiniz.
Geliştirilmiş suçlama görünümü ile, dosyanın tüm geçmişini görüntülemeden dosyanızın herhangi bir bölümünün zaman içinde nasıl geliştiğini kolayca görebilirsiniz .

İşte git / git repo'nun (47K + taahhütleri) orijinal en eski taahhüdüne geri dönen bir demo ... üç tıklamayla!

demo git / git

Buradaki hile, ilk (veya çok erken) işlemde bulunma olasılığı yüksek olan bir dosyayı seçmektir README.md.


8
Bu genellikle işe yarar, ancak depo oluşturulduğunda hangi dosyaların var olduğunu bildiğinizi ve kuruluşundan bu yana pek çok kez değişmeyen satırları bulabileceğinizi varsayar.
Wilfred Hughes

1
@WilfredHughes Go için geri gitmek için bu yöntemi kullandım 32.986 taahhüt eğlenceli bir paskalya yumurtası olur ilk taahhüt . Bu durumda, benioku başlangıcına kadar geri gitmedi, bu yüzden Browse filessuçu farklı bir dosyaya basıp açarak işlemi tekrarladım .
andrewarchi

@andrewarchi İyi iş çıkardın. Aslında ilk birkaç taahhüt paskalya yumurtasıdır: stackoverflow.com/a/21981037/6309
VonC

@Schmalzy'nin cevabı daha doğrudan iken bu bir "geçici çözüm" olarak kabul ediyorum.
Jimmy Bosse

@JimmyBosse Bu geçici bir çözüm değildir . Orijinal sorunun cevabıdır. A git logyalnızca (büyük olasılıkla) repoyu yerel olarak klonlarsanız çalışır. Eğer "isterseniz gezinilebilen işlemek yumruk için", bu o demektir.
VonC

37

Nodejs projesinin en eski taahhütlerinden birini görmek istedim . Aşağıdakileri yaptım.

  1. Siteyi ziyaret etti nodejs . Daha sonra, bu noktada toplam taahhüt sayısının yirmi üç bin (kesin olarak 23652) olduğu gözlemlendi.

resim açıklamasını buraya girin

  1. Sonra bu taahhüt bağlantısını tıkladım ve bu beni aşağıda gösterildiği gibi https://github.com/nodejs/node/commits/master adresine götürdü .

resim açıklamasını buraya girin

  1. Şimdi aşağıya doğru kaydırdım ve daha yeni ve daha eski düğmeler buldum. Daha Yeni düğmesi devre dışı. Eski düğmeyi tıkladım ve https://github.com/nodejs/node/commits/master?after=de37ba34c5d6f3a2d18daf482f850be8fddb4621+34

  2. Şimdi URL'nin +34 olduğunu gözlemleyin. Şimdi bunu 23000 olarak değiştirdim (gözlemlediğim taahhüt sayısı 23000 olduğundan). Yani denediğim yeni url

https://github.com/nodejs/node/commits/master?after=de37ba34c5d6f3a2d18daf482f850be8fddb4621+23000

  1. Şimdi neredeyse oradayım. Birkaç tekrarlama veya daha eski düğme tıklamaları ile istediğim yere ulaştım.

2
Bu, cevabınızın 2 numaralı cevabının kopyası mı? stackoverflow.com/a/49647826
Edric

2
yinelenen cevap, ancak görüntüleri beğendim, daha çekici hale getiriyor.
winner_joiner

7

İnit yer işaretini kullanarak bir GitHub havuzunun ilk işlemine gidebilirsiniz .

İÇİNDE

Hızlı bir şekilde bir repo ilk taahhüt almak için bir yer işareti .

genel bakış

Bir repodaki en eski taahhüdüne hızla gidebilmek oldukça yararlıdır. Devam edin ve yer işaretini (bağlantı) yer işareti çubuğunuza sürükleyin ve ilk repo işlemine gitmek istediğinizde tıklayın.

kullanım

Belirli bir repo'nun açılış sayfasına (e.g. like the one you're on)gidin ve sizi ilk sayfaya götürecek yer işaretini tıklayın (ilk taahhüt). Varsayılan olarak, masterdalı izler , ancak branchaçılış sayfasında değiştirirseniz o dalın ilk taahhüdüne gider.

GitHub'da README.md adresinden erişildi


Feragatname : Bu cevabı göndermeden önce birkaç dakika içinde küçük bir Benioku güncellemesine katkıda bulundum .


7

Chrome geliştirme araçlarında snippet olarak tuttuğum aşağıdaki taahhütlerin ilk sayfasına ulaşabilirsiniz.

function githubFirstCommitsPage() {
  let el = document.querySelector('.repository-content');
  let base = el.querySelector('a[data-pjax]').href;
  let count = el.querySelector('.commits .num')
    .textContent
    .trim()
    .replace(/[^\d\.\-]/g, "");
  count = count-36;
  let sha = el.querySelector('.commit-tease-sha')
    .href
    .split('/');
  sha = sha[sha.length-1];
  window.location = `${base}?after=${sha}+${count}`;   
}

githubFirstCommitsPage();

1
Teşekkür ederim! Parçacıkları böyle kaydedebileceğinizi bilmiyordum, böylece yayınınız iki boyutta yardımcı oldu.
bmacnaughton

6

git log --reverseGit komutunu kullanmanız gerekir .

Bu, belirtilen repo için taahhüt tarihini ters sırayla döndürür (en eskiden en yeniye).

Daha sonra, bir sedsihrin yardımıyla , ilk taahhüt tarihi gibi bir şeye sahip olabilirsiniz (bu, kendim için her zaman ihtiyacım olduğunu gördüm).

git log --reverse | sed -n 3p

Nihayetinde, (çoğunlukla ya komutu yazın sıkıcı veya hatırlamak imkansız beri,) gibi bir kabuk yüzden de bu otomatik hale getirmek isteyebilirsiniz bu bir kurtarmaya gelebilir.



0

Bu bağlantı , GitHub'da bunu yapmak için bir kullanıcı arayüzü yolu sunar. Özet:

  1. 'Analizler' sekmesi

  2. Ağ sekmesi (sol taraf)

  3. Üst Karakter + <-

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.