Git'teki t├╝m uzak dallar nas─▒l klonlan─▒r?


Al─▒nan cevaba git


Her ikisi de GitHubÔÇÖa g├Ânderilen bir master ve bir ┼čubem var . Ben d, ed ve ed, ancak daldan ba┼čka bir ┼čey bulam─▒yorum . development http://en.wikipedia.org/wiki/GitHub clone pull fetch master

Belli bir ┼čeyi ├Âzledi─čimden eminim, ancak k─▒lavuzu okudum ve hi├ž ne┼če alam─▒yorum.


3954









Cevap say─▒s─▒n─▒ say: 30






─░lk ├Ânce, uzak bir Git deposunu klonlay─▒n ve i├žine cd :

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

Ard─▒ndan, deponuzdaki yerel ┼čubelere bak─▒n:

 $ git branch
* master
 

Ancak deponuzda saklanan ba┼čka ┼čubeler var! Bunlar─▒ -a bayra─č─▒ kullanarak g├Ârebilirsiniz :

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

Sadece bir yukar─▒ ak─▒┼č dal─▒na h─▒zl─▒ca g├Âz atmak istiyorsan─▒z, do─črudan kontrol edebilirsiniz:

 $ git checkout origin/experimental
 

Ancak bu ┼čube ├╝zerinde ├žal─▒┼čmak istiyorsan─▒z, a┼ča─č─▒dakiler taraf─▒ndan otomatik olarak yap─▒lan bir yerel izleme ┼čubesi olu┼čturman─▒z gerekir:

 $ git checkout experimental
 

ve g├Âreceksin

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

Bu son ├žizgi baz─▒ insanlar─▒ f─▒rlat─▒yor: "Yeni ┼čube" - ha? Bunun anlam─▒, dal─▒n dizinden al─▒nmas─▒ ve sizin i├žin yerel olarak yarat─▒lmas─▒d─▒r. ├ľnceki o dal genellikle k├Âken / branch_name dal─▒ demektir uzak ┼čube, izlemek ├╝zere olu┼čturulmu┼č ediliyor anlat─▒r gibi ├žizgi asl─▒nda daha bilgilendirici

┼×imdi, yerel ┼čubelerinize bakarsan─▒z, g├Ârece─činiz ┼čey ┼čudur:

 $ git branch
* experimental
  master
 

Asl─▒nda birden fazla uzak havuzu kullanarak izleyebilirsiniz 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
 

Bu noktada, i┼čler olduk├ža ├ž─▒lg─▒na d├Ân├╝yor, gitk neler oldu─čunu g├Ârmek i├žin ko┼čun :

 $ gitk --all &
 

4374


2008-09-16





Ayn─▒ anda almak istedi─činiz bir├žok uzak dal─▒n─▒z varsa, ┼čunu yap─▒n:

 $ git pull --all
 

Art─▒k uzaktan depoya ├žarpmadan istedi─činiz ┼čubeyi istedi─činiz gibi kontrol edebilirsiniz.


791







Bu Bash beti─či bana yard─▒mc─▒ oldu:

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

Master (muhtemelen orijinal klonlama komutundan alm─▒┼č oldu─čunuz) d─▒┼č─▒ndaki t├╝m uzak dallar i├žin izleme dallar─▒ olu┼čturacakt─▒r. Bence hala bir ┼čey yapman─▒z gerekebilir.

 git fetch --all
git pull --all
 

emin olmak.

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 Her zamanki gibi: rm -rf universe'yi bildi─čimiz gibi kopyalamadan ├Ânce kurulumunuzu test edin.

Tek linerli kullan─▒c─▒ kredisi cfi


411







--mirror Se├žene─či kullanarak remote izleme dallar─▒ d├╝zg├╝n kopyalan─▒yor gibi g├Âr├╝n├╝yor . Bununla birlikte, depoyu ├ž─▒plak bir havuz olarak ayarlar, bu nedenle daha sonra normal bir depoya d├Ân├╝┼čt├╝rmeniz gerekir.

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

Referans: Git FAQ: Uzaktan izlenen t├╝m ┼čubelerle bir havuzu nas─▒l klonlar─▒m?


329


2011-08-27





─░stedi─činiz gibi "git checkout -b somebranch origin / somebranch" s├Âzdizimini kullanmadan bir ┼čubeye kolayca ge├žebilirsiniz. Sadece yapabilirsiniz:

 git checkout somebranch
 

Git otomatik olarak do─čru olan─▒ yapacak:

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

Git, ayn─▒ ad─▒ ta┼č─▒yan bir dal─▒n tam olarak bir uzaktan kumandada olup olmad─▒─č─▒n─▒ kontrol eder ve varsa, uzak bir ┼čube oldu─čunu a├ž─▒k├ža belirtti─činiz ┼čekilde izler. Git 1.8.2.1'deki git-check-man k─▒lavuz sayfas─▒ndan:

<branch> bulunmazsa ancak e┼čle┼čen bir adda tam olarak bir uzaktan kumandada bir izleme dal─▒ varsa (bunu <remote> olarak adland─▒r─▒n),

 $ git checkout -b <branch> --track <remote>/<branch>
 

211







ile ilgili olarak,

$ git ├Âdeme -b deneysel k├Âken / deneysel

kullanma

 $ git checkout -t origin/experimental
 

veya daha ayr─▒nt─▒l─▒ ama hat─▒rlamas─▒ kolay

 $ git checkout --track origin/experimental
 

Uzak bir havuzu izleme a├ž─▒s─▒ndan daha iyi olabilir.


96







Yapt─▒─č─▒n─▒z getirinin t├╝m uzak dallar─▒ almas─▒ gerekir, ancak bunlar i├žin yerel dallar olu┼čturmaz. Gitk kullan─▒yorsan─▒z, "uzaktan kumandalar / k├Âkeni / dev" olarak tan─▒mlanan uzak dallar─▒ veya benzer bir ┼čey g├Ârmelisiniz.

Uzak bir dal─▒ temel alan yerel bir ┼čube olu┼čturmak i├žin a┼ča─č─▒dakileri yap─▒n:

git ├Âdeme -b dev refs / uzaktan / kaynak / dev

Hangi gibi bir ┼čey d├Ând├╝rmeli:

┼×ube dev uzaktan ┼čube refs / uzaktan / kaynak / dev izlemek i├žin ayarland─▒.
"Dev" adl─▒ yeni ┼čubeye ge├žti

┼×imdi, dev dal─▒ ├╝zerindeyken "git pull", yerel dev'inizi uzak dev dal─▒yla ayn─▒ noktaya g├╝ncelle┼čtirir. T├╝m dallar─▒ alaca─č─▒na dikkat edin, ancak yaln─▒zca bulundu─čunuz a─čac─▒n ├╝st├╝ne ├žekin.


78







"Git clone git: // location" yapt─▒─č─▒n─▒zda, t├╝m dallar ve etiketler al─▒n─▒r.

Belirli bir uzak dal─▒n ├╝zerinde ├žal─▒┼čmak i├žin, ├ž─▒k─▒┼č noktas─▒ uzaktan oldu─ču varsay─▒larak:

 git checkout -b branch origin/branchname
 

57







Takma ad kullan─▒n. Herhangi bir yerel Git tek g├Âmlek bulunmamakla birlikte, kendi

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

ve sonra kullan─▒n

 git clone-branches
 

51







Neden sadece "usta" y─▒ g├Âr├╝yorsun

git clone t├╝m uzak uzak ┼čubeleri indirir, ancak dosyalar yeni havuzunuzda bulunsa bile, onlar─▒ hala "uzak" olarak g├Âr├╝r. Bunun bir istisnas─▒ var; bu, klonlama i┼čleminin "master" olarak adland─▒r─▒lan uzak daldan "master" ad─▒nda yerel bir dal olu┼čturmas─▒d─▒r. Varsay─▒lan olarak, git branch yaln─▒zca yerel dallar─▒ g├Âsterir, bu nedenle yaln─▒zca "usta" y─▒ g├Âr├╝rs├╝n├╝z.

git branch -a uzak dallar dahil t├╝m dallar─▒ g├Âsterir .


Yerel ┼čubeler nas─▒l al─▒n─▒r

E─čer bir dal ├╝zerinde ├žal─▒┼čmak istiyorsan─▒z, muhtemelen bunun ÔÇťyerelÔÇŁ bir versiyonunu isteyeceksiniz. Uzak ┼čubelerden basit├že yerel ┼čubeler olu┼čturmak i├žin (bunlar─▒ kontrol etmeden ve b├Âylece ├žal─▒┼čma dizininizin i├žeri─čini de─či┼čtirmeden) , ┼č├Âyle yapabilirsiniz:

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

Bu ├Ârnekte, branchone dayanarak olu┼čturdu─čunuz yerel bir ┼čubenin ad─▒ origin/branchone ; bunun yerine farkl─▒ adlarla yerel dallar olu┼čturmak istiyorsan─▒z, bunu yapabilirsiniz:

 git branch localbranchname origin/branchone
 

Bir yerel ┼čube olu┼čturduktan sonra, onu birlikte g├Ârebilirsiniz git branch (unutmay─▒n, -a yerel dallar─▒ g├Ârmenize gerek yoktur ).


48







Bu ├žok karma┼č─▒k de─čil, ├žok basit ve yal─▒nd─▒r ad─▒mlar a┼ča─č─▒daki gibidir;

git fetch origin Bu, t├╝m uzak dallar─▒ yerelinize getirecektir.

git branch -a Bu size t├╝m uzak ┼čubeleri g├Âsterecektir.

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

A┼ča─č─▒daki komutla istedi─činiz dalda olup olmad─▒─č─▒n─▒z─▒ do─črulay─▒n;

 git branch
 

├ç─▒kt─▒ b├Âyle olacak;

 *your current branch 
some branch2
some branch3 
 

Ge├žerli dal─▒ belirten * i┼čaretine dikkat edin.


45


2013-12-26





Her zamankinden daha iyi ge├ž, ama i┼čte bunu yapman─▒n en iyi yolu:

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

Bu noktada, t├╝m ┼čubeleriyle birlikte uzak deponun tam bir kopyas─▒na sahipsiniz (do─črulay─▒n git branch ). Uzak reponuzda kendi uzaktan kumandas─▒ varsa --mirror yerine kullanabilirsiniz --bare .


44







Sadece ┼čunu yap:

 $ 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
 

G├Ârd├╝─č├╝n├╝z gibi, 'git clone git: //example.com/myprojectt' her┼čeyi getirir, hatta dallar bile, onlar─▒ kontrol etmeniz gerekir, o zaman yerel ┼čubeniz olu┼čturulur.


39







T├╝m dallar─▒ almak i├žin sadece "git clone" kullanman─▒z gerekir.

 git clone <your_http_url>
 

Sadece ana ┼čubeyi g├Ârseniz bile, t├╝m ┼čubeleri g├Ârmek i├žin "git ┼čube-a" kullanabilirsiniz.

 git branch -a
 

Ve zaten sahip oldu─čunuz herhangi bir ┼čubeye ge├žebilirsiniz.

 git checkout <your_branch_name>
 

"Git klonu" ndan sonra, uzak repo ile ba─člant─▒ kurman─▒za gerek yok, wifi 'nizi kapatt─▒─č─▒n─▒zda "git branch-a" ve "git checkout" ba┼čar─▒yla ├žal─▒┼čt─▒r─▒labilir. Bu nedenle, "git clone" yapt─▒─č─▒n─▒zda, t├╝m ┼čubeleri uzaktaki depodan kopyalad─▒─č─▒n─▒ kan─▒tlad─▒. Ondan sonra, uzak depoya ihtiyac─▒n─▒z yoktur, yerelinizde ┼čubelerin kodlar─▒ zaten vard─▒r.


24







A'n─▒n git clone t├╝m depoy─▒ kopyalamas─▒ gerekiyordu. Klonlamay─▒ dene ve sonra ko┼č git branch -a . B├╝t├╝n dallar─▒ listelemeli. O zaman "master" yerine "foo" dal─▒na ge├žmek istiyorsan─▒z, kullan─▒n git checkout foo .


22







Git_remote_branch arac─▒m─▒ kullan─▒n (makinenizde Ruby y├╝kl├╝ olmal─▒d─▒r). Uzak dal manip├╝lasyonlar─▒n─▒n kolayca ├Âl├╝ hale getirilmesi i├žin ├Âzel olarak ├╝retilmi┼čtir.

Sizin ad─▒n─▒za bir i┼člem yapt─▒─č─▒nda, konsolda k─▒rm─▒z─▒ renkte yazd─▒r─▒r. Zamanla, sonunda beynine sad─▒k kal─▒rlar :-)

Grb'nin sizin ad─▒n─▒za komut ├žal─▒┼čt─▒rmas─▒n─▒ istemiyorsan─▒z, sadece ÔÇťa├ž─▒klaÔÇŁ ├Âzelli─čini kullan─▒n. Komutlar, sizin i├žin y├╝r├╝t├╝lmek yerine konsolunuza yazd─▒r─▒lacakt─▒r.

Son olarak, ezberlemeyi kolayla┼čt─▒rmak i├žin t├╝m komutlar─▒n di─čer adlar─▒ vard─▒r.

Bunun alfa yaz─▒l─▒m─▒ oldu─čuna dikkat edin ;-)

Grb yard─▒m─▒n─▒ ├žal─▒┼čt─▒rd─▒─č─▒n─▒zda yard─▒m ─░┼čte:

git_remote_branch s├╝r├╝m 0.2.6

  Kullan─▒m─▒:

  grb create branch_name [origin_server] 

  grb yay─▒nla branch_name [origin_server] 

  grb rename branch_name [origin_server] 

  grb dal silme_ad─▒ [origin_server] 

  grb track branch_name [origin_server] 



  Notlar:
  - E─čer ilk_server belirtilmezse, 'ilke' ad─▒ verilir. 
    (git varsay─▒lan)
  - Yeniden adland─▒r i┼člevi ge├žerli dal─▒ yeniden adland─▒r─▒r.

  A├ž─▒klama meta komutu: ile herhangi bir komutu da haz─▒rlayabilirsiniz 
Anahtar kelime 'a├ž─▒kla'. Komutu ├žal─▒┼čt─▒rmak yerine git_remote_branch
sadece ba┼čarmak i├žin ├žal─▒┼čt─▒rman─▒z gereken komutlar─▒n listesini ├ž─▒kartacakt─▒r. 
bu ama├ž.

  ├ľrnek: 
    grb a├ž─▒kla
    grb a├ž─▒klamak my_branch github olu┼čturmak

  T├╝m komutlar─▒n ayr─▒ca di─čer adlar─▒ vard─▒r:
  olu┼čtur: olu┼čtur, yeni
  sil: sil, yok et, ├Âld├╝r, kald─▒r, rm
  yay─▒nla: yay─▒nla, uzaktan ayarla
  yeniden adland─▒r: yeniden adland─▒r, rn, mv, ta┼č─▒
  iz: iz, izle, al, al

19







Burada g├Ârd├╝─č├╝m t├╝m cevaplar ge├žerlidir ancak bir havuzu klonlaman─▒n ve t├╝m dallar─▒ ayn─▒ anda ├žekmenin daha temiz bir yolu vard─▒r.

Bir havuzu klonlad─▒─č─▒n─▒zda, ┼čubelerin t├╝m bilgileri ger├žekte indirilir ancak ┼čubeler gizlenir. Komut ile

 $ git branch -a
 

Deponun t├╝m ┼čubelerini ve komutlar─▒n─▒ g├Âsterebilirsiniz.

 $ git checkout -b branchname origin/branchname
 

daha sonra bir defada manuel olarak "indirebilirsiniz".


Bununla birlikte, ├žok say─▒da ┼čubesi olan bir repo klonlamak istedi─činizde, yukar─▒da g├Âsterilen t├╝m yollar yukar─▒da g├Âsterildi─či gibi biraz karma┼č─▒k olsa da g├Âsterece─čim ├žok daha temiz ve daha h─▒zl─▒ bir ┼čekilde uzun ve s─▒k─▒c─▒d─▒r. Bunu ger├žekle┼čtirmek i├žin ├╝├ž ad─▒ma ihtiyac─▒n─▒z var:

  1. ─░lk ad─▒m

makinenizde yeni bir bo┼č klas├Âr olu┼čturun ve depodan .git klas├Âr├╝n├╝n bir ayna 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 klas├Âr├╝ i├žindeki yerel depo hala bo┼č, sadece terminalden bir "ls -alt" komutu ile g├Ârebilece─činiz gizli bir .git klas├Âr├╝ var.

  1. ─░kinci ad─▒m

git yap─▒land─▒rmalar─▒n─▒n "bare" boole de─čerini false olarak de─či┼čtirerek, bu depoyu bo┼č (├ž─▒plak) bir depodan normal bir depoya ge├žirin:

 $ git config --bool core.bare false
 
  1. ├ť├ž├╝nc├╝ ad─▒m

Ge├žerli klas├Âr├╝n i├žindeki her ┼čeyi al─▒n ve yerel makinedeki t├╝m dallar─▒ olu┼čturun, bu nedenle bunu normal bir depo haline getirir.

 $ git reset --hard
 

Art─▒k sadece "git branch" komutunu yaz─▒p t├╝m ┼čubelerin indirildi─čini g├Ârebilirsiniz.

Bu, bir ┼čubeyi t├╝m ┼čubelerle ayn─▒ anda klonlayabilece─činiz h─▒zl─▒ yoldur, ancak bu ┼čekilde her proje i├žin yapmak istedi─činiz bir ┼čey de─čildir.


18







Sorunun cevaplar─▒ndan birine bakt─▒─č─▒mda, onu k─▒saltman─▒n m├╝mk├╝n oldu─čunu farkettim:

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

Ancak uzak dallardan biri ├Ârne─čin admin_master olarak adland─▒r─▒lm─▒┼čsa indirilmeyecektir!

├ľzg├╝n fikir i├žin bigfish i├žin te┼čekk├╝rler


12


2015-02-19





Yerel bir repo'dan klonlamak git clone & git fetch ile ├žal─▒┼čmaz: bir├žok dal / etiket dokunmam─▒┼č kal─▒r.

T├╝m dallar ve etiketlerle klon almak i├žin.

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

T├╝m dallar ve etiketlerle birlikte ├žal─▒┼čan bir kopya ile klon almak i├žin:

 git clone --mirror git://example.com/myproject myproject/.git
cd myproject
git config --unset core.bare
git config receive.denyCurrentBranch updateInstead
git checkout master
 

12







Tamam, deponu klonlad─▒─č─▒n─▒zda, orada t├╝m ┼čubeleriniz var.

Sadece yaparsan git branch , onlar biraz gizlidir ...

Yani t├╝m ┼čubelerin ad─▒n─▒ g├Ârmek istiyorsan─▒z, sadece --all ┼čunun gibi bayrak ekleyin :

git branch --all veya git branch -a

Sadece ┼čubeye ├Âdeme yaparsan─▒z, ihtiyac─▒n─▒z olan her ┼čeyi al─▒rs─▒n─▒z.

Peki ya siz klonlad─▒ktan sonra ba┼čka birisinin olu┼čturdu─ču ┼čube?

Bu durumda, sadece yap─▒n:

git fetch

ve t├╝m ┼čubeleri tekrar kontrol et ...

Ayn─▒ anda hem almak hem de sat─▒n almak isterseniz, ┼čunlar─▒ yapabilirsiniz:

git fetch && git checkout your_branch_name

Ayr─▒ca s├Âylediklerimi basitle┼čtirmeniz i├žin a┼ča─č─▒daki resmi olu┼čturduk:


git branch - t├╝m ┼čubelere ula┼čma


12







 #!/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 t├╝m uzak dal kodlar─▒n─▒ yerel depoya ├žeker.


11







Kopyala yap─▒┼čt─▒r komut sat─▒r─▒na yap─▒┼čt─▒rmak i├žin:

 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 fazla okunabilirlik i├žin:

 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 irade:

  1. ustay─▒ kontrol et (bulundu─čumuz ┼čubeyi silebilmemiz i├žin)
  2. ├ľdeme yapmak i├žin uzaktan kumanday─▒ se├žin (sahip oldu─čunuz uzaktan kumanda ile de─či┼čtirin)
  3. Master ve HEAD d─▒┼č─▒ndaki t├╝m uzaktan kumandalar aras─▒nda ge├ži┼č yap─▒n
    1. yerel ┼čubeyi sil (b├Âylece g├╝ncellenen ┼čubeleri zorlayabiliriz)
    2. ┼čubeden uzaktan kontrol et
  4. ustay─▒ kontrol et (bunun u─čruna)

Dayanarak cevap ait VonC .


10







Ayn─▒s─▒n─▒ yapmam gerekiyordu. ─░┼čte benim Ruby beti─čim.

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







Bu k├╝├ž├╝k Powershell i┼člevlerini, men┼čei uzaktaki t├╝m git ┼čubelerimi kontrol edebilmek i├žin 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>' #>
}
 

Git ayarlar─▒ depomda daha fazla git i┼člevi bulunabilirhttps://github.com/aburok/mysettings/blob/master/PowerShell/config/git-alias.ps1


8







Bu cevaplar─▒n hi├žbiri, kullan─▒c─▒ kimsenin do─čru yolda olmad─▒─č─▒ durumlar d─▒┼č─▒nda kesildi.

Bir repoyu bir sunucudan / sistemden di─čerine ta┼č─▒makla ilgili sorun ya┼č─▒yordum. Repoyu klonlad─▒─č─▒mda, yaln─▒zca master i├žin yerel bir ┼čube olu┼čturdu─čundan, yeni uzaktan kumandaya bast─▒─č─▒mda yaln─▒zca ana dal─▒n itilmesi sa─čland─▒.

Bu y├╝zden bu iki y├Ântemi ├çOK faydal─▒ buldum. Umar─▒m ba┼čka birine yard─▒m ederler.

Y├Ântem 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
 

Y├Ântem 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
 

7


2015-01-23





Git genellikle (belirtilmedi─činde) t├╝m dallar─▒ ve / veya etiketleri (refs, bak─▒n─▒z:) git ls-refs ge├žmi┼čini tamamlamak i├žin gerekli nesnelerle birlikte bir veya daha fazla depodan al─▒r. Ba┼čka bir deyi┼čle, indirilmi┼č olan nesneler taraf─▒ndan eri┼čilebilen nesneleri getirir. Bak─▒n: Ger├žekten ne yapar git fetch ?

Bazen do─črudan ge├žerli olanla ba─člant─▒l─▒ olmayan dallar─▒n─▒z / etiketleriniz olabilir, bu durumda git pull --all / git fetch --all yard─▒mc─▒ olmaz, ancak bunlar─▒ ┼č├Âyle s─▒ralayabilirsiniz:

 git ls-remote -h -t origin
 

ve ref adlar─▒n─▒ bilerek elle getir.

Yani hepsini getirmek i├žin ┼čunu deneyin:

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

--depth=10000 E─čer depo shallowed verdiyseniz parametre yard─▒mc─▒ olabilir.

Ard─▒ndan t├╝m ┼čubelerinizi tekrar kontrol edin:

 git branch -avv
 

E─čer yukar─▒dakiler yard─▒mc─▒ olmazsa, izlenen listesine manuel olarak eksik dallar eklemeniz gerekir (bir ┼čekilde kaybolduklar─▒ i├žin):

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

taraf─▒ndan git remote set-branches gibi:

 git remote set-branches --add origin missing_branch
 

yani remotes/origin getirme i┼čleminden sonra g├Âr├╝nebilir :

 $ 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
 

Sorun giderme

Ana daldan ba┼čka bir ┼čey alam─▒yorsan─▒z, a┼ča─č─▒dakileri kontrol edin:

  • Uzaktan kumandalar─▒n─▒z─▒ ( git remote -v ) tekrar kontrol edin ( ├Ârn.
    • Do─črula o git config branch.master.remote oldu─čunu origin .
    • ┼×ununla origin do─čru URLÔÇÖyi i┼čaret edip etmedi─čini kontrol edin : git remote show origin (bu g├Ânderiye bak─▒n ).

7







git clone --mirror Orijinal repo bunun i├žin iyi ├žal─▒┼č─▒yor.

 git clone --mirror /path/to/original.git
git remote set-url origin /path/to/new-repo.git
git push -u origin
 

7







─░┼čte awk kullanan bir cevap. Yeni bir depoda kullan─▒l─▒yorsa, bu y├Ântem yeterlidir.

 git branch -r | awk -F/ '{ system("git checkout " $NF) }'
 

Mevcut dallar basit├že kontrol edilecektir veya i├žinde oldu─ču gibi ilan edilir, ancak ├žat─▒┼čmalar─▒ ├Ânlemek i├žin filtreler eklenebilir.

Ayr─▒ca, a├ž─▒k bir git checkout -b <branch> -t <remote>/<branch> komut ├ža─č─▒rmas─▒ i├žin de de─či┼čtirilebilir .

Bu cevap ┼ču Nikos C. 'nin fikri .


Alternatif olarak uzak ┼čubeyi de belirleyebiliriz. Bu murphytalk '─▒n cevab─▒na dayanmaktad─▒r .

 git branch -r | awk '{ system("git checkout -t " $NF) }'
 

├çat─▒┼čmalara ├Âl├╝mc├╝l hata mesajlar─▒ veriyor ama onlar─▒ zarars─▒z g├Âr├╝yorum.


Her iki komut da takma ad olabilir.

Kullan─▒lmas─▒ kimsenin '─▒n cevab─▒ referans olarak biz takma ad olu┼čturmak i├žin a┼ča─č─▒daki komutlar─▒ sahip olabilir:

 git config --global alias.clone-branches '! git branch -r | awk -F/ "{ system(\"git checkout \" \$NF) }"'
git config --global alias.clone-branches '! git branch -r | awk "{ system(\"git checkout -t \" \$NF) }"'
 

┼×ahsen kullan─▒r─▒m track-all ya da track-all-branches .


7







T├╝m uzak dallar i├žin yerel dallar olu┼čturan ba┼čka bir k─▒sa tek-liner komut:

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

Yerel ┼čubeleri izlemek zaten olu┼čturulduysa da d├╝zg├╝n ├žal─▒┼č─▒r. ─░lk git clone veya daha sonra istedi─činiz zaman arayabilirsiniz .

master Klonlama i┼čleminden sonra ┼čubenizi kontrol ettirmeniz gerekmiyorsa ,

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

6







Hat─▒rlayabilece─činiz komutlar─▒ kullan─▒n.

Atlassian'─▒n Depo Bar─▒nd─▒rma Hizmeti olan Bitbucket'i kullan─▒yorum. Bu y├╝zden doktorlar─▒n─▒ takip etmeye ├žal─▒┼č─▒yorum. Ve bu benim i├žin m├╝kemmel ├žal─▒┼č─▒yor. A┼ča─č─▒daki kolay ve k─▒sa komutlarla uzaktaki ┼čubenizi kontrol edebilirsiniz.

─░lk ├Ânce havuzunuzu kopyalay─▒n, ard─▒ndan hedef klas├Âre ge├žin. Ve son fakat en az olmayan ve sat─▒n alma:

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

Bu kadar. ─░┼čte bir litte daha ger├žek d├╝nya ├Ârne─či:

 git clone https://[email protected]/team/repository.git project_folder
cd project_folder
git fetch && git checkout develop
 

Komutlar hakk─▒nda ayr─▒nt─▒l─▒ bilgileri belgelerde bulabilirsiniz: Klonlama Komutanl─▒─č─▒ , Getirme Komutu , ├ľdeme Komutu


6


2016-03-11