it-swarm-eu.dev

Jak se dívá na vzdálenou pobočku Git?

Někdo posunul pobočku s názvem test s git Push Origin test do sdíleného úložiště. Vidím větev s git branch -r.

Teď se snažím zjistit vzdálenou větev test.

Zkusil jsem:

  • git checkout test, který nic nedělá

  • git checkout Origin/test dává * (no branch). Což je matoucí. Jak mohu být na "žádné větvi"?

Jak se podívám na vzdálenou pobočku Git?

6088
Juri Glass

Aktualizace

Jakubova odpověď vlastně se na tom zlepšuje. S verzí Git ≥ 1.6.6, pouze s jedním vzdáleným ovladačem, můžete:

git fetch
git checkout test

Jak uživatel masukomi poukazuje v komentáři, git checkout test nebude fungovat v moderním režimu git, pokud máte více dálkových ovladačů. V tomto případě použijte

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

nebo zkratka

git checkout -t <name of remote>/test

Stará odpověď

Než budete moci začít pracovat lokálně na vzdálené pobočce, musíte ji vyvolat podle pokynů uvedených níže.

Chcete-li načíst pobočku, stačí:

git fetch Origin

To vám přinese všechny vzdálené pobočky. S pobočkami, které jsou k dispozici pro pokladnu, můžete vidět:

git branch -v -a

Se vzdálenými větvemi v ruce je třeba se podívat na pobočku, o kterou máte zájem, a poskytnout vám místní pracovní kopii:

git checkout -b test Origin/test
8411
hallski

Sidenote:S moderním Gitem (> = 1.6.6 ) můžete používat pouze

git checkout test

(Všimněte si, že to je 'test' ne 'Origin/test') provádět magické DWIM - mery a vytvořit místní větve 'test' pro vás, pro které by upstream by větev vzdáleného sledování 'Původ/test ".


Výstup * (no branch) v git branch znamená, že jste na nepojmenované větvi, v takzvaném stavu "odpojeného HEAD" (HEAD ukazuje přímo na spáchání, a není symbolickým odkazem na nějakou lokální pobočku). Pokud jste udělali některé provize v této nepojmenované větvi, můžete vždy vytvořit lokální odchozí větu:

git checkout -b test HEAD
1190
Jakub Narębski

V tomto případě budete pravděpodobně chtít vytvořit lokální větev test, která sleduje vzdálenou větev test:

$ git branch test Origin/test

V dřívějších verzích git jste potřebovali explicitní volbu --track, která je však výchozí, když se odbočíte ze vzdálené větve.

528
ndim

Přijatá odpověď nepracujete pro vás?

Zatímco první a vybraná odpověď je technicky správná , existuje možnost, že jste dosud neobnovili všechny objekty a refs ze vzdáleného úložiště. Pokud tomu tak je, zobrazí se následující chyba:

$ git checkout -b remote_branch Origin/remote_branch

fatal: git checkout: aktualizace cest není kompatibilní s přepínacími větvemi.
Chtěli jste si vyzkoušet „Origin/remote_branch“, které nelze vyřešit jako závazek?

Řešení

Pokud tuto zprávu obdržíte, musíte nejprve provést git fetch Origin kde Origin je název vzdáleného úložiště před spuštěním git checkout remote_branch. Zde je úplný příklad s odpověďmi:

$ 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'

Jak můžete vidět, spuštěním git fetch Origin načtených vzdálených poboček, které jsme dosud nenastavili, na našem lokálním počítači. Odtud, protože nyní máme odkaz na vzdálenou pobočku, můžeme jednoduše spustit git checkout remote_branch a získáme výhody vzdáleného sledování.

439
Corey Ballou

Vyzkoušel jsem výše uvedené řešení, ale nefungovalo to. Zkuste to, funguje to:

git fetch Origin 'remote_branch':'local_branch_name'

Tím se načte vzdálená větev a vytvoří se nová lokální větev (pokud již neexistuje) s názvem local_branch_name a sledovat vzdálenou pobočku v ní.

226
Sahil kalra

Toto bude DWIM pro vzdálený název, který nebyl pojmenován Origin ( documentation ):

$ git checkout -t remote_name/remote_branch

Chcete-li přidat nový ovladač, budete muset provést následující:

$ git remote add remote_name location_of_remote
$ git fetch remote_name

První řekne Git vzdálenému existuje, druhý dostane pověření.

105
tacaswell

Použití:

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

Jiné odpovědi nefungují s moderním Gitem v mém benigním případě. Možná budete muset nejprve vytáhnout, pokud je vzdálená větev nová, ale ten případ jsem nezkontroloval.

100
matanster

OK, odpověď je snadná ... V podstatě vidíte větev, ale ještě nemáte místní kopii! ...

Musíte fetch pobočku ...

Můžete jednoduše načíst a poté odhlásit do pobočky, použít jeden řádek příkaz níže, aby to:

git fetch && git checkout test

Vytvořil jsem také níže uvedený obrázek, ve kterém se můžete podělit o rozdíly, podívat se, jak fetch funguje a jak se liší od pull:

 git fetch

78
Alireza

Chcete-li klonovat repozitář Git, postupujte takto:

git clone <either ssh url /http url>

Výše uvedený příkaz kontroluje všechny větve, ale bude inicializována pouze větev master. Pokud chcete vyzkoušet ostatní pobočky, postupujte takto:

git checkout -t Origin/future_branch (for example)

Tento příkaz zkontroluje vzdálenou větev a název místní větve bude stejný jako vzdálená větev.

Chcete-li přepsat název místní pobočky na pokladně:

git checkout -t -b enhancement Origin/future_branch

Nyní je název vaší místní pobočky enhancement, ale název vzdálené větve je future_branch.

Dokumentace

52
Madhan Ayyasamy

Si můžete vyzkoušet

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

nebo

git fetch
git checkout -b local_branch_name Origin/branch_name
34
uma

Nejprve musíte udělat:

git fetch # Pokud nevíte o názvu pobočky

git fetch Origin branch_name

Za druhé, můžete se podívat na vzdálenou pobočku do místního uživatele:

git checkout -b branch_name Origin/branch_name

-b vytvoří novou větev v zadaném názvu z vámi vybrané vzdálené větve.

28
Silent Spectator

Příkazy

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

jsou rovny

 git fetch --all

a pak

 git checkout -b fixes_for_dev Origin/development

Obě vytvoří latest fixes_for_dev z development

27
sreekumar

Používám následující příkaz:

git checkout --track Origin/other_remote_branch
25
priyankvex

Pokud je pobočka na jiném než Origin dálkovém ovladači, rád bych udělal následující:

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

Tím se bude kontrolovat větev next na vzdáleném upstream do místní větve nazvané second/next. Což znamená, že pokud již máte místní pobočku pojmenovanou vedle, nebude to v konfliktu.

$ git branch -a
* second/next
  remotes/Origin/next
  remotes/upstream/next
23
Kris

git branch -r říká, že název objektu je neplatný, protože tento název pobočky není v místním seznamu poboček společnosti Git. Aktualizujte místní seznam poboček ze seznamu Origin:

git remote update

A pak zkuste znovu odhlásit vzdálenou pobočku.

To pro mě fungovalo.

Věřím, že git fetch táhne do všech vzdálených poboček, což není to, co původní plakát chtěl.

16
webdevguy

žádná z těchto odpovědí pro mě nepracovala. to fungovalo:

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

15
brianyang

git fetch && git checkout your-branch-name

15

Jednoduše spusťte git checkout s názvem vzdálené větve. Git bude automaticky vytvoří místní pobočku, která sleduje vzdálenou:

git fetch
git checkout test

Pokud je však tento název pobočky nalezen ve více než jednom dálkovém ovladači, nebude to fungovat, protože Git neví, které použít. V takovém případě můžete použít:

git checkout --track Origin/test

nebo

git checkout -b test Origin/test

V 2.19 , Git se naučil checkout.defaultRemote configuration, který specifikuje vzdálený standard při řešení takové nejednoznačnosti.

13
Eugene Yarmash

Byl jsem uvízl v situaci vidět error: pathspec 'desired-branch' did not match any file(s) known to git. pro všechny výše uvedené návrhy. Jsem na verzi git 1.8.3.1.

Tak tohle pracoval pro mě :

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

Vysvětlení je v tom, že jsem si všiml, že při načítání vzdálené větve bylo načteno do FETCH_HEAD:

$ git fetch Origin desired-branch
From github.com:MYTEAM/my-repo
    * branch            desired-branch -> FETCH_HEAD
13
alisa

Příkaz git remote show <Origin name> zobrazí seznam všech větví (včetně nesledovaných větví). Potom můžete najít název vzdálené pobočky, který potřebujete načíst.

Příklad:

$ git remote show Origin

Tyto kroky slouží k načtení vzdálených poboček:

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)

Příklad:

$ git fetch Origin test:test
$ git checkout test
10
Thushan

Jiní kluci a holky dávají řešení, ale možná vám mohu říct proč.

git checkout test, který nedělá nic

Does nothing nesouhlasí s doesn't work, takže myslím, že když do terminálu zadáte 'git checkout test' a stisknete klávesu enter, nezobrazí se žádná zpráva a nedojde k žádné chybě. Mám pravdu?

Pokud je odpověď „ano“, můžu vám říct příčinu.

Příčinou je, že v pracovním stromu je soubor (nebo složka) s názvem 'test'.

Při analýze git checkout xxx

  1. Git vypadá nejprve na xxx jako název větve, ale neexistuje žádná větev s názvem test.
  2. Pak si Git myslí, že xxx je cesta a naštěstí (nebo bohužel) existuje soubor s názvem test. git checkout xxx tedy znamená zahodit všechny změny v souboru xxx.
  3. Pokud neexistuje ani soubor s názvem xxx, pak se Git pokusí vytvořit xxx podle některých pravidel. Jedním z pravidel je vytvoření větve s názvem xxx, pokud remotes/Origin/xxx existuje.
8
oldman

Získání nově vytvořených poboček

git fetch

Přepnutí do jiné pobočky

git checkout BranchName
7
Hasib Kamal

Pomocí následujícího skriptu Bash můžete začít sledovat všechny vzdálené pobočky:

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

Zde je také jednořádková verze:

git fetch --all; for branch in `git branch -r --format="%(refname:short)" | sed 's/Origin\///'`; do git branch --track "$branch" "Origin/$branch" ; done ;
6
OzzyCzech

Načtení z dálkového ovladače a pokladna pobočky.

git fetch <remote_name> && git checkout <branch_name> 

Např.:

git fetch Původní funkce && git checkout/XYZ-1234-Add-alerts

6
Pranav

Pokud název vzdálené větve začíná speciálními znaky, musíte v příkazu checkout použít jednoduché uvozovky, jinak git nebude vědět, o které větvi mluvíte.

Pokusil jsem se například vyzkoušet vzdálenou větev pojmenovanou #9773, ale příkaz nefungoval správně, jak je vidět na obrázku níže:

 enter image description here

Z nějakého důvodu jsem přemýšlel, jestli by s ním mohl mít ostrý symbol (#) něco společného, ​​a pak jsem se pokusil obklopit název větve jednoduchými uvozovkami, jako je '#9773' rathen, než jen #9773, a fungovalo to dobře.

$ git checkout -b '#9773' Origin/'#9773'
1
Ulysses Alves

Podle pokynů vytvořte prázdnou složku. Zadejte a použijte tento příkaz:

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
Mehedi Hasan