Saya tahu cara membuat cabang baru yang melacak cabang jarak jauh, tetapi bagaimana cara membuat cabang yang ada melacak cabang jarak jauh?
Saya tahu saya bisa mengedit .git/config
file, tetapi tampaknya harus ada cara yang lebih mudah.
git
branch
git-branch
Pat Notz
sumber
sumber
git push -u origin branch-name
.git pull
akan sering memberikan pesan bermanfaat tentang perintah yang tepat untuk mengatur informasi pelacakangit branch --set-upstream-to origin/<branch>
--set-upstream
menghasilkan kesalahan:fatal: the '--set-upstream' option is no longer supported. Please use '--track' or '--set-upstream-to' instead.
begitugit branch --set-upstream-to origin/<branch name>
juga perintah saat ini yang berfungsi.Jawaban:
Diberikan cabang
foo
dan remoteupstream
:Pada Git 1.8.0:
Atau, jika cabang lokal
foo
bukan cabang saat ini:Atau, jika Anda ingin mengetikkan perintah yang lebih panjang, ini sama dengan dua di atas:
Pada Git 1.7.0:
Catatan:
foo
untuk melacak cabangfoo
jarak jauh dari jarak jauhupstream
.git fetch upstream
sebelumnya.Lihat juga: Mengapa saya harus melakukan `--set-upstream` sepanjang waktu?
sumber
git branch --set-upstream master origin/master
akan sama dengan apa yang secara otomatis dilakukan ketika Anda mengkloning repositori.git push -u origin foo
viaAnda dapat melakukan hal berikut (dengan asumsi Anda diperiksa pada master dan ingin mendorong ke master cabang jarak jauh):
Atur 'jarak jauh' jika Anda belum memilikinya
Sekarang konfigurasikan master untuk diketahui untuk dilacak:
Dan dorong:
sumber
error: the requested upstream branch 'upstream/master' does not exist
.origin
dan tidakupstream
.Saya melakukan ini sebagai efek samping dari mendorong dengan
-u
opsi seperti padaOpsi panjang yang setara adalah
--set-upstream
.The
git-branch
perintah juga mengerti--set-upstream
, namun penggunaannya dapat membingungkan. Versi 1.8.0 memodifikasi antarmuka.Katakanlah Anda memiliki
foo
cabang lokal dan ingin ia memperlakukan cabang dengan nama yang sama dengan hulu. Wujudkan ini denganatau hanya
sumber
--set-upstream-to=...
hanya apa yang saya cari.Anda mungkin menemukan
git_remote_branch
alat ini berguna. Ini menawarkan perintah sederhana untuk membuat, menerbitkan, menghapus, melacak & mengubah nama cabang jarak jauh. Salah satu fitur yang bagus adalah Anda dapat memintagrb
perintah untuk menjelaskan perintah git apa yang akan dijalankannya.sumber
Sebenarnya untuk jawaban yang diterima untuk bekerja:
sumber
Saya percaya bahwa pada awal Git 1.5.x Anda bisa membuat cabang lokal
$BRANCH
melacak cabang terpencilorigin/$BRANCH
, seperti ini.Mengingat itu
$BRANCH
danorigin/$BRANCH
ada, dan saat ini Anda belum check-out$BRANCH
(beralih jika sudah), lakukan:Ini dibuat ulang
$BRANCH
sebagai cabang pelacakan. The-f
kekuatan penciptaan meskipun$BRANCH
ada sudah.--track
opsional jika standar yang biasa ada (yaitu, parameter git-configbranch.autosetupmerge
benar).Catatan, jika
origin/$BRANCH
belum ada, Anda dapat membuatnya dengan mendorong lokal Anda$BRANCH
ke repositori jarak jauh dengan:Diikuti oleh perintah sebelumnya untuk mempromosikan cabang lokal menjadi cabang pelacakan.
sumber
git push origin $BRANCH
adalah apa yang saya cari.git branch -f --track $BRANCH origin/$BRANCH
melakukan trik.1- memperbarui meta-data lokal Anda menggunakan: git fetch --all
2- tunjukkan cabang jarak jauh dan lokal Anda menggunakan: git branch -a , lihat Screenshot berikut
3 - beralih ke cabang target, yang ingin Anda tautkan dengan remote: using
git checkout branchName
contoh:
4- Tautkan cabang lokal Anda ke cabang jarak jauh menggunakan:
cabang git --set-upstream-ke nameOfRemoteBranch
NB: nameOfRemoteBranch : untuk menyalin dari output langkah 2 "git branch -r"
Contoh penggunaan:
sumber
Pastikan Anda menjalankan:
untuk dapat mendorong masalah gratis
sumber
git-config(1)
halaman buku panduan,tracking
adalah sinonim dariupstream
.Mengedit
.git/config
mungkin cara termudah dan tercepat. Lagi pula, itulah yang dilakukan perintah Git untuk menangani cabang jarak jauh.Jika Anda tidak ingin mengotori file dengan tangan (dan itu tidak sulit untuk dilakukan), Anda selalu dapat menggunakannya
git config
untuk melakukannya ... tapi sekali lagi, itu hanya akan mengedit.git/config
file.Tentu saja ada cara untuk secara otomatis melacak cabang jarak jauh ketika menggunakan
git checkout
(dengan melewati--track
flag, misalnya), tetapi perintah ini bekerja dengan cabang baru , bukan yang sudah ada.sumber
Singkatnya
Ini akan membuat
yourLocalBranchName
trek Anda disebut cabang jarak jauhdevelop
.sumber
git push -u origin branch
(atau--set-upstream-to
) sebagai gantinya--set-upstream
dan--track
? Saya tidak begitu mengerti mengapa saya harus menggunakan salah satunya.Untuk 1.6.x, itu bisa dilakukan menggunakan alat git_remote_branch :
Itu akan menyebabkan Git membuat
foo
trekupstream/foo
.sumber
Saya menggunakan perintah berikut (Misalkan nama cabang lokal Anda adalah "branch-name-local" dan nama cabang jarak jauh adalah "branch-name-remote"):
Jika cabang lokal dan jauh memiliki nama yang sama, maka lakukan saja hal berikut:
sumber
Di sini, menggunakan
github
dangit version 2.1.4
, lakukan saja:Dan remote datang oleh itelsef, bahkan jika tidak ditautkan secara lokal:
Tapi tentu saja, masih belum ada cabang lokal:
Lihat? Sekarang jika Anda hanya checkout develp, itu akan melakukan keajaiban secara otomatis:
Begitu mudah!
Ringkasan. Jalankan saja 2 perintah ini:
sumber
Gunakan Opsi '--track'
Setelah
git pull
:git checkout --track <remote-branch-name>
Atau:
git fetch && git checkout <branch-name>
sumber
Untuk membuat cabang baru, kita bisa menggunakan perintah berikut
Untuk cabang yang sudah dibuat untuk membuat tautan antara jarak jauh kemudian dari cabang itu gunakan perintah di bawah inisumber
Ini bukan jawaban langsung untuk pertanyaan ini, tetapi saya ingin meninggalkan catatan di sini untuk siapa saja yang mungkin memiliki masalah yang sama dengan saya ketika mencoba mengkonfigurasi cabang hulu.
Berhati-hatilah terhadap push.default .
Dengan versi git yang lebih lama, default-nya cocok , yang akan menyebabkan perilaku yang sangat tidak diinginkan jika Anda miliki, misalnya:
Pelacakan "master" cabang lokal ke asal / master
Cabang terpencil "upstream" pelacakan ke hulu / master
Jika Anda mencoba "git push" ketika berada di cabang "upstream", dengan pencocokan push.default git secara otomatis akan mencoba menggabungkan "master" cabang lokal menjadi "upstream / master", menyebabkan banyak kekacauan.
Ini memberi lebih banyak perilaku waras:
git config --global push.default hulu
sumber
Dengan cara yang agak terkait saya mencoba menambahkan cabang pelacakan jarak jauh ke cabang yang ada, tetapi tidak memiliki akses ke repositori jarak jauh pada sistem di mana saya ingin menambahkan cabang pelacakan jarak jauh (karena saya sering mengekspor salinan dari ini repo via sneakernet ke sistem lain yang memiliki akses untuk mendorong ke remote itu). Saya menemukan bahwa tidak ada cara untuk memaksa menambahkan cabang jarak jauh pada lokal yang belum diambil (jadi lokal tidak tahu bahwa cabang ada pada jarak jauh dan saya akan mendapatkan kesalahan:)
the requested upstream branch 'origin/remotebranchname' does not exist
.Pada akhirnya saya berhasil menambahkan cabang jarak jauh baru yang sebelumnya tidak dikenal (tanpa mengambil) dengan menambahkan file kepala baru di
.git/refs/remotes/origin/remotebranchname
dan kemudian menyalin ref (eyeballing adalah tercepat, lumpuh seperti itu ;-) dari sistem dengan akses ke asal repo ke workstation (dengan repo lokal tempat saya menambahkan cabang jarak jauh aktif).Setelah itu selesai, saya bisa menggunakannya
git branch --set-upstream-to=origin/remotebranchname
sumber
atau hanya dengan:
beralih ke cabang jika Anda belum memilikinya:
Lari
dan Anda siap untuk:
Anda dapat melihat file konfigurasi untuk melihat apa yang melacak apa dengan menjalankan:
Sangat menyenangkan mengetahui hal ini, ini menunjukkan cabang mana yang dilacak dan mana yang tidak. :
sumber
Bagi siapa pun, seperti saya, hanya ingin menyinkronkan nama cabang lokal Anda dengan nama cabang jarak jauh, berikut ini adalah perintah praktis:
sumber
Untuk menghindari mengingat apa yang perlu Anda lakukan setiap kali Anda menerima pesan:
Anda dapat menggunakan skrip berikut yang menetapkan asal sebagai hulu untuk cabang saat ini Anda berada.
Dalam kasus saya, saya hampir tidak pernah menetapkan sesuatu selain asal sebagai default upstream . Saya juga hampir selalu menyimpan nama cabang yang sama untuk cabang lokal dan jauh. Jadi yang berikut ini cocok untuk saya:
sumber
Ini juga akan berhasil
sumber