Görebildiğim şeyin asıl nedeni şöyle:
- Çekme isteklerini şu anda birleştirmek için GitHub UI (Ekim 2015) taahhüt iletisinin ilk satırını düzenlemenize izin vermez,
Merge pull request #123 from joebloggs/fix-snafoo
- Taahhüt Tarama geçmişini için GitHub UI şu anda gelen şube geçmişini görüntülemek için izin vermez
--first-parent
bakış açısından
- Şu anda bir dosyadaki suçlamaya bakmak için GitHub UI, dosyanın suçunu bakış açısıyla görüntülemenize izin vermiyor
--first-parent
(bunun yalnızca Git 2.6.2'de düzeltildiğini unutmayın; mevcut)
Dolayısıyla yukarıdaki bu üç durumun hepsini birleştirdiğinizde, birleştirilmemiş taahhütlerin birleştirilmesinin GitHub UI'den çirkin göründüğü bir durum elde edersiniz.
Sıkıştırılmış taahhütler ile geçmişiniz gibi görünecek
1256556316... Merge pull request #423 from jrandom/add-slideshows
7hgf8978g9... Added new slideshow feature
56556316ad... Merge pull request #324 from ahacker/fix-android-display
787g8fgf78... Hotfix for android display issue
f56556316e... Merge pull request #28 from somwhere/select-lang-popup
9080gf6567... Implemented pop-up to select language
Oysa squashed olmadan tarih gibi bir şey görünecek
1256556316... Merge pull request #423 from jrandom/add-slideshows
7hgf8978g9... Added new slideshow feature, JIRA # 848394839
85493g2458... Fixed slideshow display issue in ie
gh354354gh... wip, done for the week
789fdfffdf... minor alignment issue
56556316ad... Merge pull request #324 from ahacker/fix-android-display
787g8fgf78... hotfix for #5849564648
f56556316e... Merge pull request #28 from somwhere/select-lang-popup
9080gf6567... implemented feature # 65896859
gh34839843... minor fix (typo) for 3rd test
GitHub UI'yı kullanmakla sınırlandırırsanız , bir değişimin gerçekleştiği PR izlemesinde çok fazla taahhütte bulunduğunuzda, biraz kabusa dönüşebilir .
Örneğin, bir dosyada bir yerde de-referans olarak gösterilen boş bir işaretçi buluyorsunuz ... bu yüzden "bunu kim yaptı ve ne zaman? Hangi sürümleri etkilenir?" Diyorsunuz. Sonra GitHub UI'deki suçlama görünümüne doğru ilerlersiniz ve çizginin değişmiş olduğunu görürsünüz.789fdfffdf
... "ah, ama bir saniye bekle, bu satır sadece kodun geri kalanına uyacak şekilde girintisini değiştiriyordu", bu yüzden şimdi üst taahhütte bulunan dosya için ağaç durumuna gitmeli ve tekrar ziyaret etmelisin. suçlama sayfası ... sonunda bir taahhüt buluyorsun ... bu 6 ay öncesinden bir taahhüt ... "oh **** bu kullanıcıları 6 ay boyunca etkileyebilir" diyorsun ... ah ama bekle, bu taahhüt aslında bir Çekme İsteği’ndeydi ve yalnızca dün birleşti ve henüz kimse serbest bırakmadı ... “Tarihinizi ezmeksizin işlerinizi birleştiren insanları lanetliyorsunuz”, genellikle 2 veya 3 kod arkeoloji seferinden sonra duyulabilecek bir çığlık GitHub UI
Şimdi (için düzeltme vardır ve süper müthiş 2.6.2 Git komut satırını kullanın varsa bize bunun nasıl çalıştığını düşünelim git blame --first-parent
)
- Git komut satırını kullanıyor olsaydınız, birleştirme işlemi iletisini tamamen denetleyebilirsiniz ve böylece birleştirme işlemi güzel bir özet çizgisine sahip olabilirdi.
Bu yüzden bizim taahhüt tarihimiz benzeyecek
$ git log
1256556316... #423 Added new slideshow feature
7hgf8978g9... Added new slideshow feature, JIRA # 848394839
85493g2458... Fixed slideshow display issue in ie
gh354354gh... wip, done for the week
789fdfffdf... minor alignment issue
56556316ad... #324 Hotfix for android display issue
787g8fgf78... hotfix for #5849564648
f56556316e... #28 Implemented pop-up to select language
9080gf6567... implemented feature # 65896859
gh34839843... minor fix (typo) for 3rd test
Ama biz de yapabiliriz
$ git log --first-parent
1256556316... #423 Added new slideshow feature
56556316ad... #324 Hotfix for android display issue
f56556316e... #28 Implemented pop-up to select language
(Başka bir deyişle: Git CLI pastanı almanı ve yemeni sağlar)
Şimdi boş gösterici sorununa çarptığımızda ... sadece kullandık git blame --first-parent -w dodgy-file.c
ve derhal boş gösterici referansının ana boşluk ile görüldüğü yerde basit beyaz boşlukları görmezden geldiğince kesin bir şekilde verildi.
Elbette GitHub UI kullanarak birleştirme yapıyorsanız, GitHub git log --first-parent
birleştirme işlem iletisinin ilk satırını zorladığınız için gerçekten berbat olur:
1256556316... Merge pull request #423 from jrandom/add-slideshows
56556316ad... Merge pull request #324 from ahacker/fix-android-display
f56556316e... Merge pull request #28 from somwhere/select-lang-popup
Böylece uzun lafın kısası:
GitHub UI (Ekim 2015), çekme taleplerini nasıl birleştirdiği, taahhüt tarihini nasıl sunacağı ve suçlama bilgilerini nasıl atfettiği konusunda bazı eksiklikler var. GitHub Kullanıcı Arabiriminde bu kusurların üstesinden gelmenin en iyi yolu, birleşme öncesinde insanlardan taahhütlerini ezmelerini talep etmektir.
Git CLI bu sorunlara sahip değil ve hangi görünümü görmek istediğinizi kolayca seçebiliyor, böylece hem belirli bir değişikliğin neden bu şekilde yapıldığını (hem de taahhüt edilmemiş taahhütlerin geçmişine bakarak) hem de nedenini keşfedebiliyorsunuz. etkili bir şekilde ezilmiş taahhütleri görün.
Komut Dosyası Gönder
Sıkıştırma taahhütleri için sıkça atıfta bulunulmasının son sebebi, sırt limanına yalnızca bir tane karar vermeniz durumunda (yani ezilmiş ürün işleme), vişnenin seçilmesi kolaydır ...
Git tarihine bakıyorsanız git log --first-parent
, birleştirme işlemlerini sadece kirazdan alabilirsiniz. Çoğu insan Belirtmek zorunda çünkü karıştı kiraz toplama birleştirme taahhüt almak -m N
seçeneği ancak aralarından taahhüt var ise git log --first-parent
o zaman bu kadar öyle olacak takip etmek istediğiniz ilk ebeveyn olduğunu biliyoruzgit cherry-pick -m 1 ...