Bir çekme isteğini güncellemek için
Bir çekme isteğini (nokta # 1) güncellemek için yapmanız gereken tek şey, çekme isteğinin geldiği şubeyi satın almak ve tekrar iletmektir:
cd /my/fork
git checkout master
...
git commit -va -m "Correcting for PR comments"
git push
İsteğe bağlı - Temizleme taahhüdü geçmişi
Depo geçmişinizin temiz olması için taahhütlerinizi birlikte ezmeniz istenebilir veya kendiniz çekme isteğinizdeki (mesaj # 2) "mesajdan" uzaklaşan aracı komisyonları kaldırmak isteyebilirsiniz. Örneğin, taahhüt geçmişiniz aşağıdaki gibi görünüyorsa:
$ git remote add parent git@github.com:other-user/project.git
$ git fetch parent
$ git log --oneline parent/master..master
e4e32b8 add test case as per PR comments
eccaa56 code standard fixes as per PR comments
fb30112 correct typos and fatal error
58ae094 fixing problem
Bir şeyleri birlikte ezmek iyi bir fikirdir, böylece tek bir taahhüt olarak görünürler:
$ git rebase -i parent/master
Bu, çekme isteğinizin geçmişini nasıl yeniden yazacağınızı seçmenizi isteyecektir, aşağıdakiler düzenleyicinizde olacaktır:
pick 58ae094 fixing actual problem
pick fb30112 correct typos
pick eccaa56 code standard fixes
pick e4e32b8 add test case as per PR comments
Bir önceki taahhüdün parçası olmak istediğiniz herhangi bir taahhüt için - squash seçimini değiştirin:
pick 58ae094 fixing actual problem
squash fb30112 correct typos
squash eccaa56 code standard fixes
squash e4e32b8 add test case as per PR comments
Ve editörünüzü kapatın. Git daha sonra geçmişi yeniden yazacak ve birleştirilmiş işlem için bir taahhüt mesajı vermenizi isteyecektir. Buna göre değişiklik yapın ve taahhüt geçmişiniz artık kısa ve öz olacaktır:
$ git log --oneline parent/master..master
9de3202 fixing actual problem
Çatalı it:
$ git push -f
Counting objects: 19, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (11/11), 978 bytes, done.
Total 11 (delta 9), reused 7 (delta 6)
To git@github.com:me/my-fork.git
f1238d0..9de3202 HEAD -> master
ve çekme isteğiniz, daha önce birkaç taahhüde bölünmüş tüm değişiklikleri içeren tek bir taahhüt içerecektir.
Herkese açık depolardaki geçmişi değiştirmek kötü bir şeydir
Geçmişi yeniden yazmak ve git push -f
bir başkasının zaten klonladığı bir dalda kullanmak kötü bir şeydir - havuzun geçmişinin ve kasanın geçmişinin ayrılmasına neden olur.
Bununla birlikte, bir depoya entegre edilmesini önerdiğiniz değişikliği düzeltmek için çatalınızın geçmişini değiştirmek iyi bir şeydir. Gibi hiçbir istekleri çekme istekleri ezmek "gürültü" var.
Dallarla ilgili not
Yukarıda çekme talebinizi master
çatalın kolundan gelmiş gibi gösteriyorum , bununla ilgili yanlış bir şey yok, ancak bu, standart tekniğinizse, depo başına sadece bir PR'nin açık olması gibi bazı sınırlamalar yaratıyor . Teklif etmek istediğiniz her bir değişiklik için bir şube oluşturmak daha iyi bir fikirdir:
$ git branch feature/new-widgets
$ git checkout feature/new-widgets
...
Hack hack hack
...
$ git push
# Now create PR from feature/new-widgets
master
bir daldır, bu yüzden teknik olarak önemli değil :)