Bir çatalı orijinalden nasıl yeniden alabilirim


33

Github'da bir proje yaptım. Değişiklikler yaptım ve çekme isteği gönderdim. Mal sahibi çatalımı ana proje ile birleştirdi ve bundan sonra bazı değişiklikler yaptı. Şimdilik çatalım ana proje ile güncellenmedi. Çekme isteğimi birleştirdikten sonra yaptığı değişiklikleri özlüyorum. Çatalımı Ana proje ile nasıl güncelleyebilirim? Bunu web arayüzünde yapmanın bir yolu var mı?

Teşekkürler


Basit bir talimat yazarım. burada göz atın: webapps.stackexchange.com/a/58140/63016
Youngjae

2
Artık iyi bir resmi doktor var: help.github.com/articles/syncing-a-fork
Andre Miras

Yanıtlar:


36

Tasarım gereği, bir proje oluşturmak, orijinal repo değiştiğinde güncellenmeyen ayrı bir repo oluşturur. Ancak, gitel ile güncelleme oldukça kolaylaştırır.

3. bir deponun yardımına ihtiyacınız var (yerel kopya yeterlidir). 3 repo var:

  • "Upstream": Upstream projesinin Github'daki deposu.
  • "Menşei": Çatalınızın Github'daki deposu
  • "Yerel": Bilgisayarınızdaki yerel depo. Fork kullanarak klonlayarak yarattığınızı git clone git@github.com:your-username/projectname.gitve herkesin dal kullandığını varsayacağım master.

Şu anda "Menşe" ve "Yerel" in aynı durumda olduğunu ve "Giriş" in 1 veya daha fazla komisyon tarafından (birleştirme ve daha sonra yapılan değişiklikler) devam ettiğini varsayarsak.

İlk olarak yukarı akış projesini Git uzaktan kumandası olarak ekleyin :

git remote add upstream https://github.com/upstream-username/projectname.git

Ardından uzaktaki şubeden yerel deponuzun şu andaki ( ) şubesine yapılan değişiklikleri çekin ( otomatik olarak toplayın ve otomatik olarak birleştirin ):mastermaster

git pull upstream master

Şimdi yerel deponuz ile senkronize upstream. Son olarak, yerel repo'yu Github çatalına itin:

git push origin master

Şimdi her şey senkronize.


2
Çok teşekkürler .. Bu web arayüzü bunu yapmak mümkün olmayabilir bir utanç ..
bAN

1
Bu gerçekten web arayüzünde mümkündür: webapps.stackexchange.com/a/31010/10390
thSoft

Yeehaw! Bu açık bilgiyi bulmaya çalışırken saçlarımı yırtıyordum. Paylaşım için teşekkürler!
pepoluan

... ama lütfen cevabın yorumlarına da bakınız, web üzerinden
Resync'in

Çekmeden sonra “zaten güncel” yazdığında ne yaparsınız, ama açıkçası öyle değil mi? (hepsini bir alt dizinde değiştirdiğim dosyalar var ve başka hiçbir dosyada hiçbir fark olmamalı, ama yaparım)
roberto tomás

1

Bir uzaktan kumanda eklemelisiniz ( GitHub yardımına bakınız ) ve o yeni uzaktan kumandadan çekmelisiniz.

git remote add mainProject https://github.com/user/mainProject
git pull mainProject master

0

Bu cevabı orijinal cevabı tamamlamak için buldum , çünkü sadece bir şubeyi (ana) senkronize etmekle ilgileniyor. Ek olarak, dal çataltan beri yukarı akışta oluşturulmuşsa, çatalınız üzerinde oluşturmak biraz daha önemlidir.

Kısa cevap, çatalınızı yukarı akış deposundaki her dalda güncellemek için bu komutu uygulamaktır.

for branch in $(git ls-remote --heads upstream|sed 's#^.*refs/heads/##'); do git push origin refs/remotes/upstream/$branch:refs/heads/$branch; done

Bunun yapmaması gereken, çataldan, yukarı akıştan silinmiş dalları kaldırmaktır. Özellikle çatalınız üzerinde dallar oluşturduysanız, bunu otomatikleştirmenin bir yolu yoktur.

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.