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
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/
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.
git checkout master-next
efter kloning.