Buat cabang pelacakan Git yang ada menjadi cabang jarak jauh?

Saya tahu cara membuat cabang baru yang melacak cabang jarak jauh, tetapi bagaimana membuat cabang cabang yang ada menjadi cabang jarak jauh?

Saya tahu bahwa saya cukup mengedit file .git/config , tetapi sepertinya harus ada cara yang lebih mudah.

3222
06 февр. Pat Notz ditetapkan pada 06 Februari 2009-02-06 18:14 '09 pada 18:14 2009-02-06 18:14
@ 19 balasan

Mengingat cabang foo dan upstream terpencil:

Mulai dari Git 1.8.0:

 git branch -u upstream/foo 

Atau, jika cabang foo lokal bukan cabang saat ini:

 git branch -u upstream/foo foo 

Atau, jika Anda ingin memasukkan perintah yang lebih lama, mereka setara dengan dua di atas:

 git branch --set-upstream-to=upstream/foo git branch --set-upstream-to=upstream/foo foo 

Mulai dari Git 1.7.0:

 git branch --set-upstream foo upstream/foo 

Catatan:

  • Semua perintah di atas akan memaksa cabang foo lokal untuk melacak cabang foo jarak jauh dari upstream jauh.
  • Sintaksis lama (1.7.x) tidak disarankan untuk mendukung sintaks baru (1. 8+). Sintaks baru harus lebih intuitif dan lebih mudah diingat.
  • Definisi hulu tidak akan berhasil dengan remote yang baru dibuat yang belum dipilih. Dalam hal ini, jalankan git fetch upstream terlebih dahulu.

Lihat juga: Mengapa saya harus melakukan '--set-upstream' sepanjang waktu?

3917
18 февр. Jawab Dan Molding 18 Feb 2010-02-18 06:06 '10 pada 6:06 2010-02-18 06:06

Anda dapat melakukan hal berikut (dengan asumsi Anda telah diekstraksi ke master dan ingin mengirimnya ke cabang master jarak jauh):

Siapkan remote jika Anda belum memilikinya.

 git remote add origin ssh://... 

Sekarang konfigurasikan wizard untuk mengetahui untuk melacak:

 git config branch.master.remote origin git config branch.master.merge refs/heads/master 

Dan klik:

 git push origin master 
222
09 марта '09 в 11:50 2009-03-09 11:50 membalas Paul Hedderly 09 Maret 09 di 11:50 2009-03-09 11:50

Saya melakukan ini sebagai efek samping dari menekan dengan opsi -u , seperti pada

 $ git push -u origin branch-name 

Opsi panjang ekivalen --set-upstream .

Perintah git-branch juga memahami --set-upstream , tetapi penggunaannya bisa menyesatkan. Versi 1.8.0 mengubah antarmuka.

git branch --set-upstream usang dan dapat dihi>git branch [-u|--set-upstream-to] diperkenalkan dengan urutan argumen yang lebih masuk akal.

hellip;

Itu tergoda untuk mengatakan git branch --set-upstream origin/master , tetapi dia memberitahu Git untuk memerintahkan cabang lokal "asal / master" untuk berintegrasi dengan cabang terverifikasi saat ini, yang tidak mungkin bagi pengguna. Opsi ini kedaluwarsa; alih-alih, gunakan yang baru - --set-upstream-to (pendek dan manis -u ).

Katakanlah Anda memiliki cabang foo lokal dan ingin menangani cabang dengan nama yang sama dengan hulu. Lakukan dengan

 $ git branch foo $ git branch --set-upstream-to=origin/foo 

atau adil

 $ git branch --set-upstream-to=origin/foo foo 
141
02 окт. jawaban yang diberikan oleh Greg Bacon 02 Oktober. 2012-10-02 19:24 '12 pada 19:24 2012-10-02 19:24

Anda dapat menemukan alat git_remote_branch . Ini menawarkan perintah sederhana untuk membuat, menerbitkan, menghapus, melacak, dan mengganti nama cabang yang dihapus. Salah satu fitur yang bagus adalah Anda dapat meminta perintah grb untuk menjelaskan perintah git mana yang akan dijalankan.

51
06 февр. Jawaban yang diberikan oleh James Mead pada 06 Februari. 2009-02-06 20:11 '09 pada 20:11 2009-02-06 20:11

Sebenarnya untuk respons yang diterima terhadap pekerjaan:

49
23 нояб. Jawabannya diberikan Hedgehog 23 November. 2010-11-23 15:08 '10 pada 15:08 2010-11-23 15:08

Saya percaya bahwa kembali di Git 1.5.x Anda dapat membuat cabang $BRANCH lokal melacak origin/$BRANCH jauh origin/$BRANCH cabang origin/$BRANCH seperti ini.

Menimbang bahwa ada $BRANCH dan origin/$BRANCH , dan Anda belum memeriksa $BRANCH saat ini (lepaskan jika ada):

 git branch -f --track $BRANCH origin/$BRANCH 

Ini menciptakan $BRANCH sebagai cabang pelacakan. -f pasukan, meskipun $BRANCH sudah ada. --track adalah opsional jika default normal diatur (mis. branch.autosetupmerge git -config branch.autosetupmerge ).

Perhatikan bahwa jika origin/$BRANCH belum ada, Anda dapat membuatnya dengan mendorong $BRANCH lokal ke repositori jarak jauh dengan:

 git push origin $BRANCH 

Mengikuti perintah sebelumnya untuk mendorong cabang lokal ke cabang pelacakan.

42
28 июля '10 в 12:33 2010-07-28 12:33 jawabannya diberikan oleh wu-lee 28 Juli, '10 pada 12:33 2010-07-28 12:33

1- perbarui metadata lokal menggunakan: git fetch --all

2019

Pastikan Anda menjalankan:

 git config push.default tracking 

untuk tidak memiliki masalah

22
30 авг. jawabannya diberikan romanlv 30 agustus . 2011-08-30 00:38 '11 pada 0:38 2011-08-30 00:38

Mengedit .git/config mungkin cara termudah dan tercepat. Inilah yang dilakukan perintah Git untuk menangani cabang jarak jauh.

Jika Anda tidak ingin melakukan hal-hal buruk dengan file secara manual (dan itu tidak terlalu sulit untuk dilakukan), Anda selalu dapat menggunakan git config untuk ini ... tapi sekali lagi, ini hanya mengedit file .git/config .

Tentu saja, ada cara untuk secara otomatis melacak cabang jarak jauh ketika menggunakan git checkout (misalnya, melewati flag --track ), tetapi perintah ini bekerja dengan cabang baru, dan tidak dengan yang sudah ada.

21
06 февр. jawabannya diberikan mipadi 06 Feb. 2009-02-06 18:17 '09 pada 6:17 PM 2009-02-06 18:17

Singkatnya

 git branch --set-upstream yourLocalBranchName origin/develop 

Ini akan menyebabkan yourLocalBranchName Anda melacak cabang jarak jauh bernama develop .

16
09 окт. jawabannya diberikan MadNik 09 Oktober. 2012-10-09 10:19 '12 pada 10:19 2012-10-09 10:19

Untuk 1.6.x, ini bisa dilakukan dengan alat git_remote_branch :

 grb track foo upstream 

Ini akan menyebabkan Git membuat track foo upstream/foo .

14
01 июня '10 в 5:23 2010-06-01 05:23 jawabannya diberikan wik 01 Juni '10 pada 5:23 2010-06-01 05:23

Gunakan opsi '--track'

  • Setelah git pull :

    git checkout --track <remote-branch-name>

  • Atau:

    git fetch git checkout <branch-name>

8
02 авг. Jawaban diberikan oleh Loukan ElKadi 02 Agu. 2016-08-02 13:23 '16 pada 1:23 siang 2016-08-02 13:23

Di sini, menggunakan github dan git version 2.1.4 , jalankan saja:

 $ git clone git@github.com:user/repo.git 

Dan konsol dikirim melalui itelsef, bahkan jika mereka tidak terhubung secara lokal:

 $ git remote show origin * remote origin Fetch URL: git@github.com:user/repo.git Push URL: git@github.com:user/repo.git HEAD branch: master Remote branches: develop tracked <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< master tracked Local branch configured for 'git pull': master merges with remote master Local ref configured for 'git push': master pushes to master (up to date) 

Namun, tentu saja, masih belum ada cabang lokal:

 $ git branch * master <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 

Lihat Sekarang, jika Anda hanya melakukan pengembangan, itu akan secara otomatis melakukan keajaiban:

 $ git checkout develop Branch develop set up to track remote branch develop from origin. Switched to a new branch 'develop' 

Sangat sederhana!


Ringkasan Jalankan saja dua perintah berikut:

 $ git clone git@github.com:user/repo.git $ git checkout develop 
8
30 нояб. Jawabannya diberikan oleh Dr Beco pada 30 November. 2015-11-30 02:04 '15 pada 2:04 2015-11-30 02:04

Untuk membuat cabang baru, kita dapat menggunakan perintah berikut.

  git checkout --track -b contoh asal / contoh 
Untuk cabang yang sudah dibuat untuk membuat koneksi antara remote, dan kemudian dari cabang ini, gunakan perintah berikut

  git branch -u origin / remote-branch-name 
6
20 апр. balasan yang diberikan oleh jithu reddy 20 Apr 2017-04-20 13:24 '17 pada pukul 13:24 2017-04-20 13:24

Saya menggunakan perintah berikut (misalkan nama cabang lokal Anda adalah "nama cabang-lokal" dan nama cabang jarak jauh adalah "nama-cabang-jauh"):

 $ git branch --set-upstream-to=origin/branch-name-remote branch-name-local 

Jika cabang lokal dan jauh memiliki nama yang sama, cukup lakukan hal berikut:

 $ git branch --set-upstream-to=origin/branch-name branch-name 
5
22 дек. Jawabannya diberikan yrazlik 22 Des. 2015-12-22 12:46 '15 pada 12:46 2015-12-22 12:46

Dalam beberapa hal, saya mencoba menambahkan cabang pelacakan jarak jauh ke cabang yang ada, tetapi tidak memiliki akses ke repositori jarak jauh ini dalam sistem, di mana saya ingin menambahkan cabang pelacakan jarak jauh ini (karena saya sering mengekspor salinan repo ini melalui sneakernet ke sistem lain yang memiliki akses untuk mendorong remote ini). Saya menemukan bahwa tidak ada cara untuk secara paksa menambahkan cabang jarak jauh ke cabang lokal yang belum diekstraksi (jadi cabang lokal tidak tahu bahwa cabang ada di komputer jarak jauh, dan saya akan mendapatkan kesalahan: the requested upstream branch 'origin/remotebranchname' does not exist ).

Akibatnya, saya berhasil menambahkan cabang jarak jauh baru yang sebelumnya tidak dikenal (tanpa seleksi), menambahkan file header baru ke .git/refs/remotes/origin/remotebranchname , dan kemudian menyalin ref (bola mata itu tercepat, lumpuh, seolah-olah; - ) dari sistem dengan akses ke repo sumber ke workstation (dengan repo lokal yang saya tambahkan cabang jarak jauh).

Setelah ini selesai, saya bisa menggunakan git branch --set-upstream-to=origin/remotebranchname

4
05 окт. jawabannya diberikan Ville 05 Oktober. 2015-10-05 09:10 '15 pada 9:10 2015-10-05 09:10

Ini bukan jawaban >

Hati-hati dengan push.default .

Dengan versi git yang lebih lama, default-nya cocok , yang akan menyebabkan perilaku yang sangat tidak diinginkan, jika ada, misalnya:

Pelacakan master lokal untuk memulai / menguasai

Melacak cabang hulu terpencil untuk hulu / primer

Jika Anda mencoba "git klik" ketika di cabang "hulu" dengan pemetaan push.default, git akan secara otomatis mencoba menggabungkan cabang "master" lokal menjadi "hulu" / master, yang menyebabkan banyak kekacauan.

Ini memberikan perilaku yang lebih masuk akal:

git config --global push.default hulu

4
21 мая '16 в 15:53 2016-05-21 15:53 jawabannya diberikan oleh Tom Mettam 21 Mei '16 pukul 15:53 2016-05-21 15:53

atau hanya:

beralih ke cabang jika Anda belum memilikinya:

 [za]$ git checkout branch_name 

untuk berlari

 [za]$ git branch --set-upstream origin branch_name Branch origin set up to track local branch brnach_name by rebasing. 

dan Anda siap:

  [za]$ git push origin branch_name 

Anda dapat melihat file konfigurasi untuk melihat apa yang dilacaknya dengan menjalankan:

  [za]$ git config -e 

Ini juga menyenangkan untuk diketahui, ini menunjukkan cabang mana yang dilacak dan mana yang tidak. :

  [za]$ git remote show origin 
3
07 окт. jawabannya diberikan Zee 07 Oktober. 2016-10-07 19:20 '16 pada 19:20 2016-10-07 19:20

Itu akan bekerja juga.

 git branch --set-upstream-to=/< remote>/< branch> < localbranch> 
-1
22 июня '16 в 19:37 2016-06-22 19:37 Jawaban diberikan oleh Abhi pada 22 Juni '16 pada 19:37 2016-06-22 19:37

Pertanyaan lain tentang atau Ajukan Pertanyaan