Bagaimana cara mengkloning semua cabang jarak jauh di Git?

Saya memiliki cabang master dan cabang development , yang ditempatkan di GitHub . Saya clone d, pull ed dan fetch ed, tapi saya tidak bisa mendapatkan apa pun kecuali cabang master .

Saya yakin bahwa saya kehi>

3676
16 сент. ditetapkan oleh Peter Coulton 16 September 2008-09-16 01:42 '08 pada 1:42 2008-09-16 01:42
@ 35 jawaban
  • 1
  • 2

Klon repositori remote Git pertama dan masukkan ke dalamnya:

 $ git clone git://example.com/myproject $ cd myproject 

Kemudian telusuri cabang-cabang lokal di repositori Anda:

 $ git branch * master 

Tetapi cabang-cabang lain bersembunyi di repositori Anda! Anda dapat melihatnya menggunakan flag -a :

 $ git branch -a * master remotes/origin/HEAD remotes/origin/master remotes/origin/v1.0-stable remotes/origin/experimental 

Jika Anda ingin melihat cepat pada cabang di atas, Anda dapat memeriksanya secara >

 $ git checkout origin/experimental 

Tetapi jika Anda ingin bekerja dengan cabang ini, Anda perlu membuat cabang pelacakan lokal yang akan dieksekusi secara otomatis:

 $ git checkout experimental 

dan kamu akan lihat

 Branch experimental set up to track remote branch experimental from origin. Switched to a new branch 'experimental' 

Baris terakhir ini melempar beberapa orang: "Cabang baru" - ya? Faktanya, ini berarti bahwa cabang diambil dari indeks dan dibuat secara lokal untuk Anda. Baris sebelumnya sebenarnya lebih informatif karena memberi tahu Anda bahwa cabang dikonfigurasi untuk melacak cabang jauh, yang biasanya berarti cabang asal / branch_name

Sekarang, jika Anda melihat cabang lokal Anda, inilah yang akan Anda lihat:

 $ git branch * experimental master 

Bahkan, Anda dapat melacak beberapa repositori jarak jauh dengan git remote .

 $ git remote add win32 git://example.com/users/joe/myproject-win32-port $ git branch -a * master remotes/origin/HEAD remotes/origin/master remotes/origin/v1.0-stable remotes/origin/experimental remotes/win32/master remotes/win32/new-widgets 

Pada titik ini, segalanya menjadi sangat gila, jadi jalankan gitk untuk melihat apa yang terjadi:

 $ gitk --all > 
4132
16 сент. Balasan diberikan oleh emk pada 16 September . 2008-09-16 16:28 '08 pukul 16:28 2008-09-16 16:28

Jika Anda memiliki banyak cabang jarak jauh yang ingin segera Anda jalankan, jalankan:

 $ git pull --all 

Sekarang Anda dapat memeriksa cabang apa pun yang Anda butuhkan, tanpa sampai ke repositori jarak jauh.

750
13 янв. Jawabannya diberikan oleh Gabe Kopley pada 13 Januari. 2011-01-13 19:42 '11 pada 19:42 2011-01-13 19:42

Skrip bash ini membantu saya:

 #!/bin/bash for branch in $(git branch --all | grep '^\s*remotes' | egrep --invert-match '(:?HEAD|master)$'); do git branch --track "${branch##*/}" "$branch" done 

Ini akan membuat cabang pelacakan untuk semua cabang jarak jauh kecuali master (yang mungkin Anda terima dari perintah klon asli). Saya pikir Anda masih perlu melakukannya

 git fetch --all git pull --all 

untuk memastikan.

Satu liner : git branch -a | grep -v HEAD | perl -ne 'chomp($_); s|^\*?\s*||; if (m|(.+)/(.+)| not $d{$2}) {print qq(git branch --track $2 $1/$2\n)} else {$d{$_}=1}' | csh -xfs git branch -a | grep -v HEAD | perl -ne 'chomp($_); s|^\*?\s*||; if (m|(.+)/(.+)| not $d{$2}) {print qq(git branch --track $2 $1/$2\n)} else {$d{$_}=1}' | csh -xfs git branch -a | grep -v HEAD | perl -ne 'chomp($_); s|^\*?\s*||; if (m|(.+)/(.+)| not $d{$2}) {print qq(git branch --track $2 $1/$2\n)} else {$d{$_}=1}' | csh -xfs Seperti biasa: tes dalam pengaturan sebelum menyalin rm -rf universe seperti yang kita kenal

Kredit untuk satu liner diberikan kepada pengguna cfi

382
21 янв. jawabannya diberikan oleh bigfish 21 Jan 2011-01-21 05:18 '11 pada 5:18 2011-01-21 05:18

Menggunakan opsi --mirror tampaknya menyalin cabang remote dengan benar. Namun, ia menginstal repositori sebagai repositori terbuka, jadi Anda harus mengembalikannya ke repositori biasa.

 git clone --mirror path/to/original path/to/dest/.git cd path/to/dest git config --bool core.bare false git checkout anybranch 

Tautan: Git Pertanyaan yang Sering Diajukan: Bagaimana cara mengkloning repositori dengan semua cabang yang dipantau dari jarak jauh?

290
27 авг. jawabannya diberikan Dave 27 Agustus. 2011-08-27 20:49 '11 pada 20:49 2011-08-27 20:49

Anda dapat dengan mudah beralih ke cabang tanpa menggunakan "git checkout -b somebranch origin / somebranch". Anda cukup:

 git checkout somebranch 

Git secara otomatis akan melakukan hal yang benar:

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

Git akan memeriksa apakah ada cabang dengan nama yang sama persis di satu perangkat jarak jauh, dan jika demikian, ia melacaknya dengan cara yang sama seperti jika Anda secara eksplisit mengindikasikan bahwa itu adalah cabang jarak jauh. Pada halaman git -checkout git 1.8.2.1:

Jika <cabang> tidak ditemukan, tetapi ada cabang pelacakan ke tepat satu remote (sebut saja <remote>) dengan nama yang sesuai, pertimbangkan seberapa setara

 $ git checkout -b <branch> --track <remote>/<branch> 
208
12 мая '12 в 15:11 2012-05-12 15:11 jawabannya diberikan oleh Nikos C. 12 Mei, '12 pada 15:11 2012-05-12 15:11

Tentang

$ git checkout -b asal eksperimental / eksperimental

menggunakan

 $ git checkout -t origin/experimental 

atau lebih rinci, tetapi lebih mudah diingat

 $ git checkout --track origin/experimental 

mungkin lebih baik dalam hal melacak repositori jarak jauh.

89
27 июля '09 в 9:10 2009-07-27 09:10 jawabannya diberikan murphytalk 27 Juli 2009 di 9:10 2009-07-27 09:10

Pilihan Anda harus menerima semua cabang jarak jauh, tetapi cabang lokal tidak dibuat untuk mereka. Jika Anda menggunakan gitk, Anda akan melihat cabang jarak jauh digambarkan sebagai "remote / origin / dev" atau sesuatu seperti itu.

Untuk membuat cabang lokal berdasarkan cabang jarak jauh, lakukan sesuatu seperti:

  git checkout -b ref ref / remote / origin / dev 

Apa yang harus mengembalikan sesuatu seperti:

  Branch ref diatur untuk melacak ref / remote remote / asal / dev cabang. Beralih ke "dev" cabang baru 

Sekarang Anda berada di cabang dev, git pull akan memperbarui pengembang lokal ke titik yang sama dengan cabang dev jarak jauh. Perhatikan bahwa ini akan mengekstrak semua cabang, tetapi cukup cabut yang ada di atas pohon.

77
16 сент. Balas Luuk Paulussen 16 Sep 2008-09-16 01:52 '08 pada 1:52 pagi 2008-09-16 01:52

Ketika Anda melakukan "git clone git: // location", semua cabang dan tag diekstraksi.

Untuk bekerja di atas cabang jarak jauh tertentu, anggap itu adalah remote control:

 git checkout -b branch origin/branchname 
57
16 сент. Balasan diberikan oleh elmarco pada 16 September . 2008-09-16 01:47 '08 pada 1:47 2008-09-16 01:47

Gunakan alias. Meskipun tidak ada Git tunggal-garis asli, Anda dapat mendefinisikan sendiri sebagai

 git config --global alias.clone-branches '! git branch -a | sed -n "/\/HEAD /d; /\/master$/d; /remotes/p;" | xargs -L1 git checkout -t' 

dan kemudian gunakan seperti

 git clone-branches 
48
15 мая '13 в 14:02 2013-05-15 14:02 jawaban diberikan oleh siapa pun 15 Mei '13 pukul 14:02 2013-05-15 14:02

Tidak terlalu rumit, >

git fetch origin Ini akan menyebabkan semua cabang jarak jauh menjadi lokal.

git branch -a Ini akan menampilkan semua cabang jarak jauh.

git checkout --track origin/<branch you want to checkout>

Periksa apakah Anda berada di cabang kanan dengan perintah berikut:

 git branch 

Hasilnya adalah:

 *your current branch some branch2 some branch3 

Perhatikan tanda * untuk cabang saat ini.

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

Mengapa Anda hanya melihat "tuan"

git clone mengunduh semua cabang jarak jauh yang dihapus, tetapi masih menganggapnya "jauh", walaupun file-file tersebut ada di repositori baru Anda. Ada satu pengecualian, yaitu proses kloning membuat cabang lokal yang disebut "master" dari cabang jarak jauh yang disebut "master". Secara default, git branch hanya menampilkan git branch lokal, jadi Anda hanya melihat "master".

git branch -a menunjukkan semua cabang, termasuk cabang yang jauh.


Cara mendapatkan cabang lokal

Jika Anda benar-benar ingin bekerja dengan cabang, Anda mungkin membutuhkan versi "lokal". Untuk hanya membuat cabang lokal dari cabang jarak jauh (tanpa memeriksa mereka dan dengan demikian mengubah isi direktori kerja), Anda dapat melakukannya seperti ini:

 git branch branchone origin/branchone git branch branchtwo origin/branchtwo git branch branchthree origin/branchthree 

Dalam contoh ini, branchone adalah nama cabang lokal yang Anda buat berdasarkan origin/branchone ; jika Anda ingin membuat cabang lokal dengan nama yang berbeda, Anda dapat melakukan ini:

 git branch localbranchname origin/branchone 

Setelah membuat cabang lokal, Anda dapat melihatnya menggunakan git branch (ingat bahwa Anda tidak perlu -a melihat cabang lokal).

43
05 марта '14 в 16:47 2014-03-05 16:47 jawabannya diberikan oleh Cerran pada 05 Maret '14 di 16:47 2014-03-05 16:47

Lebih baik terlambat daripada tidak pernah, tetapi di sini adalah cara terbaik untuk melakukannya:

 mkdir repo cd repo git clone --bare path/to/repo.git .git git config --unset core.bare git reset --hard 

Pada tahap ini, Anda memiliki salinan lengkap repo jarak jauh dengan semua cabangnya (periksa dengan git branch ). Anda dapat menggunakan --mirror daripada --bare jika repo jarak jauh Anda memiliki konsolnya sendiri.

40
27 нояб. jawabannya diberikan oleh Jacob Fike pada 27 November. 2012-11-27 02:42 '12 pada 2:42 2012-11-27 02:42

Lakukan saja yang berikut ini:

 $ git clone git://example.com/myproject $ cd myproject $ git checkout branchxyz Branch branchxyz set up to track remote branch branchxyz from origin. Switched to a new branch 'branchxyz' $ git pull Already up-to-date. $ git branch * branchxyz master $ git branch -a * branchxyz master remotes/origin/HEAD -> origin/master remotes/origin/branchxyz remotes/origin/branch123 

Anda dapat melihat bahwa git clone git: //example.com/myprojectt mengekstrak semuanya, bahkan cabang, Anda hanya perlu memeriksanya, maka cabang lokal Anda akan dibuat.

38
31 мая '11 в 14:40 2011-05-31 14:40 jawabannya diberikan oleh rapher pada 31 Mei 2011 pukul 14:40 2011-05-31 14:40

Anda perlu menggunakan "git clone" untuk mendapatkan semua cabang.

 git clone <your_http_url> 

Bahkan jika Anda hanya melihat cabang wizard, Anda dapat menggunakan "git branch -a" untuk melihat semua cabang.

 git branch -a 

Dan Anda dapat beralih ke cabang apa pun yang sudah Anda miliki.

 git checkout <your_branch_name> 

Jangan khawatir bahwa setelah "git clone" Anda tidak perlu terhubung ke repo jarak jauh, "git branch -a" dan "git checkout" dapat berhasil diluncurkan ketika Anda menutup Wi-Fi Anda. Jadi, terbukti bahwa ketika Anda menjalankan "git clone", ia sudah menyalin semua cabang dari repo jarak jauh. Setelah itu, Anda tidak perlu repo jarak jauh, lokal Anda sudah memiliki kode untuk semua cabang.

23
19 нояб. jawabannya diberikan oleh Haimei 19 Nov 2014-11-19 18:43 '14 pada 18:43 2014-11-19 18:43

git clone harus menyalin seluruh repositori. Cobalah untuk mengkloningnya, dan kemudian jalankan git branch -a . Dia harus mendaftar semua cabang. Jika Anda ingin beralih ke cabang "foo" alih-alih "master", gunakan git checkout foo .

21
16 сент. balasan yang diberikan oleh MattoxBeckman 16 Sep 2008-09-16 01:46 '08 pada 1:46 pagi 2008-09-16 01:46

Gunakan alat git_remote_branch saya (Anda perlu menginstal Ruby di komputer Anda). Itu dibuat khusus untuk membuat manipulasi jarak jauh dengan cabang mati.

Setiap kali ia melakukan operasi atas nama Anda, ia mencetaknya dengan warna merah di konsol. Seiring waktu, mereka akhirnya jatuh ke dalam otak Anda :-)

Jika Anda tidak ingin grb menjalankan perintah atas nama Anda, cukup gunakan fungsi "jelaskan". Perintah akan dicetak ke konsol, tidak dieksekusi untuk Anda.

Akhirnya, semua perintah memiliki nama samaran untuk memfasilitasi menghafal.

Perhatikan bahwa ini adalah perangkat lunak alfa ; -)

Ini adalah bantuan ketika memulai bantuan grb:

 git_remote_branch versi 0.2.6   Penggunaan:   grb buat branch_name [origin_server]grb publish branch_name [origin_server]grb rename branch_name [origin_server]grb hapus branch_name [origin_server]grb track branch_name [origin_server]Catatan:   - Jika origin_server tidak ditentukan, nama 'asal' diasumsikan  (default git)   - Fungsi ganti nama mengubah nama cabang saat ini   Meta-command: Anda juga dapat menambahkan setiap perintah dengan  kata kunci 'jelaskan'.  Alih-alih mengeksekusi perintah, git_remote_branch  hanya akan menampilkan daftar perintah  tujuan itu.   Contoh:  grb jelaskan buat grb jelaskan buat my_branch github   Semua perintah juga memiliki alias:   buat: buat, baru   hapus: hapus, hancurkan, bunuh, hapus, rm   publish: publish, remotize   rename: rename, rn, mv, move   track: track, follow, grab, fetch
19
20 сент. jawabannya diberikan webmat 20 september . 2008-09-20 16:53 '08 pada 16:53 2008-09-20 16:53

Semua jawaban yang saya lihat di sini valid, tetapi ada banyak cara yang lebih bersih untuk mengkloning repositori dan menarik semua cabang sekaligus.

Ketika Anda mengkloning repositori, semua informasi tentang cabang sebenarnya dimuat, tetapi cabang disembunyikan. Menggunakan perintah

 $ git branch -a 

Anda dapat menampilkan semua cabang repositori dan dengan bantuan perintah

 $ git checkout -b branchname origin/branchname 

Anda dapat mengunduhnya secara manual satu per satu.


Namun, jika Anda ingin mengkloning repo dengan banyak cabang, semua jalur yang dijelaskan di atas panjang dan membosankan sehubungan dengan cara yang jauh lebih bersih dan lebih cepat yang akan saya tunjukkan, walaupun ini agak sulit. Untuk melakukan ini, Anda perlu melakukan tiga >

  • >

Buat folder kosong baru di komputer Anda dan tiru salinan mirror dari folder .git dari repositori:

 $ cd ~/Desktop  mkdir my_repo_folder  cd my_repo_folder $ git clone --mirror https://github.com/planetoftheweb/responsivebootstrap.git .git 

repositori lokal di dalam folder my_repo_folder masih kosong, sekarang hanya ada folder .git tersembunyi, yang bisa Anda lihat dengan perintah "ls -alt" dari terminal.

  1. >

Ubah repositori ini dari repositori kosong (kosong) ke repositori reguler dengan mengalihkan nilai logis "telanjang" dari konfigurasi git ke false:

 $ git config --bool core.bare false 
  1. >

Tangkap semua yang ada di dalam folder saat ini dan buat semua cabang pada mesin lokal, yang membuatnya menjadi repo biasa.

 $ git reset --hard 

Jadi sekarang Anda bisa memasukkan perintah "git branch", dan Anda akan melihat bahwa semua cabang dimuat.

Ini adalah cara cepat untuk mengkloning repositori git dengan semua cabang secara bersamaan, tetapi ini bukan yang Anda inginkan untuk masing-masing proyek dengan cara ini.

14
06 дек. Jawabannya diberikan oleh FedericoCapaldo 06 Des. 2015-12-06 23:08 '15 pada 23:08 2015-12-06 23:08

Nah, ketika Anda mengkloning repo Anda, Anda memiliki semua cabang di sana ...

Jika Anda hanya melakukan git branch , mereka agak tersembunyi ...

Karenanya, jika Anda ingin melihat semua nama cabang, cukup tambahkan - semua bendera sebagai berikut:

git branch --all atau git branch -a

Jika Anda hanya memesan di cabang, Anda akan mendapatkan semua yang Anda butuhkan.

Tetapi bagaimana jika cabang dibuat oleh orang lain setelah Anda dikloning?

Dalam hal ini, lakukan saja:

git fetch

dan periksa semua cabang lagi ...

Jika Anda ingin menerima dan memesan sekaligus, Anda dapat melakukan:

git fetch git checkout your_branch_name

Juga buat gambar di bawah ini untuk menyederhanakan apa yang saya katakan:

2019

Melihat salah satu jawaban atas pertanyaan itu, saya perhatikan bahwa itu dapat dikurangi:

 for branch in `git branch -r | grep -v 'HEAD\|master'`; do git branch --track ${branch##*/} $branch; done 

Tapi hati-hati jika salah satu cabang terpencil disebut, misalnya. admin_master tidak akan dimuat!

Berkat ikan besar untuk ide orisinal

12
20 февр. Jawabannya diberikan oleh Tebe pada 20 Feb. 2015-02-20 00:33 '15 pada 0:33 2015-02-20 00:33
 #!/bin/bash for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master `; do git branch --track ${branch#remotes/origin/} $branch done 

Kode ini akan menarik seluruh kode cabang jarak jauh ke repo lokal.

11
11 дек. jawabannya diberikan oleh Albert. Tanggal 11 Des. 2016-12-11 05:20 '16 pada 5:20 pagi 2016-12-11 05:20

Kloning dari repo lokal tidak akan berfungsi dengan git clone dan git fetch: banyak cabang / tag akan dibiarkan tidak berubah.

Untuk mendapatkan klon dengan semua cabang dan tag.

 git clone --mirror git://example.com/myproject myproject-local-bare-repo.git 

Untuk mendapatkan klon dengan semua cabang dan tag, serta salinan yang berfungsi:

 git clone --mirror git://example.com/myproject myproject/.git cd myproject git config --unset core.bare git config receive.denyCurrentBranch updateInstead git checkout master 
10
24 февр. Jawabannya diberikan raisercostin 24 Feb. 2017-02-24 02:55 '17 pada 2:55 2017-02-24 02:55

Untuk menyalin-menempel pada baris perintah:

 git checkout master ; remote=origin ; for brname in `git branch -r | grep $remote | grep -v master | grep -v HEAD | awk '{gsub(/^[^\/]+\//,"",$1); print $1}'`; do git branch -D $brname ; git checkout -b $brname $remote/$brname ; done ; git checkout master 

Untuk keterbacaan yang lebih baik:

 git checkout master ; remote=origin ; for brname in ` git branch -r | grep $remote | grep -v master | grep -v HEAD | awk '{gsub(/^[^\/]+\//,"",$1); print $1}' `; do git branch -D $brname ; git checkout -b $brname $remote/$brname ; done ; git checkout master 


Itu akan menjadi:
  • periksa master (sehingga kami dapat menghapus cabang tempat kami berada)
  • pilih remote untuk diperiksa (ubah ke server jauh)
  • siklus melalui semua cabang remote, kecuali master dan HEAD
    • hapus cabang lokal (sehingga kami dapat memeriksa cabang dari kekuatan yang diperbarui)
    • periksa cabang dari perangkat jarak jauh
  • periksa master (demi dia)

Berdasarkan jawaban VonC .

10
20 дек. Jawabannya diberikan ikaruss 20 Des. 2013-12-20 09:38 '13 pada 9:38 2013-12-20 09:38

Saya menulis fungsi Powershell kecil ini untuk dapat mengekstrak semua cabang git saya yang ada di server jarak jauh.

 Function git-GetAllRemoteBranches { iex "git branch -r" <# get all remote branches #> ' | % { $_ -Match "origin\/(?'name'\S+)" } <# select only names of the branches #> ' | % { Out-Null; $matches['name'] } <# write does names #> } Function git-CheckoutAllBranches { git-GetAllRemoteBranches ' | % { iex "git checkout $_" } <# execute ' git checkout <branch>' #> } 

Lebih banyak fitur git dapat ditemukan di repositori pengaturan git saya.

8
19 июня '16 в 13:54 2016-06-19 13:54 jawabannya diberikan oleh gringo_dave 19 Juni '16 pada 13:54 2016-06-19 13:54

Saya perlu melakukan hal yang sama. Ini skrip Ruby saya.

 #!/usr/bin/env ruby local = [] remote = {} # Prepare %x[git reset --hard HEAD] %x[git checkout master] # Makes sure that * is on master. %x[git branch -a].each_line do |line| line.strip! if /origin\//.match(line) remote[line.gsub(/origin\//, '')] = line else local << line end end # Update remote.each_pair do |loc, rem| next if local.include?(loc) %x[git checkout --track -b #{loc} #{rem}] end %x[git fetch] 
8
11 дек. Jawabannya diberikan oleh user43685 11 Des. 2010-12-11 02:12 '10 pada 2:12 2010-12-11 02:12

Pada awal 2017, jawaban dalam komentar ini berfungsi:

git fetch <origin-name> <branch-name> mengembalikan cabang untuk Anda. Meskipun tidak menarik semua cabang sekaligus, Anda dapat menjalankan cabang ini secara terpisah.

6
21 апр. jawabannya diberikan ashes999 21 April. 2017-04-21 23:14 '17 pada 11:14 malam 2017-04-21 23:14

Gunakan perintah yang bisa Anda hafal.

Saya menggunakan Bitbucket, Layanan Hosting Repositori Atlassian. Karena itu, saya mencoba mengikuti dokumen mereka. Dan itu sangat bagus untuk saya. Dengan menggunakan perintah sederhana dan pendek berikut ini, Anda dapat mengatur cabang jarak jauh.

Kloning repositori Anda terlebih dahulu, lalu navigasikan ke folder tujuan. Dan yang tak kalah pentingnya: pengambilan sampel dan pengecekan:

 git clone <repo> <destination_folder> cd <destination_folder> git fetch  git checkout <branch> 

Itu. Berikut adalah contoh yang sedikit lebih realistis:

 git clone https://username@bitbucket.org/team/repository.git project_folder cd project_folder git fetch  git checkout develop 

Informasi terperinci tentang perintah dapat ditemukan dalam dokumentasi: Perintah klon, perintah Ekstrak , perintah Ekstrak

6
11 марта '16 в 23:01 2016-03-11 23:01 jawabannya diberikan oleh Phil 11 Maret '16 pukul 11:01 malam 2016-03-11 23:01

Git biasanya (jika tidak ditentukan) mengekstrak semua cabang dan / atau tag (ref, lihat: git ls-refs ) dari satu atau lebih repositori lainnya, bersama dengan objek yang diperlukan untuk menyelesaikan cerita mereka. Dengan kata lain, ia mengambil objek yang dapat dijangkau oleh objek yang sudah dimuat. Lihat: Apa yang sebenarnya dilakukan git fetch ?

Terkadang Anda mungkin memiliki cabang / tag yang tidak terkait >git pull --all / git fetch --all tidak akan membantu dalam kasus ini, tetapi Anda dapat mencantumkannya berdasarkan:

 git ls-remote -h -t origin 

dan dapatkan secara manual, mengetahui nama-nama tautan.

Jadi, untuk mengekstrak semuanya , coba:

 git fetch origin --depth=10000 $(git ls-remote -h -t origin) 

Opsi --depth=10000 dapat membantu jika Anda meletakkan repositori.

Kemudian periksa kembali semua cabang:

 git branch -avv 

Jika hal di atas tidak membantu, Anda perlu menambahkan cabang yang hi>

 $ git remote -v show origin ... Remote branches: master tracked 

pada git remote set-branches misalnya:

 git remote set-branches --add origin missing_branch 

sehingga terlihat di bawah remotes/origin setelah ekstraksi:

 $ git remote -v show origin ... Remote branches: missing_branch new (next fetch will store in remotes/origin) $ git fetch From github.com:Foo/Bar * [new branch] missing_branch -> origin/missing_branch 

Pemecahan masalah

Jika Anda masih tidak bisa mendapatkan apa pun selain cabang utama, periksa hal berikut:

  • Periksa konsol Anda ( git remote -v ), misalnya.
    • Konfirmasikan bahwa git config branch.master.remote adalah origin .
    • Pastikan origin menunjuk ke URL yang benar: git remote show origin (lihat pesan ).
6
31 марта '16 в 3:48 2016-03-31 03:48 jawabannya diberikan kenorb 31 Maret '16 di 3:48 2016-03-31 03:48

Tidak satu pun dari jawaban ini yang terpotong, kecuali bahwa pengguna tidak berada di jalur yang benar.

Saya mengalami masalah memindahkan repo dari satu server / sistem ke yang lain. Ketika saya mengkloning repo, itu hanya membuat cabang lokal untuk master, jadi ketika saya mengklik remote baru, hanya cabang utama yang ditekan.

Jadi, saya menemukan dua metode ini SANGAT membantu. Saya harap mereka membantu orang lain.

Metode 1:

 git clone --mirror OLD_REPO_URL cd new-cloned-project mkdir .git mv * .git git config --local --bool core.bare false git reset --hard HEAD git remote add newrepo NEW_REPO_URL git push --all newrepo git push --tags newrepo 

Metode 2:

 git config --global alias.clone-branches '! git branch -a | sed -n "/\/HEAD /d; /\/master$/d; /remotes/p;" | xargs -L1 git checkout -t' git clone OLD_REPO_URL cd new-cloned-project git clone-branches git remote add newrepo NEW_REPO_URL git push --all newrepo git push --tags newrepo 
5
23 янв. Balas diberikan oleh Gaui 23 Jan 2015-01-23 20:51 '15 pada 20:51 2015-01-23 20:51

Berikut ini adalah perintah satu baris pendek lain yang membuat cabang lokal untuk semua cabang jarak jauh:

 (git branch -r | sed -n '/->/!s#^ origin/##p'  echo master) | xargs -L1 git checkout 

Ini juga berfungsi dengan benar jika pelacakan cabang lokal telah dibuat. Anda dapat memanggilnya setelah git clone pertama atau kapan saja nanti.

Jika Anda tidak ingin cabang master keluar setelah kloning, gunakan

 git branch -r | sed -n '/->/!s#^ origin/##p'| xargs -L1 git checkout 
5
10 сент. jawabannya diberikan oleh jofel 10 Sep 2015-09-10 15:04 '15 pada 15:04 2015-09-10 15:04

Saya akan menambahkan 2 sen saya di sini karena saya mencoba mencari cara untuk menghapus cabang yang dihapus yang saya hapus secara lokal. Asal bukan milik saya, dan saya tidak ingin pergi dengan upaya kloning semuanya.

Ini bekerja untuk saya:

dengan asumsi Anda perlu membuat u>

 git checkout -b recreated-branch-name git branch -a (to list remote branches) git rebase remotes/remote-origin/recreated-branch-name