Jeg vil downloade kildekode fra master-næste gren ved hjælp af git som beskrevet i Xilinx wiki .

Jeg prøvede dette:

#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 

Selv dette mislykkedes:

# 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 

Den kommando, der fungerer, er:

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

Men hvordan ved jeg, at dette faktisk henter master-næste gren og ikke masterfilial ? Hvordan henter jeg korrekt en bestemt gren ved hjælp af git?

Jeg bruger RHEL 6, der er adgang til via PuTTY.

Svar

Som fejlmeddelelsen fortæller dig, forventer git clone et git-lager. Du kan “t” tilføje “navnet på en gren i stien sådan. Se filialer i git .

Du kan klone en enkelt gren (og dens historie): git clone <url> --branch <branch> --single-branch

Se git help clone.

Men klonkommandoen, du kørte, gav dig en kopi af hele arkivet, du kan se de eksisterende grene med git branch og flere detaljer om dem med git show-branch.

Skift til den gren, du ønsker med git checkout branch-name.

De første kapitler i Pro Git -bogen (tilgængelig online) giver flere detaljer om de grundlæggende kommandoer.

Kommentarer

  • " klonkommando, du kørte, gav dig en kopi af hele arkivet ". hele arkivet betyder, at begge grene er flettet?
  • Nej de er ikke fusioneret. En gren i git er ikke en kopi af hele biblioteket, som forklaret her .
  • Hvad jeg gjorde er dette: " git clone -b master-next github.com/Xilinx/u-boot-xlnx.git " er dette ikke korrekt?
  • Du behøvede ikke ' ikke brug for mere klon. Den kommando, du viste i dit spørgsmål, gav dig lageret med alle grene. Men dette er også korrekt. Det ' svarer til at gøre git checkout master-next efter kloning.

Svar

Denne kommando skal fungere:

$ git fetch origin [branch] 

Ovenstående kommando henter kun metadata fra det eksterne lager, det gør det ikke flet kilder.

Hvis du vil hente og flette kilderne, ville kommandoen være:

$ git pull origin [branch] 

Vær forsigtig med grenen, hvor du udfører flettekommando. Det er her kilderne flettes.

Kommentarer

  • Dit svar er teknisk korrekt, men jeg tror, det kan have gavn af en grammatisk kontrol / gentagelse at skrive.
  • dette fungerer pænt thx

Svar

git-arkiver indeholder alle grene ( men komprimeret og kun forskelle, derfor sjældent et størrelsesproblem).

Derfor kan du klone hele projektet, som du har gjort med succes. Dette er en standard måde at få et arkiv på, selvom du kun er interesseret i en gren.

.git-strukturen inkluderer derefter alle de grene, der er udført på det arkiv.

For at bruge en bestemt gren skal du git checkout [branch_name] Hvis filialen eksisterer, bliver filerne tilgængelige lokalt (som netop de aktuelle filer i projektmapperne).

git status vil derefter vise, hvilken gren der er den aktuelle gren, for eksempel:

Ifølge Leiaz kan man klone en bestemt gren. I praksis har jeg “aldrig gjort dette eller set andre bruge det. Ved yderligere undersøgelser ser jeg det er relativt nyt, tilføjet i git 1.7.10 (april 2012):” git klon lært – enkeltgren “mulighed for at begrænse kloning til en enkelt gren (overraskelse!); tags, der ikke peger på grenens historie, hentes ikke. For eksempel:

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

indtast billedebeskrivelse her Her til min “linker” -applikation tjekker jeg gren v3.0.10

Kommentarer

  • Jeg ' har aldrig gjort det heller, jeg huskede at have set muligheden. Jeg antager at det ' s sjældent brugt som ekstra grene er " billig " i størrelse.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *