Saya memiliki repositori Git lokal yang disebut 'kerangka' yang saya gunakan untuk menyimpan kerangka proyek. Ini memiliki beberapa cabang, untuk berbagai jenis proyek:
casey@agave [~/Projects/skeleton] git branch
* master
rails
c
c++
Jika saya ingin memeriksa cabang utama untuk proyek baru, saya bisa melakukannya
casey@agave [~/Projects] git clone skeleton new
Initialized empty Git repository in /Users/casey/Projects/new/.git/
dan semuanya seperti yang saya inginkan. Secara khusus, cabang master baru menunjuk ke cabang master kerangka, dan saya bisa mendorong dan menarik untuk bergerak di sekitar perubahan pengaturan proyek dasar.
Namun, yang tidak berhasil adalah jika saya ingin mengkloning cabang lain. Saya tidak bisa mendapatkannya sehingga saya hanya menarik cabang yang saya inginkan, misalnya rails
cabang, dan kemudian repositori baru memilikimaster
cabang yang mendorong ke dan menarik dari cabang kerangka repositori rails
, secara default.
Apakah ada cara yang baik untuk melakukan ini? Atau, mungkin ini bukan cara yang diinginkan Git agar saya menyusun berbagai hal, dan saya tentu terbuka untuk itu. Mungkin saya harus memiliki beberapa repositori, dengan repositori kerangka Ruby on Rails melacak repositori master skeleton? Dan setiap proyek individu kloning repositori kerangka Ruby on Rails.
git branch -a
ditunjukkan?git checkout -b newbranch origin/branchiwant
bekerja lebih baik (tanpa--track
opsi)Jawaban:
Catatan: git1.7.10 (April 2012) sebenarnya memungkinkan Anda untuk mengkloning hanya satu cabang :
Anda bisa melihatnya di
t5500-fetch-pack.sh
:Tobu berkomentar bahwa:
Dan sejak Git 1.9.0 (Februari 2014), klon dangkal mendukung transfer data (push / pull), sehingga opsi ini bahkan lebih berguna sekarang.
Lihat lebih banyak di " Apakah
git clone --depth 1
(klon dangkal) lebih berguna daripada hasilnya? "."Membatalkan" klon dangkal dirinci pada " Konversi klon dangkal menjadi klon penuh " (git 1.8.3+)
Seperti komentar Chris :
Dengan Git 2.26 (Q1 2020), "
git clone --recurse-submodules --single-branch
" sekarang menggunakan opsi cabang tunggal yang sama ketika mengkloning submodul .Lihat komit 132f600 , komit 4731957 (21 Feb 2020) oleh Emily Shaffer (
nasamuffin
) .(Digabung oleh Junio C Hamano -
gitster
- dalam commit b22db26 , 05 Mar 2020)sumber
git clone <url> --branch <branch> --single-branch <folder>
bekerja seperti pesona.clone --depth 1
cara termudah untuk menghemat bandwidth.--depth 1
tidak aman bagi pengguna karena mereka mungkin ingin benar-benar mendorong / menarik dengan klon baru.--single-branch
adalahgit config remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
dangit fetch --unshallow
(git v2.1.4)Salah satu caranya adalah dengan menjalankan yang berikut ini.
Dimana
branch_name
cabang pilihan Anda dan "/ folder Anda" adalah folder tujuan untuk cabang itu. Memang benar bahwa ini akan membawa cabang lain memberi Anda kesempatan untuk bergabung bolak-balik.Memperbarui
Sekarang, dimulai dengan Git 1.7.10, sekarang Anda dapat melakukan ini
sumber
--single-branch
untuk mengambil hanya sejarah yang terkait dengan cabang ini alih-alih semua riwayat & tag yang berisi repositori.Menggunakan Git versi 1.7.3.1 (pada Windows), inilah yang saya lakukan (
$BRANCH
adalah nama cabang yang ingin saya checkout dan$REMOTE_REPO
merupakan URL repositori jarak jauh yang ingin saya klon dari):Keuntungan dari pendekatan ini adalah bahwa panggilan berikutnya
git pull
(ataugit fetch
) juga hanya akan mengunduh cabang yang diminta.sumber
git clone -b $BRANCH $REMOTE_REPO $BRANCH
afik mereka sama?git clone -b
memberi Anda semua referensi jarak jauh (semua cabang dan tag jarak jauh) sebagaigit branch -a
pertunjukan. Dengan skrip saya, Anda hanya mendapatkan satu referensi.-t $BRANCH
berfungsi bahkan tanpa-f
, yang akan langsung diambil. Kemudian,git fetch origin
akan mengambil, dangit checkout $BRANCH
akan mendirikan cabang lokal dan checkout. Itu berguna ketika Anda perlu mengkonfigurasi remote sebelum mengambil, misalnyagit config remote.origin.uploadpack=/bin/upload-pack
.branch -a
menunjukkanorigin/$BRANCH
. Melakukangit checkout origin/$BRANCH
perbaikan ini.Anda dapat mencoba cara lama:
Apa yang dilakukan adalah:
Semoga itu akan menjadi seperti apa yang Anda cari.
sumber
git branch -r
?git branch -r
tidak memberikan output.Anda dapat melakukannya dengan menggunakan perintah di bawah ini:
sumber
Dari halaman manual git-clone :
--single-branch
adalah teman Anda selama klon ingat untuk menggunakan dengan--branch <branch name>
atau hanya HEAD primer jarak jauh yang akan dikloning (master secara default)Selalu ingat untuk melakukan Ctrl+ F5membaca sumber baru, bukan yang dari cache :-) (Saya tidak begitu tahu tentang opsi ini untuk waktu yang lama.)
sumber
Cukup masukkan URL dan nama cabang.
sumber
Klon hanya satu cabang. Ini cara termudah:
sumber
Untuk mengkloning cabang tertentu yang dapat Anda lakukan:
git clone --branch yourBranchName [email protected]
sumber
Untuk mengkloning cabang Git Anda tidak memiliki kunci publik untuk, gunakan ini:
sumber
Buka cmd.
cd folder_name
(masukkan jalur tempat mengkloning cabang)Hanya satu perintah:
sumber
Sedikit terlambat tetapi saya ingin menambahkan solusi yang saya gunakan untuk menyelesaikan masalah ini. Saya menemukan solusinya di sini .
Ngomong-ngomong, pertanyaannya sepertinya bertanya 'bagaimana memulai proyek baru dari cabang repo lain?'
Untuk ini, solusi yang saya gunakan adalah membuat repo baru di github atau di mana pun. Ini akan berfungsi sebagai repo untuk proyek baru Anda.
Di mesin lokal Anda, navigasikan ke proyek yang memiliki cabang yang ingin Anda gunakan sebagai templat untuk proyek baru Anda.
Jalankan perintah:
Apa yang akan dilakukan adalah mendorong old_branch ke new-repo dan menjadikannya cabang utama dari repo baru.
Anda kemudian hanya perlu mengkloning repo baru ke direktori lokal proyek baru Anda dan Anda memiliki proyek baru dimulai di cabang lama.
sumber
Mari kita ambil contoh repo termos. Ini memiliki 3 cabang selain master. Mari kita periksa cabang jarak jauh 1.1.x
mengkloning git repo
cd ke repo.
ambil cabang jarak jauh 1.1.x
checkout cabang
Anda akan beralih ke cabang 1.1.x dan akan melacak cabang 1.1.x jauh.
sumber
Mirip dengan apa yang dikatakan @ nosaiba-darwish di sini: di sini
Inilah yang biasanya kami lakukan di perusahaan kami:
git clone -b <name_of_branch> --single-branch <git_url> folder_to_clone_locally
sumber
Jika Anda ingin klon dangkal, Anda dapat melakukan ini dengan:
--depth=1
tersirat--single-branch
.sumber
Ada 2 solusi utama untuk ini:
git clone -b <BRANCH_NAME> <GIT_REMOTE_URL>
Contoh: git clone -b tahir https://github.com/Repository/Project.git
Perintah berikut akan mengkloning tahir cabang dari repositori git. Perintah di atas hanya mengkloning cabang tertentu tetapi mengambil detail cabang lain. Anda dapat melihat semua detail cabang dengan perintah.
git branch -a
git clone -b <BRANCH_NAME> --single-branch <GIT_REMOTE_URL>
Contoh: git clone -b tahir --single-branch https://github.com/Repository/Project.git
Sekarang jika Anda melakukan
git branch -a
, itu hanya akan menunjukkan cabang tunggal Anda saat ini yang telah Anda kloning dan tidak semua cabang. Jadi itu tergantung pada Anda bagaimana Anda menginginkannya.Semoga ini bisa membantu seseorang suatu hari !! ...
sumber
Anda dapat menggunakan perintah ini untuk membuka cabang tunggal dan mengganti nama folder jika Anda ingin tetap bercabang sendirian
contoh
sumber
git clone --branch {branch-name} {repo-URI}
Contoh:
git clone --branch dev https://github.com/ann/cleaningmachine.git
{branch-name}
{repo-URI}
sumber
Dapat dilakukan dalam 2 langkah
Kloning repositori
git clone <http url>
Periksa cabang yang Anda inginkan
git checkout $BranchName
sumber