2011-04-21 13 views
66

Bir projeyi imzaladım, bazı değişiklikler yaptım ve kabul isteğini kabul ettim. Ama şimdi, fırlattığım proje başka bir depoya taşındı ve bu depodan bir çatal. Şimdiİstediğim hangi GitHub projesini nasıl değiştiririm?

Original -> MyFork 

:: is

NewOriginal -> Original -> MyFork 

Nasıl aşağıdaki olsun ki?

NewOriginal -> MyFork 
+29

kabul cevabı bir çözüm sağlar, ancak gerçekten ana soruya cevap vermez, GitHub kendisinde meta veri "den çatallı" nasıl değiştirileceği. Ben de aynı şeyle ilgileniyorum. –

cevap

49

Yerel sadece orijinal depo hedef değiştirebilir yer almaktadır. Bunu diye Genellikle bu depo, memba denir:

git remote set-url upstream git://example.com/NewOriginal.git 

Eğer (senin çatal bulunduğu yani,) kullanılarak hangi konak bağlı olarak, can, bazı ek dahili bağlantıları olabilir o kadar kolay değişmiyor. Örneğin Github'da çatal, çatal attığınız orijinal ile doğrudan bağlantılıdır. Bu durumda yeni projeyi tekrar çatallamanız ve yeni çatalla çalışmanız gerekir. Bu durumda

ancak kolayca yanı kökeni depo URL değiştirebilir ve sadece yeni çatal içine size eski çatal önce değişti herşeyi itin.

+10

genellikle upstream deposu için uzaktan kumandayı 'origin' – knittl

+3

@ knittl olarak adlandırılır: Gerçekten de, upstream deposu, fork'un temel aldığı orjinal depodur. Kökeni, çektiğiniz, yani çatalı kamu deponuzdur. – poke

+2

Bir depoyu klonlarsanız, bu havuzun şubeleri "menşe" uzaktan aracılığıyla kullanılabilir. "menşe" uzaklığının url'si, klonlanmış olan url'dir. git – knittl

9

güncelleme depoda uzak URL:

git remote set-url origin <url to NewOriginal, e.g. git://…/bla.git> 
+2

Bu işe yaramaz. OP'nin hala MyFork'a ayarlanmış bir kökene ihtiyacı vardır, böylece değişikliklerini GitHub'da MyFork'a gönderdiğinde NewOriginal'a karşı isteklerde bulunabilir. NewOriginal'a yazma yetkisi yok, bu yüzden kötülüğün başarısızlığa uğramasına neden olacak. – Guy

56

NOT: Aşağıdaki wiki içeriği ve çatalınıza özgü sorunları kaybedeceğiniz için aşağıdaki çözüm eksiktir.

Aşağıdaki adımları kullanarak bunu başarabilirsiniz:

  1. mevcut çatal tüm şube ve etiketlerini aşağı çekin.
  2. Deponuzu GitHub'da silin.
  3. Yeni depodan çatal.
  4. Gerekirse, uzaktan URL güncelleştirin.
  5. Tüm yerel şubelerinizi ve etiketlerinizi yeni depoya doğru itin.
+6

Sorulan soruya doğru cevap budur - OP'nin github'un "ebeveyn" hakkındaki görüşünü değiştirmesi gerekir, bu nedenle çekme istekleri yayınlandığında, yeni ebeveyne değil, yeni ebeveyne giderler. Tek cevap, deposu ve çatalı tekrar silmek gibi görünüyor. – Ether

+21

Bu, github'daki eksik özellik için bir çözümdür. – abergmeier

+1

Böyle bir utangaç github hala bunun için daha iyi bir iş akışına sahip değil. – Ashimema

2

Doğru forking ve yukarı akış eklediğinizi varsayarsak bkz. githubHelpOnFork;

  1. gibi mevcut memba ve kökeni göründüğünü doğrulayın:: sadece yukarı URL'yi değiştirmek için, değil mi memba listediğiniz eğer

    git remote -v 
    
  2. ve sadece ne yapacağını, bunun url değiştirmek istiyorum @ (yeni bir yukarı eklemek için yukarıdaki helpGithub bağlantıyı takip değilse) önerilen Poke:

    git remote set-url upstream git://example.com/NewOriginal.git 
    
  3. sonra bu memba yeni URL'ye işaret doğrulamak

    git uzaktan -v

İlgili konular