GitHub deposunun çatal bağımlılığını silme


206

GitHub'ın repo'mun aslında başka bir projenin çatalı olduğunu unutmasını veya ilişkisini kesmesini nasıl sağlayabilirim?

GitHub'da bir proje çatalladım. Şimdi "ne olursa olsun çatallı" görebiliyorum. Ana depo "ne olursa olsun / ne olursa olsun" artık korunmamaktadır. Bağımsız bir havuz oluşturmak için orijinal deponun kod tabanını kullanmaya devam etmeme izin verildi.

Projemi orijinal depodan ayırmanın bir yolu var mı?

Yanıtlar:


175

Sen edebilirsiniz github desteğine başvurun ve "normal modda" için depo geçmek isteyin.

On Bu sayfada , paragrafın "çatal yapıldı Commit", bir anahtara destek geçmesi gerektiğini açıklanmıştır. Bu nedenle, bunu kendiniz yapmanın bir yolu yoktur (daha önce açıklanan repo'nuzu yok edip yeniden yaratmadığınız sürece ... bunu yaparsanız, projenize olacak şekilde bilet veya bir wiki'niz varsa dikkatli olun silinir!).


31
Destek ile iletişime
geçmenin

1
Bağlantı verilen sayfa artık belirtilen bilgileri içermiyor.
Kara Brightwell

3
@MattBrennan Sayfa değişti, ancak son bölüm hala şunları içeriyor: "Çatalı ayırmak ve GitHub.com veya GitHub Enterprise'da bağımsız bir depoya dönüştürmek için, sırasıyla GitHub desteğine veya site yöneticinize başvurun."
Thomas Moulard

1
Süper hızlı .. Bana 1 saat içinde cevap verdiler. Teşekkürler
myDoggyWritesCode

2
Github Enterprise'da şimdi admin-> Collaboration-> Network altında bulabilirsiniz ve kullanım durumunuza bağlı olarak 'Root Yap', 'Ayır' veya 'Ayıkla' seçeneklerini kullanmalısınız.
Kutzi

45

Çatallı depoyu github arayüzünden yeni bir depoya (çatal bağımlılığı olmadan) çoğaltabilir, ardından orijinal çatallı olanı kaldırabilirsiniz:

  • Github'da oturum açın
  • Seç + Sağ üst köşede işareti ve İthalat depo .
  • Çatallı deponuzu içe aktarın. Yeni deponun çatal bağımlılığı olmayacak.
  • Depo ayarlarındaki orijinal çatallı deposu silin.

1
Bu benim için en kolay ve işe yarayan şeydi :). Çok zeki.
moxi

1
Başkasının içe aktarma özelliği "asılı" ile ilgili bir sorunu olan var mı? Mine yaklaşık 5 saattir "Projenizin sürüm kontrol sistemi algılanıyor ..." Kuyrukta olup olmadığımdan emin değilim ya da gerçek bir asmak. Repo küçük. Bir sırada olduğumda gece boyunca bırakmak istedim.
Benjamin West

Sonunda merak ettim ve sadece "iptal" e tıkladım. İptal'i tıklatmak, VCS algılamasını atlamasına ve sadece kodu / komisyonları / şubeleri vb. İçeri aktarmasına izin verdi. Farklı bir VCS'den geliyor olsaydım ithalat askıda kalmamış olabilir mi? Emin değil. Ayrıca ikinci bir repo ile bunu yaparken unutmayın, çalışması için iki kez iptal etmek zorunda kaldı. CLI, daha iyi bir yöntem olabilecek tüm verileri kopyalar, ancak umarım bu, bu rotayı seçen diğerlerine yardımcı olur.
Benjamin West

9
Açık olmak gerekirse, bu yaklaşım sorunları koruyamaz ve istekleri çekmez.
golopot

Cazibe gibi çalışır! Teşekkürler cankurtaransın! :)
omnimind

44

Yerel repodaki tüm önemli şubelere ve etiketlere sahip olduğunuzdan emin olun, github deposunu silin, depoyu her zamanki yöntemlerle yeniden yaratın (çatalsız) ve yerel havuzu geri itin git push --all. Yayınlamak istemediğiniz yerel şubeleriniz varsa, işlem için geçici olarak temiz bir yerel klon oluşturmaya değer olabilir.

Ancak, bu wiki ve sorunlardan da kurtulacaktır. Wiki aslında kendi havuzu olduğundan, klonlanarak ve sonra yeniden yaratarak ve iterek benzer şekilde ele alınabilir. Repo adresi wiki'nin Git Erişimi sayfasındadır ( git@github.com:user/repo.wiki.git).

Bu sorun yaratır. API aracılığıyla dışa aktarılabilirler , ancak bildiğim kadarıyla, yalnızca kişinizle ilgili sorunlar ve yorumlar oluşturabilirsiniz, bu yüzden bunları mükemmel bir şekilde içe aktarmak imkansızdır.

Bu nedenle, korunacak sorunlara ihtiyacınız varsa, Thomas Moulard'ın önerdiği gibi github desteğinden geçmelisiniz.


Kaç sorun bulunduğuna bağlı olarak, eskisinden web'den silmeden önce bunları tek tek yeni depoya aktarmak mümkün olabilir ( help.github.com/en/github/managing-your-work-on- github /… ). Sanırım kararlı bir kişi saatte 100'den fazla sayı aktarabilir - eğlenceli değil, birçok depo için yapılabilir bir şey.
Suma

22

Benzer bir sorun var ve çözmek için bu github yardım sayfasını kullanarak sona erdi . Başka bir kullanıcı tarafından nazikçe geliştirilen bir tema kullanarak blogum için olduğu gibi wiki ve sorunları izci hakkında umursamadı.

Çatallı bir repoyu ayırmak ve tüm tarihi kaybetmeden birkaç işlemden sonra bunu kendiniz olarak kullanmak için:

git clone --bare git@github.com:user/forked_repo.git

Github new-repositoryweb sitesinde yeni bir boş depo oluşturun . Ve yansıtılmış bir sürümü itin:

cd user.github.com.git/

git push --mirror git@github.com:user/new-repository.git

Github'da forked_repositoryyedek olarak tutmak ve gerekirse güncellemeleri kontrol etmek için başka bir adla yeniden adlandırılabilir . Veya basitçe silin.

new-repositoryOrijinal adı yeniden adlandırmak işi yapar. Bir yan etki olarak, taahhütleriniz artık geçmişinizde görünür.


11

Bu sadece GitHub Enterprise için geçerlidir, github.com için geçerli değildir

Yönetici ayrıcalıklarına sahip bir hesapta oturum açtı:

  1. Çıkarmanız gereken depoya gidin: https://<ghe url>/<org>/<repo>
  2. Sağ üst köşedeki "Site Yöneticisi" roketini tıklayın
  3. Üst menü çubuğunda "Ortak Çalışma" yı tıklayın
  4. Sol bölmedeki "Ağ" ı tıklayın
  5. Ağ Yapısı bölmesinde "Kök Oluştur" u tıklayın
  6. Kabul etmek

Bu GitHub Enterprise 2.9 üzerinde test edildi


Kullanım durumunuza bağlı olarak, 'Ayır' veya 'Ayıkla' daha uygun olabilir. Temelde şu anki kök> çocuk yönünü tersine çevireceği için 'Kök Yap' ı biraz garip buluyorum. (Github Enterprise 2.17)
Kutzi

10

Aurelien ve Clayton'ın bilgilerini kullanarak, bunu aşağıdakilerle yapabildim:

$ git clone --bare https://github.com/my/forked_repo.git
<delete forked_repo on GitHub>
<recreate repo on GitHub using same name>
$ cd forked_repo.git
$ git push --mirror

İşte dokümantasyongit clone --bare :

Çıplak bir Git deposu oluşturun. Yerine yaratmanın olduğunu <directory>ve idari dosyaları yerleştirerek <directory>/.git, yapmak <directory>kendisi $GIT_DIR. Bu açıkça -n'yi gerektirir çünkü çalışma ağacını kontrol edecek hiçbir yer yoktur. Ayrıca uzaktan kumandadaki dal başları, eşleştirilmeden doğrudan karşılık gelen yerel dal başlarına kopyalanır refs/remotes/origin/. Bu seçenek kullanıldığında, ne uzaktan izleme dalları ne de ilgili yapılandırma değişkenleri oluşturulur.

İşte dokümantasyongit push --mirror :

Bunun yerine itme her ref adlandırma, altındaki tüm hakemler o belirtir refs/(kapsar ancak bunlarla sınırlı değildir refs/heads/, refs/remotes/ve refs/tags/) uzaktan depo yansıtılmış. Yeni oluşturulan yerel referanslar uzak tarafa aktarılacak, yerel olarak güncellenen referanslar uzak uçta zorla güncellenecek ve silinen referanslar uzak uçtan kaldırılacak. Yapılandırma seçeneği remote.<remote>.mirrorayarlanmışsa bu varsayılan değerdir.

Not: Diğer gittemel cevaplar gibi, bu da gitwiki ve sorunlar gibi repo'nun parçası olmayan sorunların üzerine kopyalanmaz . Tapio Başına:

  • Wiki ayrı bir git deposudur ve Tapio için benzer bir şekilde ele alınabilir. Adresi: git@github.com:user/repo.wiki.git.
  • Sorunlar GitHub API aracılığıyla dışa aktarılabilir, ancak yalnızca kullanıcı tarafından oluşturulabildikleri için bunları yeniden oluşturma sorunları vardır, bu nedenle içe aktarma bilgileri kaybeder.
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.