Saya ingin mengambil satu cabang (tidak semuanya) dari repositori jarak jauh dan membuat cabang pelacakan lokal yang dapat melacak pembaruan lebih lanjut ke cabang jarak jauh itu. Cabang-cabang lain di repositori jarak jauh sangat besar, jadi saya ingin menghindari mengambilnya. Bagaimana saya melakukan ini?
Sunting: Saya menemukan jawabannya sendiri tetapi StackOverflow menolak untuk membiarkan saya memberikan jawaban sebagai jawaban, jadi saya akan menaruhnya di sini di pertanyaan.
Anda menggunakan opsi -t untuk mendapatkan add jarak jauh, misalnya:
git remote add -t remote-branch remote-name remote-url
Anda dapat menggunakan beberapa -t branch
opsi " " untuk mengambil banyak cabang.
Jawaban:
Bekerja untukku.
sumber
FETCH_HEAD
setelah diambil . Terima kasih!git checkout FETCH_HEAD
untuk checkoutremote_name
adalahorigin
. misal:git fetch origin <branch_name>
Salah satu caranya adalah sebagai berikut:
Ini tidak mengatur pelacakan.
Untuk informasi lebih lanjut, lihat dokumentasi git fetch .
EDIT : Seperti catatan @ user1338062 di bawah ini : jika Anda belum memiliki klon lokal repositori tempat Anda ingin menambahkan cabang baru, tetapi Anda ingin membuat repositori lokal baru, maka itu
git clone --branch <branch_name> --single-branch <repo_url>
memberikan solusi yang lebih pendek.sumber
git checkout <branchname>
, saya melihat bahwa git secara otomatis mengatur cabang pelacakan, jika satu-satunya cabang dengan nama itu adalah cabang jarak jauh.git clone
sekarang mendukung--branch
dan--single-branch
opsi, saya memposting jawaban dengan demonstrasi .Saya tahu sudah ada banyak jawaban, tetapi ini adalah langkah-langkah yang berhasil bagi saya:
git fetch <remote_name> <branch_name>
git branch <branch_name> FETCH_HEAD
git checkout <branch_name>
Ini didasarkan pada jawaban oleh @Abdulsattar Mohammed, komentar oleh @Christoph pada jawaban itu, dan pertanyaan-pertanyaan stack overflow lainnya dan jawaban mereka:
sumber
Untuk memperbarui remote yang ada untuk melacak cabang tertentu, gunakan saja:
Dari
git help remote
:sumber
--single-branch
repositori dan tidak dapat mengunduh cabang tambahan nanti. Terima kasih!Salah satu cara untuk melakukannya:
di .git / config fetch untuk repo jarak jauh harus diatur untuk mengambil cabang apa pun:
untuk mengambil cabang jarak jauh:
untuk membuat cabang lokal 'nama-cabang' yang diatur untuk melacak 'cabang-nama' cabang jauh dari asal.
untuk mendaftar semua cabang
sumber
Disalin dari pos penulis:
Gunakan
-t
opsi untukgit remote add
, misalnya:Anda dapat menggunakan banyak
-t branch
opsi untuk mengambil banyak cabang.sumber
Jika Anda ingin mengubah default untuk "git pull" dan "git fetch" menjadi hanya mengambil cabang tertentu maka Anda dapat mengedit .git / config sehingga konfigurasi jarak jauh terlihat seperti:
Ini hanya akan mengambil master dari asal secara default. Lihat untuk info lebih lanjut: https://git-scm.com/book/en/v2/Git-Internals-The-Refspec
EDIT: Baru menyadari ini adalah hal yang sama dengan opsi -t untuk git remote add. Setidaknya ini adalah cara yang bagus untuk melakukannya setelah remote ditambahkan jika Anda tidak ingin menghapus remote dan menambahkannya lagi menggunakan -t.
sumber
Demi kelengkapan, berikut adalah contoh perintah untuk checkout baru:
Seperti yang disebutkan dalam jawaban lain, set
remote.origin.fetch
seperti ini:sumber
versi git: 2.74
Beginilah cara saya melakukannya:
sumber
git versi 2.16.1.windows.4
Cukup melakukan git, mengambil remoteRepositoryName, branchName
(eg: git fetch origin my_local_branch)
sudah cukup. Pengambilan akan dilakukan dan cabang lokal baru akan dibuat dengan nama yang sama dan pelacakan akan diatur ke cabang jarak jauh.Kemudian lakukan checkout checkout branchName
sumber
git branch
sampai Anda checkout ke dalamnyaSolusi saya:
jika Anda tidak memiliki klon lokal:
sumber
<remote_name>
yang ingin Anda gunakan (jangan ragu untuk menggunakanorigin
dan lewati langkah 1.)git remote add <remote_name> <remote_url>
git fetch <remote_name> <branch>
<your_local_branch_name>
yang ingin Anda gunakan. Bisa sama dengan<branch>
.git checkout <remote_name>/<branch> -b <your_local_branch_name>
Semoga itu bisa membantu!
sumber
Jawabannya sebenarnya tergantung pada daftar cabang pelacakan yang Anda miliki saat ini. Anda dapat mengambil cabang tertentu dari jarak jauh dengan
git fetch <remote_name> <branch_name>
hanya jika cabang sudah ada di daftar cabang pelacakan (Anda dapat memeriksanya dengangit branch -r
).Misalkan saya telah mengkloning remote dengan opsi --single-branch sebelumnya, dan dalam hal ini satu-satunya cabang pelacakan yang saya miliki adalah yang "dikloning". Saya sedikit bingung dengan menyarankan untuk mengubah konfigurasi git secara manual, serta dengan mengetik
git remote add <remote_name> <remote_url>
perintah. Ketika "git remote add" mengatur remote baru, itu jelas tidak bekerja dengan repositori jarak jauh yang ada; memasok opsi "-t branch" tidak membantu saya.Jika remote ada, dan cabang yang ingin Anda ambil ada di remote itu:
Periksa
git branch -r
apakah Anda dapat melihat cabang ini sebagai cabang pelacakan. Jika tidak (seperti dalam kasus saya dengan klon cabang tunggal), tambahkan cabang ini ke daftar cabang pelacakan dengan "git remote set-branch" dengan opsi --add:git remote set-branches --add <remote_name> <branch_name>
Sekarang Anda dapat mengambil cabang tertentu (duplikat di sini jawaban lain):
git fetch <remote_name> <branch_name>
Dan buat dan checkout cabang lokal baru dengan "checkout --track", yang akan diberi "branch_name" yang sama dengan cabang pelacakan:
git checkout --track <remote_name>/<branch_name>
sumber
Cara paling sederhana untuk melakukannya
Contoh: Saya ingin mengambil cabang uat dari asal dan beralih ke ini sebagai cabang saat ini.
sumber