Bagaimana saya bisa garpu repositori publik, tetapi membuat garpu saya pribadi? Saya memiliki langganan untuk mendukung repositori pribadi.
Bagaimana saya bisa garpu repositori publik, tetapi membuat garpu saya pribadi? Saya memiliki langganan untuk mendukung repositori pribadi.
Jawaban:
Jawabannya benar tetapi tidak menyebutkan cara menyinkronkan kode antara repo publik dan garpu.
Berikut ini adalah alur kerja lengkap (kami telah melakukan ini sebelum membuka sumber React Native ):
Pertama, duplikat repo seperti yang orang lain katakan (detail di sini ):
Buat repo baru (sebut saja private-repo) melalui UI Github . Kemudian:
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
Kloning repo pribadi sehingga Anda dapat mengerjakannya:
git clone https://github.com/yourname/private-repo.git
cd private-repo
make some changes
git commit
git push origin master
Untuk menarik minat baru dari repo publik:
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
Luar biasa, repo pribadi Anda sekarang memiliki kode terbaru dari repo publik plus perubahan Anda.
Akhirnya, untuk membuat permintaan tarik repo pribadi -> repo publik:
Gunakan GitHub UI untuk membuat garpu repo publik (tombol "Fork" kecil di kanan atas halaman repo publik). Kemudian:
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
Sekarang Anda dapat membuat permintaan tarik melalui Github UI untuk repo publik, seperti dijelaskan di sini .
Setelah pemilik proyek meninjau permintaan tarik Anda, mereka dapat menggabungkannya.
Tentu saja seluruh proses dapat diulangi (tinggalkan saja langkah-langkah di mana Anda menambahkan remote).
git cloneakan mengatur cabang pelacakan jarak jauh dan mungkin beberapa konfigurasi lain dalam repo kloning yang tidak Anda inginkan. Sedangkan --bare clone hanya menyalin dir .git dari remote seperti apa adanya.
git statusmenunjukkan semuanya up to date, membersihkan pohon kerja tidak peduli apa pun yang saya ubah. Akibatnya saya tidak bisa melakukan dan mendorong apa pun. Saya menghapus repo pribadi baru yang saya buat 2 kali lebih banyak untuk mencoba ini tetapi terus mengalami masalah yang sama. Ada saran?
Ada satu opsi lagi sekarang (Januari-2015)


Jawaban saat ini agak ketinggalan zaman, untuk kejelasan:
Jawaban singkatnya adalah:
Ini didokumentasikan di GitHub: duplikasi-a-repositori
Anda harus menggandakan repo
Anda dapat melihat dokumen ini (dari github)
Untuk membuat duplikat dari repositori tanpa forking, Anda perlu menjalankan perintah klon khusus terhadap repositori asli dan mirror-push ke yang baru.
Dalam kasus-kasus berikut, repositori yang ingin Anda dorong - seperti contoh pengguna / repositori baru atau pengguna contoh / mirrored - seharusnya sudah ada di GitHub. Lihat "Membuat repositori baru" untuk informasi lebih lanjut.
Mencerminkan repositori
Untuk membuat duplikat yang tepat, Anda harus melakukan kloning kosong dan mirror-push.
Buka baris perintah, dan ketik perintah ini:
$ 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 repositoryJika Anda ingin mirror repositori di lokasi lain, termasuk mendapatkan pembaruan dari aslinya, Anda dapat mengkloning mirror dan secara berkala menekan perubahan.
$ 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 mirrorSeperti halnya klon kosong, klon cermin mencakup semua cabang dan tag jarak jauh, tetapi semua referensi lokal akan ditimpa setiap kali Anda mengambilnya, jadi itu akan selalu sama dengan repositori asli. Mengatur URL untuk push menyederhanakan mendorong ke mirror Anda. Untuk memperbarui cermin Anda, ambil pembaruan dan tekan, yang bisa otomatis dengan menjalankan tugas cron.
$ git fetch -p origin $ git push --mirror
GitHub sekarang memiliki opsi impor yang memungkinkan Anda memilih apa pun yang Anda inginkan, repositori yang diimpor, publik atau pribadi