Як праверыць выдаленую галінку Git?

Хтосьці націснуў галіна з імем test з git push origin test ў агульны рэпазітар. Я бачу галінку з git branch -r .

Цяпер я спрабую праверыць выдаленую галіна test .

Я спрабаваў:

  • git checkout test , які нічога не робіць

  • git checkout origin/test дае * (no branch) . Гэта збівае з толку. Як я магу быць на "ніякай галінцы"?

Як праверыць выдаленую галіна Git?

5758
23 нояб. зададзены Juri Glass 23 лістапада. 2009-11-23 17:23 '09 у 17:23 2009-11-23 17:23
@ 26 адказаў

абнавіць

Адказ Якуба на самай справе паляпшае гэта. З версіямі Git ≥ 1.6.6 з адным пультам вы можаце проста:

 git fetch git checkout test 

Як адзначае карыстальнік masukomi у каментары, git checkout test НЕ будзе працаваць у сучасным git, калі ў вас некалькі пультаў. У гэтым выпадку выкарыстоўвайце

 git checkout -b test <name of remote>/test 

або стэнаграфія

 git checkout -t <name of remote>/test 

стары адказ

Перш чым вы зможаце пачаць лакальную працу з выдаленай галінкай, вам трэба атрымаць яе, як паказана ў адказах ніжэй.

Каб атрымаць галінку, вам проста трэба:

 git fetch origin 

Гэта прынясе вам усё аддаленыя галінкі. Вы можаце ўбачыць галінкі, даступныя для афармлення замовы з:

 git branch -v -a 

Цяпер, калі ў вас ёсць выдаленыя галінкі, вам трэба праверыць цікавую для вас галінку, падаўшы вам лакальную працоўную копію:

 git checkout -b test origin/test 
7947
23 нояб. адказ дадзены hallski 23 лістапада. 2009-11-23 17:26 '09 у 17:26 2009-11-23 17:26

Sidenote: З сучасным Git (> = 1.6.6 ) вы можаце выкарыстоўваць толькі

 git checkout test 

(звярніце ўвагу, што гэта 'test' not 'origin / test') для выканання магічнага DWIM -mery і стварыце для вас лакальную галіна 'test', для якой узыходзячы струмень быў бы галіной аддаленага адсочвання "origin / test".

border=0

Выснову * (no branch) IN git branch азначае, што вы знаходзіцеся ў неназванай галінкі ў так званым стане "адлучэнне HEAD" (HEAD паказвае непасрэдна на фіксацыю і не з'яўляецца сімвалічнай спасылкай на некаторую лакальную галіна). Калі вы зрабілі некаторыя камітаў ў гэтай неназванай галінкі, вы заўсёды можаце стварыць лакальную галіна з бягучай фіксацыяй:

 git checkout -b test HEAD 
1147
24 нояб. адказ дадзены Jakub Narębski 24 лістапада. 2009-11-24 03:17 '09 у 03:17 2009-11-24 03:17

У гэтым выпадку вы, верагодна, захочаце стварыць лакальную галіна test , якая адсочвае выдаленую галіна test :

 $ git branch test origin/test 

У больш ранніх версіях git вам спатрэбілася відавочная опцыя --track , але гэта значэнне па змаўчанні цяпер, калі вы разгаліноўваюцца выдаленую галіна.

508
23 нояб. адказ дадзены ndim 23 лістапада. 2009-11-23 17:27 '09 у 17:27 2009-11-23 17:27

Прыняты адказ не працуе для вас?

У той час як першы і абраны адказ тэхнічна карэктныя, ёсць магчымасць, што вы яшчэ не атрымалі ўсе аб'екты і спасылкі з аддаленага рэпазітара. Калі гэта так, вы атрымаеце наступную памылку:

 $ git checkout -b remote_branch origin/remote_branch 

fatal: git checkout: шляхі абнаўлення несумяшчальныя з камутацыйнымі галінамі.
Вы мелі намер праверыць "origin / remote_branch", які не можа быць дазволены як commit?

рашэнне

Калі вы атрымалі гэтае паведамленне, вы павінны спачатку зрабіць git fetch origin , дзе origin - імя аддаленага рэпазітара да запуску git checkout remote_branch . Вось поўны прыклад з адказамі:

 $ git fetch origin remote: Counting objects: 140, done. remote: Compressing objects: 100% (30/30), done. remote: Total 69 (delta 36), reused 66 (delta 33) Unpacking objects: 100% (69/69), done. From https://github.com/githubuser/repo-name e6ef1e0..5029161 develop -> origin/develop * [new branch] demo -> origin/demo d80f8d7..359eab0 master -> origin/master $ git checkout demo Branch demo set up to track remote branch demo from origin. Switched to a new branch 'demo' demo from origin $ git fetch origin remote: Counting objects: 140, done. remote: Compressing objects: 100% (30/30), done. remote: Total 69 (delta 36), reused 66 (delta 33) Unpacking objects: 100% (69/69), done. From https://github.com/githubuser/repo-name e6ef1e0..5029161 develop -> origin/develop * [new branch] demo -> origin/demo d80f8d7..359eab0 master -> origin/master $ git checkout demo Branch demo set up to track remote branch demo from origin. Switched to a new branch 'demo' 

Як вы можаце бачыць, пры запуску git fetch origin вынятых аддаленых галінак мы яшчэ не наладзілі адсочванне на нашай лакальнай машыне. Адтуль, так як зараз у нас ёсць спасылка на выдаленую галінку, мы можам проста запусціць git checkout remote_branch , і мы атрымаем перавагі аддаленага адсочвання.

421
07 дек. адказ дадзены Corey Ballou 07 снеж. 2012-12-07 23:52 '12 у 23:52 2012/12/07 23:52

Я паспрабаваў вышэйпаказанае рашэнне, але яно не спрацавала. Паспрабуйце гэта, ён працуе:

 git fetch origin 'remote_branch':'local_branch_name' 

Гэта прывядзе да выдаленай галінцы і створыць новую лакальную галіна (калі яна ўжо не існуе) з імем local_branch_name і ўлічвае яе аддалены.

208
18 окт. адказ дадзены Sahil kalra 18 каст. 2013-10-18 08:55 '13 у 08:55 2013/10/18 08:55

Гэта будзе DWIM для аддаленага імя без імя ( дакументацыя ):

 $ git checkout -t remote_name/remote_branch 

Каб дадаць новы пульт дыстанцыйнага кіравання, вам неабходна зрабіць наступнае:

 $ git remote add remote_name location_of_remote $ git fetch remote_name 

Першы паведамляе Git аддалены доступ, другі атрымлівае камітаў.

104
28 апр. адказ дадзены tacaswell 28 крас. 2012-04-28 01:37 '12 у 01:37 2012-04-28 01:37

выкарыстанне:

 git checkout -b <BRANCH-NAME> <REMOTE-NAME>/<BRANCH-NAME> 

Іншыя адказы не працуюць з сучаснымі Git ў маім дабраякасная выпадку. Магчыма, вам спатрэбіцца перанесці спачатку, калі аддаленая галінка новая, але я не праверыў гэты выпадак.

98
21 февр. адказ дадзены matanster 21 февр. 2016-02-21 13:58 '16 у 13:58 2016/02/21 13:58

Добра, адказ просты ... Вы ў асноўным бачыце галінку, але ў вас яшчэ няма лакальнай копіі! ...

Вам трэба fetch галінку ...

Вы можаце проста атрымаць, а затым аформіць заказ ў галінцы, выкарыстоўваючы каманду з аднаго радка ніжэй, каб зрабіць гэта:

 git fetch  git checkout test 

Я таксама стварыў малюнак ніжэй, каб вы маглі падзяліцца сваімі адрозненнямі, паглядзець, як працуе fetch а таксама як яго pull :

2019

05 сент. адказ дадзены Alireza 05 сент. 2017-09-05 17:20 '17 у 17:20 2017/09/05 17:20

Каб кланаваць рэпазітар Git, запусціўшы каманду:

 git clone <either ssh url /http url> 

Вышэйназваная каманда правярае ўсе галінкі, але толькі галіна master будзе ініцыялізаваць. Калі вы хочаце праверыць іншыя галінкі, выканайце наступныя дзеянні:

 git checkout -t origin/future_branch (for example) 

Гэтая каманда правярае выдаленую галінку, а ваша імя лакальнай галінкі будзе такім жа, як аддаленая галіна.

Калі вы хочаце перавызначыць імя лакальнага галінкі ў касе:

 git checkout -t -b enhancement origin/future_branch 

Цяпер ваша імя лакальнай галінкі enhancement , але ваша імя выдаленай галінкі future_branch .

дакументацыя

48
21 янв. адказ дадзены Madhan Ayyasamy 21 студз. 2013-01-21 13:04 '13 у 13:04 2013/01/21 13:04

Вы можаце паспрабаваць

 git fetch remote git checkout --track -b local_branch_name origin/branch_name 

або

 git fetch git checkout -b local_branch_name origin/branch_name 
31
24 марта '14 в 16:11 2014-03-24 16:11 адказ дадзены uma 24 сакавіка '14 у 16:11 2014/03/24 16:11

Па-першае, вам трэба зрабіць:

git fetch # Калі вы не ведаеце імя галінкі

 git fetch origin branch_name 

Па-другое, вы можаце праверыць аддалены філіял на свой лакальны:

 git checkout -b branch_name origin/branch_name 

-b створыць новую галіну ў паказаным імя з абранай выдаленай галінкі.

27
18 мая '17 в 16:55 2017-05-18 16:55 адказ дадзены Mohideen ibn Mohammed 18 мая '17 У 16:55 2017/05/18 16:55

каманды

 git fetch --all git checkout -b <ur_new_local_branch_name> origin/<Remote_Branch_Name> 

роўныя

  git fetch --all 

а затым

  git checkout -b fixes_for_dev origin/development 

Абодва створаць latest fixes_for_dev з development

25
21 апр. адказ дадзены sreekumar 21 крас. 2016-04-21 22:10 '16 у 22:10 2016/04/21 22:10

Я выкарыстоўваю наступную каманду:

 git checkout --track origin/other_remote_branch 
23
06 сент. адказ дадзены priyankvex 06 сент. 2017-09-06 17:41 '17 у 17:41 2017/09/06 17:41

Калі галінка знаходзіцца на чымсьці, акрамя аддаленага origin , мне падабаецца рабіць наступнае:

 $ git fetch $ git checkout -b second/next upstream/next 

Гэта праверыць галінку next на выдаленым серверы upstream ў лакальным галінкі з імем second/next . Гэта азначае, што калі ў вас ужо ёсць лакальная галіна з імем next, яна не будзе канфліктаваць.

 $ git branch -a * second/next remotes/origin/next remotes/upstream/next 
22
01 марта '13 в 13:00 2013-03-01 13:00 адказ дадзены Kris 01 сакавіка '13 а 13:00 2013/03/01 13:00

git fetch git checkout your-branch-name

15
26 марта '14 в 10:00 2014-03-26 10:00 адказ дадзены Inder Kumar Rathore 26 сакавіка '14 а 10:00 2014/03/26 10:00

git branch -r кажа, што імя аб'екта недапушчальна, таму што імя гэтай галіны не ўсе знаходзіцца ў спісе лакальных галін Git. Абновіце свой лакальны спіс галінак з крыніцы з дапамогай:

 git remote update 

І затым паспрабуйце зноў праверыць выдаленую галінку.

Гэта спрацавала для мяне.

Я мяркую, што git fetch цягне ва ўсіх аддаленых галінках, чаго не хоча арыгінальны плакат.

15
06 июня '13 в 15:21 2013-06-06 15:21 адказ дадзены webdevguy 06 чэрвеня '13 у 15:21 2013/06/06 15:21

ні адзін з гэтых адказаў не працаваў для мяне. гэта спрацавала:

git checkout -b feature/branch remotes/origin/feature/branch

14
10 июля '18 в 5:11 2018-07-10 05:11 адказ дадзены brianyang 10 ліпеня '18 ў 05:11 2018/07/10 05:11

Каманда git remote show <origin name> будзе адлюстроўваць спіс усіх галін (уключаючы не Выкарыстаныя галінкі). Затым вы можаце знайсці імя выдаленай галінкі, якое трэба атрымаць.

прыклад:

 $ git remote show origin 

Выкарыстоўвайце гэтыя крокі для здабывання аддаленых галінаў:

 git fetch <origin name> <remote branch name>:<local branch name> git checkout <local branch name > (local branch name should the name that you given fetching) 

прыклад:

 $ git fetch origin test:test $ git checkout test 
11
07 янв. адказ дадзены Thushan 07 студз. 2018-01-07 16:12 '18 у 16:12 2018/01/07 16:12

Іншыя хлопцы і дзяўчаты даюць рашэння, але, можа быць, я магу сказаць вам, чаму.

git праверачны тэст, які нічога не робіць

Does nothing ня роўны doesn't work , таму, мяркую, калі вы ўводзіце 'git checkout test' у сваім тэрмінале і націскаеце клавішу ўводу, паведамленне не з'яўляецца і памылкі не ўзнікае. Я маю рацыю?

Калі адказ "так", я магу сказаць вам прычыну.

Прычына ў тым, што ў вашым дрэве ёсць файл (ці тэчка) з імем "test".

Калі git checkout xxx разабраўся,

  • git спачатку глядзіць на xxx як імя галінкі, але няма галінкі з імем test.
  • Тады Git думае, што xxx - гэта шлях, і на шчасце (або, на жаль), ёсць файл з імем test. Таму git checkout xxx азначае адмяніць любую мадыфікацыю ў файле xxx .
  • Калі няма файла з імем xxx , то Git паспрабуе стварыць xxx ў адпаведнасці з некаторымі правіламі. Адным з правілаў з'яўляецца стварэнне галінкі з імем xxx , калі існуе remotes/origin/xxx .
8
10 июля '17 в 10:45 2017-07-10 10:45 адказ дадзены oldman 10 ліпеня '17 ў 10:45 2017/07/10 10:45

Я затрымаўся ў сітуацыі, калі адбылася error: pathspec 'desired-branch' did not match any file(s) known to git. для ўсіх прапаноў вышэй. Я на git версіі 1.8.3.1.

Так што гэта спрацавала для мяне:

 git fetch origin desired-branch git checkout -b desired-branch FETCH_HEAD 

Тлумачэнне гэтаму заключаецца ў тым, што я заўважыў, што пры выманні выдаленай галінкі яна была абраная ў FETCH_HEAD:

 $ git fetch origin desired-branch From github.com:MYTEAM/my-repo * branch desired-branch -> FETCH_HEAD 
7
11 окт. адказ дадзены alisa 11 каст. 2018-10-11 00:52 '18 у 0:52 2018/10/11 00:52

Проста запусціце git checkout з імем выдаленай галінкі. Git аўтаматычна створыць лакальную галінку, якая адсочвае выдаленую:

 git fetch git checkout test 

Аднак, калі гэтае імя галінкі знойдзена больш чым у адным пульце, гэта не спрацуе, бо Git не ведае, што выкарыстоўваць. У гэтым выпадку вы можаце выкарыстоўваць або:

 git checkout --track origin/test 

ці ж

 git checkout -b test origin/test 

У 2.19 Git вывучыў канфігурацыю checkout.defaultRemote , у якой пры выдаленні такой неадназначнасці паказваецца значэнне аддаленага кіравання па змаўчанні.

6
13 сент. адказ дадзены Eugene Yarmash 13 сент. 2018-09-13 15:21 '18 у 15:21 2018/09/13 15:21

Каб атрымаць зноў створаныя галінкі

 git fetch 

Пераключыцца на іншую галінку

 git checkout BranchName 
6
15 марта '18 в 11:49 2018-03-15 11:49 адказ дадзены Hasib Kamal 15 сакавіка '18 у 11:49 2018/03/15 11:49

Вы можаце пачаць адсочваць усе выдаленыя галінкі з наступным Bash script:

 #!/bin/bash git fetch --all for branch in `git branch -r --format="%(refname:short)" | sed 's/origin\///'` do git branch -f --track "$branch" "origin/$branch" done 

Вось таксама однострочный версія:

 git fetch --all; for branch in `git branch -r --format="%(refname:short)" | sed 's/origin\///'`; do git branch --track "$branch" "origin/$branch" ; done ; 
6
11 авг. адказ дадзены OzzyCzech 11 жнів. 2017-08-11 15:06 '17 у 15:06 2017/08/11 15:06

Калі ласка, прытрымлівайцеся гэтай камандзе, каб стварыць пустую тэчку. Увядзіце гэта і выкарыстоўвайце наступную каманду:

 saifurs-Mini:YO-iOS saifurrahman$ git clone your_project_url Cloning into 'iPhoneV1'... remote: Counting objects: 34230, done. remote: Compressing objects: 100% (24028/24028), done. remote: Total 34230 (delta 22212), reused 15340 (delta 9324) Receiving objects: 100% (34230/34230), 202.53 MiB | 294.00 KiB/s, done. Resolving deltas: 100% (22212/22212), done. Checking connectivity... done. saifurs-Mini:YO-iOS saifurrahman$ cd iPhoneV1/ saifurs-Mini:iPhoneV1 saifurrahman$ git checkout 1_4_0_content_discovery Branch 1_4_0_content_discovery set up to track remote branch 1_4_0_content_discovery from origin. Switched to a new branch '1_4_0_content_discovery' 1_4_0_content_discovery from origin saifurs-Mini:YO-iOS saifurrahman$ git clone your_project_url Cloning into 'iPhoneV1'... remote: Counting objects: 34230, done. remote: Compressing objects: 100% (24028/24028), done. remote: Total 34230 (delta 22212), reused 15340 (delta 9324) Receiving objects: 100% (34230/34230), 202.53 MiB | 294.00 KiB/s, done. Resolving deltas: 100% (22212/22212), done. Checking connectivity... done. saifurs-Mini:YO-iOS saifurrahman$ cd iPhoneV1/ saifurs-Mini:iPhoneV1 saifurrahman$ git checkout 1_4_0_content_discovery Branch 1_4_0_content_discovery set up to track remote branch 1_4_0_content_discovery from origin. Switched to a new branch '1_4_0_content_discovery' 
2
01 янв. адказ дадзены Mehedi Hasan 01 студз. 2016-01-01 13:31 '16 у 13:31 2016/01/01 13:31

Атрымаць паходжанне і праверыць галінку.

 git fetch origin  git checkout branch_name 
1
21 мая '18 в 14:33 2018-05-21 14:33 адказ дадзены Pranav 21 мая '18 У 14:33 2018/05/21 14:33

Калі імя выдаленай галінкі пачынаецца са спецыяльных сімвалаў, вам трэба выкарыстоўваць адзінарныя двукоссі у камандзе checkout, інакш git не будзе ведаць, аб якой галінцы вы кажаце.

Напрыклад, я паспрабаваў выняць выдаленую галінку з імем #9773 але каманда не працавала належным чынам, як паказана на малюнку ніжэй:

2019

07 нояб. адказ дадзены Ulysses Alves 07 лістапада. 2018-11-07 14:17 '18 у 14:17 2018/11/07 14:17

Іншыя пытанні па пазнаках або Задайце пытанне