Git'deki bütün uzaq filialları necə klonlaşdırmaq olar?

GitHub'da yerləşdirilən bir şöbə və bir development şöbəsi var. Mən clone d, pullfetch , lakin mən master filial başqa bir şey əldə edə bilməz.

Əminəm ki, açıq-aşkar bir şeyi əskik edirəm, amma dərslik oxudum və heç bir sevinc duymuram.

3676
16 сент. Peter Coulton tərəfindən 16 Sentyabrda təyin olundu 2008-09-16 01:42 '08 saat 01:42 'da 2008-09-16 01:42
@ 35 cavab
  • 1
  • 2

Birincisi, uzaq Git deposunu klonlayın və onu cd edin :

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

Daha sonra depodaki yerli şubelere göz atın:

 $ git branch * master 

Amma digər filiallar köşkdə gizlənirlər! Bunları -a bayrağını istifadə edərək görə bilərsiniz:

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

Yuxarıdakı filiala sürətli baxmaq istəyirsinizsə, onu birbaşa yoxlaya bilərsiniz:

 $ git checkout origin/experimental 

Lakin bu filialla işləmək istəyirsinizsə, avtomatik olaraq icra ediləcək yerli bir izləmə şöbəsi yaratmalısınız:

 $ git checkout experimental 

və görəcəksiniz

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

Bu son xətt bəzi insanlara salır: "Yeni filial" - bəli? Əslində, bu, filial indeksdən alınmış və sizin üçün yerli olaraq yaradılmış deməkdir. Əvvəlki xətt həqiqətən daha informativdır, çünki filial filialın izahı üçün konfiqurasiya olunduğunu bildirir, çünki adətən mənşə / branch_name şöbəsi deməkdir

İndi yerli şöbələrə baxırsınızsa, buna görə görürsünüz:

 $ git branch * experimental master 

Əslində, uzaq məsafədən birdən çox uzaqdan saxlaya bilərsiniz.

 $ 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 

Bu nöqtədə, işlər çox dəhşətli olur, buna görə nə baş verdiyini görmək üçün gitk :

 $ gitk --all > 
4132
16 сент. Cavab 16 sentyabrda emk tərəfindən verilir . 2008-09-16 16:28 '08 at 4:28 pm 2008-09-16 16:28

Hemen daraltmak istediğiniz bir çox uzaq şubeniz varsa, çalıştırın:

 $ git pull --all 
border=0

İndi istədiyiniz kimi, hər hansı bir filialı uzaq havuza almadan yoxlaya bilərsiniz.

750
13 янв. Cavab 13 yanvarda Qabe Kopley tərəfindən verilir . 2011-01-13 19:42 '11 at 7:42 pm 2011-01-13 19:42

Bu baş script mənə kömək etdi:

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

Masterdan (yəqin ki, orijinal klon əmrindən aldığınız) istisna olmaqla, bütün uzaq şöbələr üçün izləmə filialları yaradılacaqdır. Mən hələ də etmək lazım olduğunu düşünürəm

 git fetch --all git pull --all 

əminəm.

Bir 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 Hər zamanki kimi: rm -rf kainatını kopyalamadan əvvəl quraşdırma zamanı bir test

Bir liner üçün kredit istifadəçi cfi-ə gedir

382
21 янв. Cavab 21 Yanvar böyük balıq tərəfindən verilir 2011-01-21 05:18 '11 at 5:18 'da 2011-01-21 05:18

- --mirror variantını istifadə edərək, remote filialları düzgün surətdə --mirror . Lakin, depoyu açıq depo olaraq quraşdırır, beləliklə onu daha sonra müntəzəm bir depoya qaytarmalısınız.

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

Link: Git Sık Sorulan Sorular: Uzaqdan izlənilən bütün şöbələrlə depo necə klonlanır?

290
27 авг. Cavab Dave 27 avqustda verilir . 2011-08-27 20:49 '11 saat 20:49 'də 2011-08-27 20:49

Siz asanlıqla bir filiala keçə bilərsiniz: "git checkout -bbbbangch origin / somebranch". Sadəcə olaraq:

 git checkout somebranch 

Git avtomatik olaraq doğru şeyi edər:

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

Git, bir şöbənin tam adı uzaq bir cihazla eyni olub-olmadığını yoxlayacaq və əgər varsa, onu bir uzaq bir filial olduğunu açıq şəkildə göstərdiyiniz kimi izləyir. Git-gediş adamında Git 1.8.2.1 səhifəsində:

<Filial> tapılmadıqda, lakin tam bir uzaq məsafəyə (məsələn, <uzaq> zəng edin) bir izləmə filialı mövcuddursa,

 $ git checkout -b <branch> --track <remote>/<branch> 
208
12 мая '12 в 15:11 2012-05-12 15:11 cavab Nikos C tərəfindən verildi 12 may, 12:12 15:11 2012-05-12 15:11

Hörmətlə

$ git gediş -b eksperimental mənşə / eksperimental

istifadə

 $ git checkout -t origin/experimental 

ya da daha ətraflı, ancaq xatırlamaq daha sadədir

 $ git checkout --track origin/experimental 

uzaq bir ehtiyat izləmə baxımından daha yaxşı ola bilər.

89
27 июля '09 в 9:10 2009-07-27 09:10 Cavab murphytalk 27 iyul '09 9:10 'da verilir 2009-07-27 09:10

Seçkiniz bütün uzaq filialları almalıdır, lakin yerli şöbələr onlar üçün yaradılmır. Siz gitk istifadə etsəniz, "uzaqdan / mənşə / dev" və ya buna bənzər bir şey kimi təsvir edilmiş uzaq filialları görməlisiniz.

Uzaq bir şöbəyə əsaslanan yerli şöbə yaratmaq üçün aşağıdakı kimi bir şeylər edin:

  git kalkışı -b dev refs / remotes / origin / dev 

Nə kimi bir şeyə geri dönməliyik:

  Şöbə müdiri uzaq şöbələrin refs / remotes / mənşə / dev. Yeni bir şöbəyə "dev" 

İndi dev şöbəsində olduğunuza görə, gedin çəkilişi uzaq gigant şöbəsi ilə eyni nöqtəyə yerli inkişafı yeniləyəcək. Qeyd edək ki, bütün filialları çıxaracaq, ancaq ağacın üstündə olanı çıxar.

77
16 сент. Cavab Luuk Paulussen 16 sentyabr 2008-09-16 01:52 '08 saat 01:52 2008-09-16 01:52

"Git clone git: // yer" etsəniz, bütün filial və etiketlər çıxarılır.

Müəyyən bir uzaq filialın üstündə işləmək üçün, məsələn, uzaqdan idarəetmədir:

 git checkout -b branch origin/branchname 
57
16 сент. cavab cümə günü elmarco tərəfindən verilir 2008-09-16 01:47 '08 at 1:47 2008-09-16 01:47

Təqvimlərdən istifadə edin. Heç bir doğma Git tək xətt olmasına baxmayaraq, özünüzü kimi təyin edə bilərsiniz

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

və sonra istifadə edin

 git clone-branches 
48
15 мая '13 в 14:02 2013-05-15 14:02 cavab 15 may, 15 may saat 14:02 'də verilir. 2013-05-15 14:02

Çox mürəkkəb deyil, çox sadə və sadə addımlar belədir:

git fetch origin Bu, bütün uzaq filialların yerli olmasına səbəb olacaq.

git branch -a Bu, bütün uzaq filialları göstərəcəkdir.

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

Aşağıdakı əmr ilə sağ şöbədə olub olmadığınızı yoxlayın:

 git branch 

Nəticə:

 *your current branch some branch2 some branch3 

Mövcud şöbənin * işarəsini qeyd edin.

44
26 дек. Cavab 26 dekabrda Samə verilir . 2013-12-26 13:19 '13 'da 13:19' də 2013-12-26 13:19

Niyə yalnız "master"

git clone bütün uzaqdakı şöbələri silindi, lakin faylları yeni deposunda olmasına baxmayaraq hələ də "uzaq" hesab edir. Bir istisna var ki, klonlama prosesi "master" adlanan uzaq bir filialdan "master" adlanan bir yerli şöbə yaradır. Default olaraq, git branch yalnız yerli şöbələri göstərir, belə ki, yalnız "master" görürsünüz.

git branch -a uzaq filialları da daxil olmaqla bütün filialları göstərir.


Yerli şöbələri necə əldə etmək olar

Bir filialla işləmək istəyirsinizsə, ehtimal ki, bir "yerli" versiyaya ehtiyacınız olacaq. Sadəcə uzaq şöbələrdən yerli şöbələr yaratmaq (onları yoxlamaq və beləliklə işçi qovluğunun məzmununu dəyişdirmədən) bunu belə etmək olar:

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

Bu misalda, branchone origin/branchone əsasında yaradılmış yerli şöbənin origin/branchone ; fərqli adlarla yerli şöbələr yaratmaq istəyirsinizsə, bunu edə bilərsiniz:

 git branch localbranchname origin/branchone 

Yerli bir filial yaratdıqdan sonra, onu git branch istifadə edə bilərsiniz (unutmayın ki, yerli filialları görmək lazım deyil).

43
05 марта '14 в 16:47 2014-03-05 16:47 Cavab Cerran tərəfindən 05-də saat 14: 14-də verilir. 2014-03-05 16:47

Heç vaxtdan daha yaxşı gec deyil, amma bunun ən yaxşı yolu:

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

Bu mərhələdə, bütün filialları ilə uzaq reponun tam surətinə git branch ( git branch ). Uzaq reponun öz konsolları varsa, - əvəzinə --mirror istifadə edə bilərsiniz.

40
27 нояб. cavab 27 noyabrda Jacob Fike tərəfindən verilir. 2012-11-27 02:42 '12 at 2:42 2012-11-27 02:42

Yalnız aşağıdakıları et:

 $ 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 

Siz git clone git: //example.com/myprojectt hər şeyi, hətta şöbələri çıxarır, yalnız yoxlamaq lazımdır, sonra yerli şöbəsi yaradılacaq.

38
31 мая '11 в 14:40 2011-05-31 14:40 cavab 31 may 2011- ci il saat 14 : 40-da Rəhbər tərəfindən verilmişdir. 2011-05-31 14:40

Bütün filialları almaq üçün "git clone" istifadə etmək lazımdır.

 git clone <your_http_url> 

Yalnız sehrbazlıq şöbəsini görürsənsə belə, bütün filialları görmək üçün "git branch-a" istifadə edə bilərsiniz.

 git branch -a 

Və siz artıq olan hər hansı bir filiala keçə bilərsiniz.

 git checkout <your_branch_name> 

"Go klon" dan sonra uzaq bir repoya qoşulmağınızın olmadığı üçün "git-branch" a "və" git checkout "Wi-Fi-ni bağladığınızda uğurla başlaya bilər. Beləliklə, "git clone" işlədiyiniz zaman, uzaq repo-dan bütün filialları artıq köçürdü. Bundan sonra uzaq bir repoya ehtiyacınız yoxdur, yerli zaten bütün şubeler üçün kodlar var.

23
19 нояб. Cavab Haimei Nov 19 tərəfindən verilir 2014-11-19 18:43 '14 at 18:43 2014-11-19 18:43

Bir git clone bütün depo kopyalamalıdır. Onu klonlamağa cəhd edin, sonra isə git branch -a çalıştırın. O, bütün filialları qeyd etməlidir. "Master" əvəzinə "foo" filialına keçmək istəyirsinizsə, git checkout foo istifadə edin.

21
16 сент. MattoxBeckman tərəfindən verilmiş cavab 16 sentyabr 2008-09-16 01:46 '08 saat 01:46 'da 2008-09-16 01:46

Mənim git_remote_branch alətimdən istifadə edin (siz Ruby- ni kompüterinizə yükləməlisiniz ). Xüsusilə, filialların ölüləri ilə uzaqdan manipulyasiya etmək üçün yaradılmışdır.

Hər dəfə sizin adınıza əməliyyat aparırsa, onu konsolda qırmızı rəngdə yazır. Zamanla, onlar nəhayət beyninizə düşür :-)

Sizin adınızdan əmrləri yayındırmaq istəmirsinizsə, sadəcə "izah et" funksiyasından istifadə edin. Komutlar sizin üçün icra olunmayan konsolda çap olunacaq.

Nəhayət, bütün əmrlərin yaddaşı asanlaşdırmaq üçün yalançı var.

Qeyd edək ki, bu, alfa proqramdır ; -)

Grb yardımını başladarkən kömək edir:

 git_remote_branch version 0.2.6   İstifadəsi:   grb yaradın branch_name [origin_server]grb publish branch_name [origin_server]grb rename branch_name [origin_server]grb delete branch_name [origin_server]grb track branch_name [origin_server]Qeydlər:   - Origin_server göstərilmirsə, "mənşə" adı götürülür  (git default)   - Yeniləmə funksiyası mövcud filialı yenidən adlandırır   Meta-komanda: hər hansı bir komanda ilə də hazır ola bilərsiniz  Açar sözü 'izah et'.  Komandanı yerinə yetirmək yerinə, git_remote_branch  sadəcə əmrlər siyahısını çıxardacaq  bu məqsəd.   Məsələn:  grb izah et grb açıqlama my_branch github yaradın   Bütün əmrlərdə də aliaslar var:   yaradın: yeni yaratmaq   silmək: silmək, məhv etmək, öldürmək, çıxarmaq, rm   dərc edin: dərc edin, uzaqlaşdırın   rename: adını dəyişmək, rn, mv, hərəkət   track: track, follow, grab, almaq
19
20 сент. cavab webmat 20 sep verilir . 2008-09-20 16:53 '08 at 4:53 pm 2008-09-20 16:53

Burada gördüyüm bütün cavablar etibarlıdır, amma klassın klonlanması və bütün filialları eyni zamanda çəkmək üçün daha təmiz bir yol var.

Bir deposu klonladığınızda, filiallar haqqında bütün məlumatlar həqiqətən yüklənir, lakin filiallar gizlidir. Komanda istifadə

 $ git branch -a 

bütün depo şöbələrini və əmr köməyi ilə göstərə bilərsiniz

 $ git checkout -b branchname origin/branchname 

Onları tək-tək yükləyə bilərsiniz.


Ancaq bir çox şöbələri ilə repoları klon etmək istəyirsinizsə, yuxarıda təsvir edilən bütün yollar bir az çətin olmasına baxmayaraq göstərəcəyəm daha təmiz və daha sürətli bir şəkildə uzun və yorucu olur. Bunu etmək üçün üç addımı yerinə yetirmək lazımdır:

  • İlk addım

Kompüterinizdə yeni bir boş qovluq yaradın və qovluqdakı .git-qovluğunun yansıtma kopyasını klonlayın:

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

my_repo_folder qovluğunun içindəki yerli depo hələ də boşdur, indi yalnız gizli .git qovluğuna sahibsiniz, terminaldən "ls -alt" əmrini görə bilərsiniz.

  1. İkinci addım

Bu ehtiyatı boş (çılpaq) bir hovuzdan müntəzəm bir hovuza keçir, mantıksal "çılpaq" dəyəri keçid konfiqurasiyasından yalançıya keçirin:

 $ git config --bool core.bare false 
  1. Üçüncü addım

Mövcud qovluğun içərisində hər şeyi tutun və yerli maşındakı bütün filialları yaradın, bu da mütəmadi olaraq repo təşkil edir.

 $ git reset --hard 

İndi "git branch" komutuna daxil ola bilərsiniz və bütün filialların yükləndiyini görəcəksiniz.

Bu, eyni zamanda bütün filiallarla bir keçid deposunu klonlaya bilmək üçün sürətli bir üsuldur, ancaq bu, hər bir fərdi layihə üçün bu şəkildə istəmir.

14
06 дек. Cavab FedericoCapaldo tərəfindən verilir 06 Dekabr. 2015-12-06 23:08 '15 'də saat 23:08 ' da

Yaxşı, repounuzu klonladığınız zaman orada bütün şöbələr var ...

Yalnız bir git branch edirsinizsə, bunlar bir növ gizli ...

Buna görə, bütün filialların adlarını görmək istəyirsinizsə, sadəcə olaraq bütün bayraqları əlavə edin:

git branch --all və ya git branch -a

Əgər filialda sifariş verdiyiniz halda, sizə lazım olan hər şeyi əldə edəcəksiniz.

Amma klonlandıqdan sonra başqası tərəfindən yaradılan bir filial nədir?

Bu halda, yalnız:

git fetch

yenə bütün filialları yoxlayın ...

Sifarişi eyni zamanda qəbul etmək və yerləşdirmək istəyirsinizsə, bunu edə bilərsiniz:

git fetch git checkout your_branch_name

Həmçinin mənim dediklərimi asanlaşdırmaq üçün aşağıdakı bir şəkil yaradıb:

2019

 #!/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 

Bu kod, uzaq filialların bütün kodunu yerli repoya çıxarır.

11
11 дек. Cavab Albert.Qing tərəfindən verilir 11 Dekabr. 2016-12-11 05:20 '16 saat 05:20 'də 2016-12-11 05:20

Yerli reponun köçürülməsi git klonu ilə işləməyəcək və bir çox filial / etiket dəyişməz qalacaq.

Bütün filial və etiketlər ilə klon almaq.

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

Bütün filial və etiketlər, eləcə də işçi surəti ilə klon almaq üçün:

 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 февр. Cavab 24 fevralda raisercostin verilir. 2017-02-24 02:55 '17 də 2:55 2017-02-24 02:55 'də

Komanda xəttinə kopyala-yapışdırmaq üçün:

 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 

Daha çox okunabilirlik üçün:

 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 


Bu olacaq:
  • master (biz filialı silmək üçün)
  • yoxlamaq üçün uzaqdan seçin (hər hansı bir uzaq serverə dəyişdirin)
  • master və HEAD istisna olmaqla , uzaqdan bütün filialları vasitəsilə dövrü
    • yerli filialı silmək (yenilənmiş qüvvə şöbələrini yoxlamaq üçün)
    • filialı uzaq cihazdan yoxlayın
  • master (onun uğrunda)

VonC cavabına əsaslanaraq.

10
20 дек. Cavab ikaruss 20 dekabr verilir. 2013-12-20 09:38 '13 at 9:38 2013-12-20 09:38

Uzaq bir server üzərində olan bütün keçid şöbələrini çıxarmaq üçün bu kiçik Powershell funksiyasını yazdım.

 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>' #> } 

Daha çox git funksiyaları git parametrlərim deposunda tapa bilərsiniz.

8
19 июня '16 в 13:54 2016-06-19 13:54 Cavab gringo_dave tərəfindən verilir 19 İyun '16 'da 13:54 2016-06-19 13:54

Eyni şeyi etmək lazım idi. İşdə Ruby scriptim.

 #!/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 дек. Cavab user43685 tərəfindən verilir 11 dekabr. 2010-12-11 02:12 '10 at 2:12 2010-12-11 02:12

2017-ci ilin əvvəlindən etibarən, bu şərhdə cavab işləyir:

git fetch <origin-name> <branch-name> sizin üçün filialı qaytarır. Bir anda bütün filialları çəkməsə də, bu şöbəni ayrıca həyata keçirə bilərsiniz.

6
21 апр. Cavab ashes verilir999 21 apr. 2017-04-21 23:14 '17 saat 11:14 'də 2017-04-21 23:14

Yadda saxlaya biləcəyiniz əmrləri istifadə edin.

Mən Bitbaket, Atlassian Repository Hosting Service istifadə edirəm. Ona görə də sənədlərini təqib etməyə çalışıram. Və mənim üçün böyük işləyir. Aşağıdakı sadə və qısa əmrləri istifadə edərək, uzaq bir şöbə təşkil edə bilərsiniz.

Əvvəlcə deposu klonlayın, sonra hədəf qovluğuna gedin. Və son deyil, ən azı: nümunə və yoxlama:

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

Odur. Burada bir az daha realist nümunədir:

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

Komutlar haqqında ətraflı məlumatı sənədlərdə tapa bilərsiniz: Clone command, Extract command, Extract command

6
11 марта '16 в 23:01 2016-03-11 23:01 Cavab Phil tərəfindən verilir 11 Mart '16, saat 11:01 'da 2016-03-11 23:01

Tipik olaraq (əgər göstərilmirsə), bir və ya bir neçə digər depolardan, onların hekayələrini tamamlamaq üçün lazım olan obyektlərlə birlikdə, bütün filial və / və ya yazıları (refs, bax: git ls-refs ) çıxarır. Başqa sözlə, artıq yüklənmiş obyektlər tərəfindən əldə edilə bilən obyektləri alır. Bax: git fetch həqiqətən nədir?

Bəzən cari birbaşa əlaqəli olmayan filiallar / etiketlər ola bilər, buna görə də git fetch --all / git fetch --all bu halda kömək etməyəcək, ancaq aşağıdakıları git fetch --all bilərsiniz:

 git ls-remote -h -t origin 

və əlaqələrin adlarını bilməklə onları əllə almaq.

Beləliklə, hamısını çıxarmaq üçün cəhd edin:

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

--depth=10000 kömək edə bilər.

Sonra bütün filialları yenidən yoxlayın:

 git branch -avv 

Yuxarıdakılar kömək etmədikdə, itkin şöbələri əl ilə monitorinq siyahısına əlavə etməliyik (bunlar bir şəkildə itirildikləri üçün):

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

məsələn, məsələn, məsələn:

 git remote set-branches --add origin missing_branch 

beləliklə, remotes/origin sonra remotes/origin baxır:

 $ 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 

Troubleshooting

Əgər hələ də əsas şöbədən başqa bir şey ala bilmirsinizsə, aşağıdakıları yoxlayın:

  • Məsələn, konsollarınızı yoxlayın ( git remote -v ).
    • git config branch.master.remote origin .
    • git remote show origin doğru URL-ə istinad etdiyinə əmin olun: git remote show origin ( mesajı görmək).
6
31 марта '16 в 3:48 2016-03-31 03:48 cavab 31 mart 16: 00-da, 3 mart 2016-03-31 03:48 tarixində verilir

Bu cavabların heç biri kəsilmir, istisna olmaqla, istifadəçi doğru yolda deyil.

Repo bir server / sistemdən digərinə köçürmə problemi yaşanır. Repo klonlandığımda, usta üçün yalnız bir yerli şöbə yaradıb, yeni uzaqdan basdığımda yalnız aparıcı filial basılmışdı.

Beləliklə, mən bu iki üsuldan çox faydalı oldum. İnşallah başqasına kömək edirlər.

Metod 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 

Metod 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 янв. Gaui Jan 23 tərəfindən verilmiş cavab 2015-01-23 20:51 '15 at 20:51 2015-01-23 20:51

Bütün uzaq şöbələr üçün yerli şöbələri yaradan başqa bir qısa bir-line əmr:

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

Yerli şöbələrin izlənilməsi artıq yaradılıbsa düzgün işləyir. İlk git clone və ya istənilən vaxtdan sonra onu zəng edə bilərsiniz.

Klonlamadan sonra master şöbənin xaricinə çıxmasını istəmirsinizsə, istifadə edin

 git branch -r | sed -n '/->/!s#^ origin/##p'| xargs -L1 git checkout 
5
10 сент. Cavab 10 sentyabr tarixində Jofel tərəfindən verilir 2015-09-10 15:04 '15 at 15:04 2015-09-10 15:04

Burada mənim 2 qəpik əlavə edəcəyəm, çünki yerli olaraq silinən silinən filialı necə silməyini anlamağa çalışdım. Mənşə mənim deyil, hər şeyə təkrar klonlaşmanın əngəlindən keçmək istəmədim.

Mənim üçün çalışdı:

şöbənin yerli olaraq yenidən qurulması lazım olduğunu düşünür:

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

Итак, если я разветвлялся от gituser/master до sjp, а затем разветвлял его на sjp/mynewbranch, он выглядел бы так:

 $ git checkout -b mynewbranch $ git branch -a master remotes/sjp/master remotes/sjp/mynewbranch $ git fetch (habit to always do before) $ git rebase remotes/sjp/mynewbranch 
2
ответ дан Camwyn 14 июля '13 в 4:30 2013-07-14 04:30
  • 1
  • 2

Другие вопросы по меткам или Задайте вопрос