Jag vill ladda ner källkod från master-nästa gren använder git som beskrivs i Xilinx wiki .

Jag försökte detta:

#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 

Även detta misslyckades:

# 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 

Kommandot som fungerar är:

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

Men hur vet jag att detta verkligen hämtar master-nästa gren och inte huvudfilial ? Hur hämtar jag korrekt en specifik gren med git?

Jag använder RHEL 6, nås via PuTTY.

Svar

Som felmeddelandet säger, git clone förväntar sig ett git-arkiv. Du kan ”t” lägga till ”namnet på en gren i sökvägen så. Se filialer i git .

Du kan klona en enskild gren (och dess historia): git clone <url> --branch <branch> --single-branch

Se git help clone.

Men klonkommandot du körde gav dig en kopia av hela arkivet, du kan se befintliga grenar med git branch och mer information om dem med git show-branch.

Byt till den gren du vill ha med git checkout branch-name.

De första kapitlen i Pro Git -bok (tillgänglig online) ger mer information om grundkommandona.

Kommentarer

  • " klonkommando du körde gav dig en kopia av hela arkivet ". hela arkivet betyder att båda grenarna är sammanslagna?
  • Nej de är inte sammanslagna. En gren i git är inte en kopia av hela katalogen, som förklaras här .
  • Vad jag gjorde är detta: " git clone -b master-next github.com/Xilinx/u-boot-xlnx.git " är detta inte korrekt?
  • Du behövde ' inte behöva klona längre. Kommandot du visade i din fråga gav dig förvaret med alla grenar. Men det här är också korrekt. Det ' motsvarar att göra git checkout master-next efter kloning.

Svara

Detta kommando ska fungera:

$ git fetch origin [branch] 

Kommandot ovan hämtar bara metadata från fjärrförvaret, det gör det inte slå samman källor.

Om du vill hämta och slå samman källorna skulle kommandot vara:

$ git pull origin [branch] 

Var försiktig med grenen där du kör sammanslagningskommandot. Det är där källorna slås samman.

Kommentarer

  • Ditt svar är tekniskt korrekt men jag tror att det kan dra nytta av en grammatisk kontroll / åter- att skriva.
  • detta fungerar snyggt thx

Svar

git-arkiv innehåller alla grenar ( men komprimerade och bara skillnader därmed sällan ett storleksproblem).

Därför kan du klona hela projektet som du har gjort framgångsrikt. Detta är ett vanligt sätt att skaffa ett förvar, även om du bara är intresserad av en gren.

.git-strukturen kommer då att inkludera alla grenarna som görs i det förvaret.

För att använda en viss gren gör du git checkout [branch_name] Om filialen finns kommer filerna att göras tillgängliga lokalt (som just det, de aktuella filerna i projektkatalogerna).

git status visar då vilken gren som är den aktuella grenen, till exempel:

Enligt Leiaz kan man klona en specifik gren. I praktiken har jag ”aldrig gjort det eller sett andra använda det. Vid vidare forskning ser jag att det är relativt nytt, tillagt i git 1.7.10 (april 2012):” git clone leard – single-branch ”alternativ för att begränsa kloning till en enda gren (överraskning!); Taggar som inte pekar in i filialens historia hämtas inte. Till exempel:

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

ange bildbeskrivning här Här, för min ”linker” -applikation, tittar jag på gren v3.0.10

Kommentarer

  • Jag ' har aldrig gjort det heller, jag kom ihåg att jag såg alternativet. Jag antar att det ' s används sällan som extra grenar är " billigt " i storlek.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *