Cara untuk mengkloning semua remote cabang di Git?
Saya memiliki master
dan pembangunan
cabang, baik didorong ke GitHub. I've clone ' d,
pull indonesia, dan ambil indonesia, tapi saya tetap tidak mendapatkan apa-apa selain
master` cabang kembali.
I'm yakin aku'm hilang sesuatu yang jelas, tapi saya telah membaca manual dan I'm tidak mendapatkan sukacita sama sekali.
3970
38
Pertama, clone remote Git repositori dan cd ke dalamnya:
Selanjutnya, melihat cabang-cabang lokal di repositori anda:
Tapi ada cabang lain bersembunyi di repositori anda! Anda dapat melihat ini menggunakan
-
bendera:Jika anda hanya ingin mengambil mengintip cepat di hulu cabang, anda dapat memeriksanya secara langsung:
Tapi jika anda ingin bekerja di cabang itu, anda'll butuhkan untuk membuat lokal pelacakan cabang yang dilakukan secara otomatis oleh:
dan anda akan melihat
Baris terakhir itu melempar beberapa orang: "cabang Baru" hah? Apa itu benar-benar berarti adalah bahwa cabang ini diambil dari index dan dibuat secara lokal untuk anda. Yang previous garis sebenarnya lebih informatif seperti ini memberitahu anda bahwa cabang yang dibentuk untuk melacak cabang terpencil, yang biasanya berarti asal/branch_name cabang
Sekarang, jika anda melihat cabang lokal anda, ini adalah apa yang anda'll melihat:
Anda benar-benar dapat melacak lebih dari satu remote repositori menggunakan git remote`.
Pada titik ini, hal-hal yang cukup gila, jadi lari
gitk
untuk melihat apa yang's terjadi:Jika anda memiliki banyak cabang yang anda ingin mengambil sekaligus, lakukan:
Sekarang anda dapat checkout setiap cabang yang anda butuhkan untuk, tanpa memukul remote repositori.
Ini Bash script membantu saya keluar:
Itu akan membuat cabang pelacakan untuk semua cabang, kecuali master (yang mungkin anda dapatkan dari klon asli command). Saya pikir anda mungkin masih perlu melakukan
untuk memastikan.
Menggunakan
--cermin
pilihan tampaknya untuk menyalinremote
pelacakan cabang-cabang dengan baik. Namun, set up repositori sebagai bare repository, jadi anda harus mengubahnya kembali menjadi normal repositori setelah itu.Referensi: Git FAQ: Bagaimana cara menduplikasi sebuah repositori dengan semua jarak jauh dilacak cabang?
Anda dapat dengan mudah beralih ke cabang tanpa menggunakan fancy "git checkout -b somebranch asal/somebranch" sintaks. Anda hanya dapat melakukan:
Git secara otomatis akan melakukan hal yang benar:
Git akan memeriksa apakah sebuah cabang dengan nama yang sama ada dalam satu remote, dan jika tidak, itu trek itu dengan cara yang sama seperti jika anda telah secara eksplisit ditentukan bahwa's remote branch. Dari git checkout halaman Git 1.8.2.1:
Mengenai,
menggunakan
atau lebih verbose tapi lebih mudah untuk diingat
mungkin akan lebih baik, dalam hal pelacakan remote repositori.
Ambil yang anda lakukan harus mendapatkan semua remote cabang, tapi itu tidak't membuat cabang-cabang lokal untuk mereka. Jika anda menggunakan gitk, anda harus melihat remote cabang digambarkan sebagai "remote/asal/dev" atau sesuatu yang serupa.
Untuk membuat sebuah cabang lokal yang berbasis pada remote cabang, melakukan sesuatu seperti:
Yang harus kembali sesuatu seperti: Sekarang, ketika anda berada di dev cabang, "git pull" akan memperbarui lokal dev ke titik yang sama sebagai remote dev cabang. Perhatikan bahwa itu akan mengambil semua cabang, tapi hanya menarik anda ke atas pohon.Ketika anda melakukan "git clone git://lokasi", semua cabang dan tag yang diambil.
Dalam rangka untuk bekerja di atas spesifik cabang terpencil, dengan asumsi itu's asal remote:
Menggunakan alias. Meskipun ada't setiap asli Git satu-liners, anda dapat menentukan sendiri sebagai
dan kemudian menggunakannya sebagai
Kenapa anda hanya melihat "master"
git clone
download semua remote remote cabang tetapi masih menganggap mereka "remote", meskipun file-file tersebut terletak di repositori baru. Ada's satu pengecualian untuk ini, yaitu bahwa proses kloning menciptakan sebuah cabang lokal yang disebut "master" dari remote cabang yang disebut "master". Secara default,git branch
hanya menunjukkan cabang-cabang di daerah, yang mengapa anda hanya melihat "master".git branch -a
menunjukkan semua cabang, termasuk remote cabang.Bagaimana untuk mendapatkan cabang-cabang lokal
Jika anda benar-benar ingin bekerja di cabang, anda'll mungkin ingin "lokal" versi ini. Untuk membuat cabang-cabang lokal dari remote cabang (tanpa memeriksa mereka dan dengan demikian mengubah isi dari direktori kerja anda), anda dapat melakukannya seperti ini:
Dalam contoh ini,
branchone
adalah nama sebuah cabang lokal anda're menciptakan berdasarkanasal/branchone
; jika anda ingin membuat cabang-cabang lokal dengan nama yang berbeda, anda dapat melakukan ini:Setelah anda've menciptakan sebuah cabang lokal anda, anda dapat melihatnya dengan
git branch
(ingat, anda don't perlu-a
untuk melihat cabang-cabang lokal).Ini isn't terlalu rumit, sangat sederhana dan lurus ke depan langkah-langkah adalah sebagai berikut;
git fetch asal
Ini akan membawa semua cabang lokal anda.git branch -a
Ini akan menunjukkan kepada anda semua cabang.git checkout --melacak asal/<cabang yang ingin anda pelajari>
Memverifikasi apakah anda berada di cabang yang diinginkan dengan perintah berikut;
Output akan seperti ini;
Perhatikan tanda * tanda yang menunjukkan arus cabang.
Lebih baik terlambat daripada tidak, tapi di sini adalah cara terbaik untuk melakukan hal ini:
Pada titik ini anda memiliki salinan lengkap dari remote repo dengan semua itu's cabang (verifikasi dengan
git branch
). Anda dapat menggunakan--cermin
bukan- telanjang
jika anda remote repo telah remote sendiri.Hanya melakukan ini:
Anda lihat, 'git clone git://contoh.com/myprojectt' mengambil semuanya, bahkan cabang-cabang, anda hanya perlu checkout mereka, maka cabang lokal anda akan dibuat.
Anda hanya perlu menggunakan "git clone" untuk mendapatkan semua cabang-cabang.
Meskipun anda hanya melihat master cabang, anda dapat menggunakan "git branch - " untuk melihat semua cabang-cabang.
Dan anda dapat beralih ke setiap cabang yang sudah anda miliki.
Don't khawatir bahwa setelah anda "git clone", anda don't perlu untuk menghubungkan dengan remote repo, "git branch - " dan "git checkout " ini dapat berjalan dengan sukses ketika anda menutup wifi anda. Jadi hal ini membuktikan bahwa ketika anda melakukan "git clone", itu sudah disalin semua cabang dari remote repo. Setelah itu, anda don't perlu remote repo, lokal anda sudah memiliki semua cabang' kode.
A
git clone
seharusnya untuk menyalin seluruh repositori. Coba kloning itu, dan kemudian jalankan git branch -a. Itu harus daftar semua cabang-cabang. Jika kemudian anda ingin beralih ke cabang "anu" bukan "master", menggunakan git checkout foo
.Menggunakan alat git_remote_branch (anda perlu menginstal Ruby di komputer anda). It's dibangun khusus untuk membuat remote branch manipulasi mati mudah.
Setiap kali ia melakukan operasi atas nama anda, mencetak dalam warna merah di konsol. Seiring waktu, mereka akhirnya tetap ke otak anda :-)
Jika anda don't ingin grb untuk menjalankan perintah atas nama anda, hanya menggunakan 'menjelaskan' fitur. Perintah yang akan dicetak ke konsol anda bukan dieksekusi untuk anda.
Akhirnya, semua perintah alias, untuk membuat lebih mudah menghafal.
Catatan bahwa ini adalah alpha software ;-)
Berikut ini's bantuan ketika anda menjalankan grb membantu:
Menjelaskan meta-perintah: anda juga dapat menambahkan perintah dengan kata kunci 'menjelaskan'. Alih-alih menjalankan perintah, git_remote_branch hanya akan menampilkan daftar perintah yang anda butuhkan untuk menjalankan untuk mencapai tujuan itu.
Contoh: grb menjelaskan membuat grb menjelaskan membuat my_branch github
Semua perintah juga memiliki alias: membuat: buat, baru delete: menghapus, menghancurkan, membunuh, menghilangkan, rm publish: mempublikasikan, remotize rename: mengubah nama, rn, mv, bergerak track: jalur, ikuti, ambil, ambil
semua jawaban yang saya lihat di sini adalah valid, tetapi ada banyak cara yang lebih bersih untuk menduplikasi sebuah repositori dan untuk menarik semua cabang sekaligus.
Ketika anda menduplikasi sebuah repositori semua informasi dari cabang-cabang adalah benar-benar download tapi cabang-cabang yang tersembunyi. Dengan perintah
anda dapat menampilkan semua cabang-cabang dari repositori, dan dengan perintah
anda kemudian dapat "download" mereka secara manual satu per satu.
Namun, ketika anda ingin clone repo dengan banyak cabang semua cara-cara yang digambarkan di atas adalah panjang dan membosankan dalam hal yang jauh lebih bersih dan cara yang lebih cepat yang akan saya tampilkan, meskipun itu's sedikit rumit. Anda perlu tiga langkah untuk mencapai hal ini:
membuat folder baru pada mesin anda dan clone cermin salinan .git folder dari repositori:
repositori lokal di dalam folder my_repo_folder masih kosong, hanya ada yang tersembunyi .git folder sekarang anda bisa melihat dengan "ls -alt" perintah dari terminal.
beralih repositori ini dari kosong (bare) repositori untuk reguler repositori dengan mengganti nilai boolean "telanjang" dari git konfigurasi palsu:
Ambil segala sesuatu yang di dalam folder saat ini dan membuat semua cabang pada mesin lokal, sehingga membuat hal ini normal repo.
Jadi sekarang anda bisa ketik perintah "git branch" dan anda dapat melihat bahwa semua cabang di-download.
Ini adalah cara cepat di mana anda dapat menduplikasi sebuah repositori git dengan semua cabang-cabang sekaligus, tapi itu's tidak sesuatu yang anda ingin lakukan untuk setiap proyek dengan cara ini.
Kloning dari repo lokal tidak akan bekerja dengan git clone & git fetch: banyak cabang/kategori akan tetap unfetched.
Untuk mendapatkan klon dengan semua cabang-cabang dan tag.
Untuk mendapatkan klon dengan semua cabang-cabang dan kategori, tetapi juga dengan kerja copy:
OK, ketika anda clone repo, anda memiliki semua cabang yang ada...
Jika anda hanya melakukan
git branch
, mereka adalah jenis yang tersembunyi...Jadi jika anda'd ingin melihat semua cabang nama, hanya cukup tambahkan
--semua
bendera seperti ini:git branch --semua
ataugit branch -a
Jika anda hanya checkout ke cabang, anda mendapatkan semua yang anda butuhkan.
Tapi bagaimana jika cabang yang dibuat oleh orang lain setelah anda clone?
Dalam hal ini, lakukan:
git fetch
dan memeriksa semua cabang lagi...
Jika anda ingin mengambil dan checkout pada saat yang sama, anda dapat melakukan:
git fetch && git checkout your_branch_name
Juga dibuat gambar di bawah ini untuk anda untuk menyederhanakan apa yang saya katakan:
Melihat pada salah satu jawaban untuk pertanyaan saya melihat bahwa itu's mungkin untuk mempersingkat masa itu:
Tapi hati-hati, jika salah satu cabang yang disebut sebagai misalnya admin_master itu tidak't bisa di-download!
Terima kasih untuk bigfish untuk ide asli