Chci stáhnout zdrojový kód z pobočky master-next pomocí git, jak je popsáno v Xilinx wiki .

Zkoušel jsem to:

#git clone git://github.com/Xilinx/u-boot-xlnx/tree/master-next.git Initialized empty Git repository in /home/Hannan/master-next/.git/ fatal: remote error: Xilinx/u-boot-xlnx/tree/master-next is not a valid repository name Email [email protected] for help 

I to se nezdařilo:

# git clone git://github.com/Xilinx/tree/master-next/u-boot-xlnx.git Initialized empty Git repository in /home/Hannan/u-boot-xlnx/.git/ fatal: remote error: Xilinx/tree/master-next/u-boot-xlnx is not a valid repository name Email [email protected] for help 

Fungující příkaz je:

 git clone git://github.com/Xilinx/u-boot-xlnx.git 

Ale jak poznám, že to skutečně načte větev master-next a ne hlavní větev ? Jak mohu správně načíst konkrétní větev pomocí git?

Používám RHEL 6, přístupný přes PuTTY.

Odpovědět

Jak vám řekne chybová zpráva, git clone očekává úložiště git. Takto můžete do cesty „přidat“ název větve. Viz větve v gitu .

Můžete klonovat jedna větev (a její historie): git clone <url> --branch <branch> --single-branch

Viz git help clone.

Ale příkaz clone, který jste spustili, vám dal kopii celého úložiště, můžete vidět existující větve s git branch a další podrobnosti o nich pomocí git show-branch.

Přepněte na požadovanou větev pomocí git checkout branch-name.

První kapitoly Kniha Pro Git (k dispozici online) obsahuje více podrobností o základních příkazech.

Komentáře

  • " příkaz klon, který jste spustili, vám dal kopii celého úložiště ". celé úložiště znamená, že obě větve byly sloučeny?
  • ne, jsou nesloučeno. Pobočka v git není kopií celého adresáře, jak vysvětlil zde .
  • Co jsem udělal, je toto: " git clone -b master-next github.com/Xilinx/u-boot-xlnx.git " není to správné?
  • Už jste ' nepotřebovali klonovat. Příkaz, který jste ukázali ve své otázce, vám dal úložiště se všemi větvemi. Ale to je také správné. Je to ' ekvivalentní provedení git checkout master-next po klonování.

Odpovědět

Tento příkaz by měl fungovat:

$ git fetch origin [branch] 

Výše uvedený příkaz načte pouze metadata ze vzdáleného úložiště, nikoli sloučit zdroje.

Chcete-li načíst a sloučit zdroje, bude příkaz:

$ git pull origin [branch] 

Buďte opatrní s větví, kde provádíte příkaz sloučení. Bude to místo, kde jsou zdroje sloučeny.

Komentáře

  • Vaše odpověď je technicky správná, ale myslím, že by jí mohla prospět gramatická kontrola / re- psaní.
  • to funguje pěkně thx

odpověď

repozitáře git obsahují všechny větve ( ale komprimované a pouze rozdíly proto zřídka způsobují problém s velikostí).

Proto můžete klonovat celý projekt, jak jste úspěšně provedli. Toto je standardní způsob, jak získat úložiště, i když vás zajímá pouze jedna větev.

Struktura .git pak bude zahrnovat všechny větve provedené v daném úložišti.

Chcete-li použít konkrétní větev, proveďte git checkout [branch_name] Pokud větev existuje, budou soubory zpřístupněny místně (právě tak i aktuální soubory v adresářích projektu).

git status poté zobrazí, která větev je aktuální větev, například:

Podle Leiaza lze klonovat konkrétní větev. V praxi jsem to nikdy neudělal nebo jsem viděl, že to používají ostatní. Při dalším výzkumu vidím, že je to relativně nové, přidáno v git 1.7.10 (duben 2012): možnost „git clone learn –single-branch“ omezit klonování do jedné větve (překvapení!); značky, které nesměřují do historie větve, nebudou načteny. Například:

git clone -b master-next --single-branch git://github.com/Xilinx/ 

zde zadejte popis obrázku Zde pro svoji aplikaci „linker“ rezervuji větev v3.0.10

Komentáře

  • Ani ' jsem to nikdy neudělal, vzpomněl jsem si, že jsem tuto možnost viděl. Myslím, že ' zřídka používané jako další větve jsou " levné " velikosti.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *