Git ambil cabang jarak jauh

Rekan saya dan saya sedang mengerjakan repositori yang sama, yang secara teknis kami bercabang menjadi dua cabang, yang masing-masing dirancang untuk proyek yang berbeda, tetapi mereka memiliki kesamaan, jadi kami kadang-kadang ingin mengirim mereka kembali ke master * dari branch .

Namun, saya punya branch . Saya punya pertanyaan, bagaimana rekan saya secara khusus dapat menggunakan utas ini?

Repo git clone tampaknya tidak membuat cabang untuk itu secara lokal, meskipun saya melihat bahwa mereka hidup dalam keadaan cabul setelah dorongan pada bagian saya.

Juga, ketika saya awalnya melakukan cabang, saya melakukan -b checkout . Tidak yakin apakah itu penting?

 $ git branch -r origin/HEAD -> origin/master origin/daves_branch origin/discover origin/master $ git fetch origin discover $ git checkout discover 

Ini adalah perintah yang saya jalankan. Tapi itu pasti tidak berhasil.

Saya ingin dapat memeriksa utas ini, dan kemudian mengirim dan mencatat hanya perubahan cabang dari berbagai kolaborator atau workstation .

1757
02 марта '12 в 20:06 2012-03-02 20:06 David diatur pada 02 Maret '12 pada 20:06 2012-03-02 20:06
@ 26 jawaban

Anda perlu membuat cabang lokal yang melacak cabang jarak jauh. Perintah berikut akan membuat cabang lokal bernama daves_branch , melacak asal cabang jarak jauh / daves_branch . Ketika Anda mengklik perubahan Anda, cabang jarak jauh akan diperbarui.

Untuk git versi terbaru:

 git checkout --track origin/daves_branch 

--track adalah singkatan untuk git checkout -b [branch] [remotename]/[branch] mana [remotename] adalah sumber dalam hal ini, dan [branch] dua kali lebih besar, dalam hal ini daves_branch .

Untuk git 1.5.6.5 Anda membutuhkan ini:

 git checkout --track -b daves_branch origin/daves_branch 

Untuk git 1.7.2.3 dan yang lebih baru, ini sudah cukup (mungkin sudah dimulai sebelumnya, tetapi ini adalah konfirmasi paling awal yang bisa saya temukan dengan cepat):

 git checkout daves_branch 

Perhatikan bahwa dalam versi terbaru git, perintah ini tidak akan membuat cabang lokal dan akan membawa Anda ke keadaan "HEAD dipisahkan". Jika Anda ingin cabang lokal, gunakan --track . Detail lengkap di sini: http://git-scm.com/book/en/v2/Git-branching-Remote-branches#Tracking-branches

2428
02 марта '12 в 20:45 2012-03-02 20:45 jawabannya diberikan ralphtheninja 02 Maret '12 pada 20:45 2012-03-02 20:45

Saya menggunakan fetch diikuti oleh checkout ...

 git fetch <remote> <rbranch>:<lbranch> git checkout <lbranch> 

... di mana <rbranch> adalah rujukan referensi cabang atau sumber jarak jauh, dan <lbranch> masih merupakan cabang atau penerima lokal yang tidak ada yang ingin Anda lacak dan yang mungkin ingin menyebutkan nama yang sama dengan cabang jarak jauh atau sumber rujukan . Ini dijelaskan dalam opsi dalam penjelasan <refspec> .

Git sangat pintar sehingga secara otomatis mengakhiri perintah pertama jika saya mengetik setelah beberapa huruf pertama dari cabang jauh. IE: Saya bahkan tidak perlu menentukan cabang lokal, Git secara otomatis menyalin nama cabang jarak jauh untuk saya. Terima kasih git!

Juga, seperti jawaban dalam pesan serupa ini, SO menunjukkan bahwa jika Anda tidak memberi nama cabang lokal dalam fetch , Anda masih bisa membuatnya ketika Anda memeriksa menggunakan flag -b . IE: git fetch <remote> <branch> , lalu git checkout -b <branch> <remote>/<branch> melakukan hal yang sama dengan jawaban awal saya. Dan, tentu saja, jika repo Anda hanya memiliki satu remote control, maka Anda cukup melakukan git checkout <branch> setelah fetch , dan itu akan membuat cabang lokal untuk Anda. EG: Anda baru saja mengkloning repo dan ingin memeriksa cabang tambahan dari konsol.

Saya percaya bahwa beberapa dokumentasi untuk fetch dapat disalin kata demi kata dari pull . Secara khusus, bagian <refspec> dalam opsi adalah sama. Namun, saya tidak berpikir bahwa fetch tidak akan pernah menjadi merge , jadi jika Anda membiarkan sisi penerima kolom kosong, fetch itu tidak boleh melakukan apa-apa .

CATATAN git fetch <remote> <refspec> ini git fetch <remote> <refspec> tidak cocok untuk git fetch <remote> <refspec>: jadi git fetch <remote> <tag> apa-apa, tetapi git fetch <remote> <tag> sama dengan git fetch <remote> <tag>:<tag> , yang seharusnya menyalin remote <tag> secara lokal.

Saya pikir ini berguna jika Anda ingin menyalin cabang jauh secara lokal, tetapi tidak harus segera memeriksanya. Kalau tidak, saya sekarang menggunakan jawaban yang diterima di atas , yang dijelaskan secara rinci di bagian pertama desain , dan kemudian di bagian opsi di bawah penjelasan --track , karena ini adalah 1-liner. Yah ... seperti 1 liner, karena Anda masih harus menjalankan git fetch <remote> .

FYI: order <refspecs> (sumber: tujuan) menjelaskan metode pre Git -1.7 yang mewah untuk menghapus cabang yang dihapus , yaitu: jangan mengklik tujuan refspec.

792
19 апр. Balas diberikan oleh Mark Mikofski 19 Apr 2013-04-19 03:45 '13 pada 3:45 2013-04-19 03:45

Jika Anda mencoba "memeriksa" cabang jarak jauh baru (yang hanya ada pada jarak jauh, tetapi tidak lokal), inilah yang Anda butuhkan:

 git fetch origin git checkout --track origin/<remote_branch_name> 

Diasumsikan bahwa Anda ingin mengekstrak dari sumbernya. Jika tidak, ganti sumber dengan nama jarak jauh Anda.

292
17 мая '13 в 15:14 2013-05-17 15:14 jawabannya diberikan paneer_tikka 17 Mei 13 di 15:14 2013-05-17 15:14

Untuk menguji myBranch, yang ada dari jarak jauh, bukan lokal - ini berfungsi untuk saya:

 git fetch --all git checkout myBranch 

Saya menerima pesan ini:

 Branch myBranch set up to track remote branch myBranch from origin Switched to a new branch 'myBranch' 
93
12 нояб. Jawaban diberikan oleh David pada 12 November. 2013-11-12 06:36 '13 pada 6:36 2013-11-12 06:36

Gunakan git branch -a ( git branch -a lokal dan jarak jauh) atau git branch -r (hanya cabang terpencil) untuk melihat semua konsol dan cabangnya. Kemudian Anda dapat melakukan git checkout -t remotes/repo/branch pada komputer jarak jauh dan membuat cabang lokal.

Ada juga perintah git ls-remote untuk melihat semua tautan dan tag untuk remote ini.

41
02 марта '12 в 20:16 2012-03-02 20:16 jawabannya diberikan Daniel Lee 02 Maret '12 pada 20:16 2012-03-02 20:16

Nama dan pertanyaannya bingung:

  • Git ambil cabang jarak jauh
  • Bagaimana rekan saya dapat mengalihkan cabang ini.

Jika pertanyaannya adalah bagaimana saya bisa membuat cabang jarak jauh berfungsi atau bagaimana memeriksa cabang jarak jauh, solusi yang lebih sederhana adalah:

Dengan git (> = 1.6.6) Anda dapat menggunakan:

 git checkout <branch_name> 

Jika <branch_name> lokal tidak ditemukan, tetapi ada cabang pelacakan tepat di satu lokasi jauh dengan nama yang cocok, anggap setara:

 git checkout -b <branch_name> --track <remote>/<branch_name> 

lihat dokumentasi untuk checkout git

Untuk temanmu:

 $ git checkout discover Branch discover set up to track remote branch discover Switched to a new branch 'discover' 
34
31 марта '14 в 13:48 2014-03-31 13:48 jawabannya diberikan oleh Guillaume Vincent 31 Maret '14 di 13:48 2014-03-31 13:48
 git checkout -b serverfix origin/serverfix 

Ini adalah operasi yang cukup umum di mana git memberikan ekspresi singkat: -track:

 git checkout --track origin/serverfix 

Bahkan, sangat umum bahwa ada label untuk label ini. Jika nama cabang yang Anda coba periksa (a) tidak ada dan (b) persis cocok dengan nama hanya pada satu server jarak jauh, git akan membuat cabang pelacakan untuk Anda:

 git checkout serverfix 

Untuk mengatur cabang lokal dengan nama yang berbeda dari cabang jarak jauh, Anda dapat dengan mudah menggunakan versi pertama dengan nama cabang lokal yang berbeda:

 git checkout -b sf origin/serverfix 

Sekarang cabang sf lokal Anda akan secara otomatis menarik keluar dari asal / perbaikan server.

Sumber: Pro git 2nd Edition, ditulis oleh Scott Chacon dan Ben Straub (reading slit)

25
18 марта '16 в 3:21 2016-03-18 03:21 jawabannya diberikan oleh ManuelSchneid3r 18 Maret '16 pada 3:21 2016-03-18 03:21

Menggunakan perintah sederhana ini:

 git checkout -b 'your_branch' origin/'remote branch' 
19
18 мая '17 в 12:38 2017-05-18 12:38 jawabannya diberikan oleh Karthik damodara pada 18 Mei '17 pada 12:38 2017-05-18 12:38
 git fetch git branch -r git checkout <branch_name> 
13
04 дек. Balas diberikan oleh John Rodriguez 04 Des 2013-12-04 23:53 '13 pada 23:53 2013-12-04 23:53

Anda bisa mendapatkan dan memeriksa cabang jarak jauh dalam satu kesempatan: -

 git fetch  git checkout the-branch-name 
12
25 марта '15 в 9:43 2015-03-25 09:43 jawabannya diberikan oleh Kumar Sambhav pada 25 Maret '15 di 9:43 2015-03-25 09:43

Cara termudah untuk melakukan ini, setidaknya untuk saya:

 git fetch origin <branchName> 
12
06 окт. balasan yang diberikan oleh James Rochabrun 06 Okt 2017-10-06 12:26 '17 pada 12:26 siang 2017-10-06 12:26

Saya mengetik

 git checkout <branch_name> 

dan dapatkan

 Branch <branch_name> set up to track remote branch <branch_name> from origin. Switched to a new branch '<branch_name>' 
10
17 окт. jawabannya diberikan Guillaume Guillaume 17 Oktober. 2013-10-17 03:07 '13 pada 3:07 2013-10-17 03:07

Dari waktu ke waktu Anda diminta untuk tidak mengganggu cabang terkemuka dan hanya bekerja dengan cabang jarak jauh (seperti yang saya tanyakan). Jadi, yang Anda butuhkan adalah cabang jarak jauh.

Jadi, untuk mengkloning cabang jarak jauh secara terpisah (tanpa master), lakukanlah

 git clone url --branch remote_branch_name 

di mana, remote_branch_name adalah nama cabang jarak jauh

Sebagai contoh

 git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git --branch v3.15 

Ini akan memungkinkan Anda untuk mengkloning cabang jarak jauh ke cabang lokal dengan nama cabang jarak jauh.

Sekarang, jika Anda meneruskan kode dan mengklik, kode tersebut hanya akan dikirim ke utas ini.

9
06 февр. jawabannya diberikan oleh ganezdragon 06 Feb. 2015-02-06 08:11 '15 at 8:11 AM 2015-02-06 08:11

git fetch --all git checkout <branch name>

7
20 нояб. jawaban yang diberikan oleh Jerome Anthony 20 Nov 2017-11-20 03:42 '17 pada 3:42 2017-11-20 03:42

Yang membantu saya adalah

1) Untuk melihat semua cabang jarak jauh yang tersedia (misalnya, "cabang nama-jarak jauh")

 git branch -r 

2) Buat cabang lokal menggunakan nama cabang jarak jauh.

 git fetch  git checkout 'remote-branch-name' 
6
17 сент. jawabannya diberikan oleh Arlan T 17 sep . 2018-09-17 05:16 '18 pada 5:16 2018-09-17 05:16

git fetch git checkout <your friend branch name> akan membantu

4
25 апр. jawabannya diberikan tambakoo 25 Apr 2018-04-25 14:37 '18 pukul 14:37 2018-04-25 14:37

Misalkan konsol Anda adalah git@xyz.git dan Anda memerlukan cabangnya random_branch. Prosesnya harus sebagai berikut:

  1. Pertama periksa daftar remote Anda dengan

    git remote -v

  2. Jika Anda tidak menghapus git@xyz.git di output dari perintah di atas, Anda akan menambahkannya

    git remote add xyz git@xyz.git

  3. Sekarang Anda bisa mendapatkan konten dari remote ini

    git fetch xyz

  4. Sekarang periksa cabang dari remote ini

    git checkout -b my_copy_random_branch xyz/random_branch

  5. Periksa daftar cabang dengan

    git branch -a

Cabang my_copy_random_branch lokal akan melacak cabang random_branch konsol Anda.

4
06 марта '18 в 19:59 2018-03-06 19:59 jawabannya diberikan zafar142003 06 Maret '18 pukul 19:59 2018-03-06 19:59

Jika Anda sudah tahu cabang jarak jauh Anda, misalnya ...

 git remote => One => Two 

dan Anda tahu nama cabang yang ingin Anda periksa ex. br1.2.3.4 , lalu lakukan

 git fetch One => returns all meta data of remote ie the branch name in question. 

yang tersisa hanyalah memeriksa cabang

 git checkout br.1.2.3.4 

Kemudian buka semua cabang baru.

3
26 июня '15 в 20:51 2015-06-26 20:51 jawabannya diberikan oleh SoEzPz pada 26 Juni '15 pada 20:51 2015-06-26 20:51

coba saja

$ git tarik asal your_branch_name

3
12 дек. jawab diberikan Rizo 12 Des. 2017-12-12 22:47 '17 pada 10:47 malam 2017-12-12 22:47

>

  • git fetch origin atau git fetch --all , ini akan menghapus semua cabang yang dihapus di lokal Anda dan kemudian opsi kedua yang bisa Anda tangani.

  • git checkout --track origin/<The_remote_branch you want to switch over>

Kemudian kerjakan utas ini, dan Anda dapat memeriksa apakah Anda ada di utas ini atau tidak dengan mengetik

 git branch 

Menunjukkan cabang tempat Anda berada.

3
26 дек. jawabannya diberikan kepada Sam pada 26 Desember 2013-12-26 13:09 '13 pada 13:09 2013-12-26 13:09

Jika Anda memiliki repositori yang telah dikloning dengan --depth 1, maka banyak dari perintah yang terdaftar tidak akan berfungsi. Sebagai contoh, lihat di sini

 % git clone --depth 1 https://github.com/repo/code Cloning into 'code'... cd code remote: Counting objects: 1778, done. remote: Compressing objects: 100% (1105/1105), done. remote: Total 1778 (delta 87), reused 1390 (delta 58), pack-reused 0 Receiving objects: 100% (1778/1778), 5.54 MiB | 4.33 MiB/s, done. Resolving deltas: 100% (87/87), done. Checking connectivity... done. Checking out files: 100% (1215/1215), done. % cd code % git checkout other_branch error: pathspec 'other_branch' did not match any file(s) known to git. % git fetch origin other_branch remote: Counting objects: 47289, done. remote: Compressing objects: 100% (15906/15906), done. remote: Total 47289 (delta 30151), reused 46699 (delta 29570), pack-reused 0 Receiving objects: 100% (47289/47289), 31.03 MiB | 5.70 MiB/s, done. Resolving deltas: 100% (30151/30151), completed with 362 local objects. From https://github.com/repo/code * branch other_branch-> FETCH_HEAD % git checkout other_branch error: pathspec 'other_branch' did not match any file(s) known to git. % 

Dalam hal ini, saya akan membatalkan repo, tetapi mungkin ada metode lain, misalnya, git clone dangkal (clone --depth) melompati cabang jarak jauh

2
25 янв. jawabannya diberikan oleh Colin D 25 Jan 2018-01-25 00:21 '18 pada 0:21 201-01-25 00:21

Periksa .git/config , khususnya, pelacakan apa yang ada dalam ekstraksi untuk konsol ini.

 [remote "randomRemote"] url = git@github.com:someUser/someRepo.git fetch = +refs/heads/*:refs/remotes/randomRemote/* 

Jika memiliki heads/* menunjuk ke randomRemote/* , ketika Anda menjalankan git fetch randomRemote ia akan mengekstrak semua cabang. Maka Anda bisa memeriksa utas ini.

Jika tidak,

  • Anda perlu menambahkan cabang yang dihapus ke pelacakan. Setelah itu, jalankan .git/config . Anda akan mengerti. set cabang remote git --add randomRemote randomBranch

  • Jalankan git fetch randomRemote . Ini akan mengarah ke cabang jarak jauh.

  • Sekarang Anda dapat menjalankan git checkout randomBranch

2
01 февр. Jawabannya diberikan oleh Vamshi Suram 01 Feb. 2017-02-01 17:29 '17 pada 17:29 2017-02-01 17:29

git branch <name> --track origin/<name>

1
11 марта '18 в 21:02 2018-03-11 21:02 Balas diberikan oleh Chris F Carroll pada 11 Maret '18 pukul 21:02 2018-03-11 21:02

Anda menggunakan 'git pull' untuk menjaga cabang Anda terpisah. Saya akan menggunakan nama dan cabang repo yang sebenarnya untuk membantu, karena "lbranch" dan "rbranch" sulit diuraikan.

Mari gunakan:

myteam.unfuddle.com = server jauh git tlc = batalkan akun proyek di mana repo ada daves_branch = nama cabang jarak jauh

Anda atau kolega mana pun dapat menjalankan ini hanya untuk menarik cabang Anda, tidak peduli berapa banyak cabang yang ada:

 git init git pull git@myteam.unfuddle.com: myteam / tlc daves_branch: refs / remote / origin / daves_branch
1
23 мая '13 в 0:10 2013-05-23 00:10 jawabannya diberikan oleh Andrew pada 23 Mei '13 pukul 0:10

Perintah sederhana - "git checkout remote_branch_name" akan membantu Anda membuat cabang lokal yang memiliki semua perubahan di cabang jauh.

0
19 янв. Balas diberikan oleh SIjeesh Kattumunda pada 19 Januari 2018-01-19 15:34 '18 pada 15:34 2018-01-19 15:34
 git checkout -b branch_name git pull remote_name branch_name 
-1
22 янв. jawabannya diberikan Leon 22 Januari. 2019-01-22 13:43 '19 pada 1:43 siang 2019-01-22 13:43

Pertanyaan lain tentang tag atau Ajukan Pertanyaan