Halka açık bir havuzu nasıl çatallayabilirim, ancak çatalımı özel yapabilirim? Özel depoları destekleme aboneliğim var.
Halka açık bir havuzu nasıl çatallayabilirim, ancak çatalımı özel yapabilirim? Özel depoları destekleme aboneliğim var.
Yanıtlar:
Yanıtlar doğrudur, ancak genel repo ile çatal arasındaki kodu nasıl senkronize edeceğinizden bahsetmiyoruz.
İşte tam iş akışı (bunu açık kaynak React Native'den önce yaptık ):
İlk olarak, repoyu diğerlerinin söylediği gibi çoğaltın (ayrıntılar burada ):
Github kullanıcı arayüzüprivate-repo
üzerinden yeni bir repo oluşturun (diyelim ) . Sonra:
git clone --bare https://github.com/exampleuser/public-repo.git
cd public-repo.git
git push --mirror https://github.com/yourname/private-repo.git
cd ..
rm -rf public-repo.git
Üzerinde çalışabilmek için özel repoyu kopyalayın:
git clone https://github.com/yourname/private-repo.git
cd private-repo
make some changes
git commit
git push origin master
Halka açık repodan yeni sıhhat çekmek için:
cd private-repo
git remote add public https://github.com/exampleuser/public-repo.git
git pull public master # Creates a merge commit
git push origin master
Harika, özel repo şimdi halka açık repo son değişiklik artı artı değişikliklere sahip.
Son olarak, bir çekme isteği özel repo oluşturmak için -> genel repo:
Genel repo çatalını (genel repo sayfasının sağ üst kısmındaki küçük "Çatal" düğmesi) oluşturmak için GitHub kullanıcı arayüzünü kullanın. Sonra:
git clone https://github.com/yourname/the-fork.git
cd the-fork
git remote add private_repo_yourname https://github.com/yourname/private-repo.git
git checkout -b pull_request_yourname
git pull private_repo_yourname master
git push origin pull_request_yourname
Şimdi burada açıklandığı gibi, genel repo için Github UI aracılığıyla bir çekme isteği oluşturabilirsiniz .
Proje sahipleri çekme talebinizi inceledikten sonra birleştirebilirler.
Tabii ki tüm süreç tekrarlanabilir (sadece uzaktan kumanda eklediğiniz adımları bırakın).
git clone
uzaktan izleme şube kuracak ve belki klonlanmış repo bazı diğer yapılandırma gerçekten istemiyorum. Oysa - çıplak bir klon, uzaktan kumandadan olduğu gibi .git dizinini kopyalar.
git status
her şeyi güncel gösterir, ne değiştirirsek değiştirelim, ağaç temiz kalır. Sonuç olarak hiçbir şey yapamıyorum ve zorlayamıyorum. Bunu denemek için 2 kez daha yaptığım yeni özel repoyu sildim ama aynı sorunla karşılaşmaya devam ettim. Baska öneri?
Şimdi bir seçenek daha var (Ocak-2015)
Mevcut cevaplar biraz güncelliğini yitirmiştir.
Kısa cevap:
Bu GitHub'da belgelenmiştir: deponun çoğaltılması
Repoyu kopyalamanız gerekiyor
Bu dokümanı görebilirsiniz (github'dan)
Bir havuzun çatalsız kopyasını oluşturmak için, orijinal depoya karşı özel bir klon komutu çalıştırmanız ve yenisine ayna aktarmanız gerekir.
Aşağıdaki durumlarda, örnek kullanıcı / yeni veri havuzu veya örnek kullanıcı / yansıtılmış gibi aktarmaya çalıştığınız havuz GitHub'da zaten var olmalıdır. Daha fazla bilgi için bkz. "Yeni bir havuz oluşturma".
Bir havuzu yansıtma
Kesin bir kopya yapmak için hem çıplak klon hem de ayna itme yapmanız gerekir.
Komut satırını açın ve şu komutları yazın:
$ git clone --bare https://github.com/exampleuser/old-repository.git # Make a bare clone of the repository $ cd old-repository.git $ git push --mirror https://github.com/exampleuser/new-repository.git # Mirror-push to the new repository $ cd .. $ rm -rf old-repository.git # Remove our temporary local repository
Bir deposu orijinalinden güncelleme almak da dahil olmak üzere başka bir konumda yansıtmak istiyorsanız, bir aynayı klonlayabilir ve değişiklikleri düzenli olarak itebilirsiniz.
$ git clone --mirror https://github.com/exampleuser/repository-to-mirror.git # Make a bare mirrored clone of the repository $ cd repository-to-mirror.git $ git remote set-url --push origin https://github.com/exampleuser/mirrored # Set the push location to your mirror
Çıplak bir klonda olduğu gibi, yansıtılmış bir klon tüm uzak dalları ve etiketleri içerir, ancak her getirdiğinizde tüm yerel referansların üzerine yazılır, bu nedenle her zaman orijinal havuzla aynı olacaktır. İtme URL'sini ayarlamak aynanıza itmeyi kolaylaştırır. Aynanızı güncellemek için, bir cron işi çalıştırarak otomatikleştirilebilecek güncellemeleri ve push'ları alın.
$ git fetch -p origin $ git push --mirror
GitHub'da artık yeni içe aktarılan depo genel veya özel istediğinizi seçmenizi sağlayan bir içe aktarma seçeneği var