La oss starte med Git-depotet. Vi vil lage en mappe som heter prosjekt.git og initialiser den for å bli det eksterne depotet:
$ mkdir-prosjekt.git$ cd-prosjekt.git /
$ git init --bare
Initialisert tomt Git-arkiv i / Brukere / zakh_eecs / _work / LearnGIT / git_remote_repository /
prosjekt.git /
Gå nå til et nytt sted hvor du kan opprette en ren mappe. Opprett mappen project_source og initialiser den for Git:
$ mkdir prosjektkilde$ cd project_source
$ git init
Initialisert tomt Git-arkiv i / Brukere / zakh_eecs / _work / LearnGIT / git_branching_source /
prosjekt_kilde /.git /
$ touch ReadMe.tekst
$ git add -A
$ git commit -m "Initial Commit"
[master (root-commit) 176134f] Opprinnelig forpliktelse
1 fil endret, 0 innsettinger (+), 0 slettinger (-)
opprett modus 100644 ReadMe.tekst
Project_setup er en Git-katalog med ReadMe.txt-fil. Den er imidlertid ikke koblet til vårt eksterne depot. La oss sette opp prosjektet.git for å være det eksterne depotet for project_source. Vi kan oppnå dette gjennom følgende kommando:
$ git ekstern legge til opprinnelse / brukere / zakh_eecs / _work / LearnGIT / git_remote_repository / prosjekt.git$ git push origin master
Telle objekter: 3, ferdig.
Skriveobjekter: 100% (3/3), 213 byte | 0 byte / s, ferdig.
Totalt 3 (delta 0), gjenbrukt 0 (delta 0)
Til / brukere / zakh_eecs / _work / LearnGIT / git_remote_repository / prosjekt.git
* [ny gren] master -> master
Med git remote add origin-kommandoen har vi opprettet forbindelsen mellom prosjektet.git og project_source. Med git push origin master-kommandoen har vi presset mastergrenen vår til det eksterne depotet.
La oss sjekke grenene våre (fremdeles i mappen project_source):
$ git gren* mester
$ git gren -r
opprinnelse / mester
$ git gren -a
* mester
fjernkontroller / opprinnelse / master
Den første kommandoen viser bare den lokale grenen. Alternativet -r viser den eksterne grenen. Og alternativet -a viser både lokalt og eksternt.
La oss lage noen få grener i arbeidskatalogen vår:
$ git grenutvikling$ git-hurtigreparasjonen
$ git gren eksperimentell
$ git gren -a
utvikling
eksperimentell
hurtigreparasjonen
* mester
fjernkontroller / opprinnelse / master
Vi har opprettet grener kalt utvikling, hurtigreparasjon og eksperimentell. De dukker opp i vår lokale grenliste. Men i fjernkontrollene / opprinnelsen er det bare mestergren fordi det er den eneste vi presset. Stjernemesteren (*) betyr at vi fortsatt er i den lokale mestergrenen. La oss gå inn i utviklingsgrenen, begå endringer og skyve disse endringene til det eksterne depotet.
$ git checkout utviklingByttet til gren 'utvikling'
$ echo abc> ReadMe.tekst
$ git add -A
$ git commit -m "Modified development branch"
[utvikling dd9933e] Endret utviklingsgren
1 fil endret, 1 innsetting (+)
$ git push opprinnelsesutvikling
Telle objekter: 3, ferdig.
Skriveobjekter: 100% (3/3), 257 byte | 0 byte / s, ferdig.
Totalt 3 (delta 0), gjenbrukt 0 (delta 0)
Til / brukere / zakh_eecs / _work / LearnGIT / git_remote_repository / prosjekt.git
* [ny gren] utvikling -> utvikling
La oss sjekke alle grenene nå:
$ git gren -a* utvikling
eksperimentell
hurtigreparasjonen
herre
fjernkontroller / opprinnelse / utvikling
fjernkontroller / opprinnelse / master
Vi ser at vi er i den lokale utviklingsgrenen, men det er også en ekstern utviklingsgren. Da vi presset endringene våre med git push opprinnelsesutvikling, skapte det utviklingsgrenen i fjernkontroller / opprinnelse.
La oss nå komme oss ut av prosjektkilden og finne et nytt sted der vi kan ha en ny mappe. Her skal vi klone det eksterne depotet med følgende kommando:
$ git clone / Users / zakh_eecs / _work / LearnGIT / git_remote_repository / project.gitKloning i 'prosjekt' ..
ferdig.
Vi har klonet en ny kopi kalt prosjekt fra prosjekt.git. Gå inn i prosjektmappen og sjekk grenene:
$ cd-prosjekt$ git gren
* mester
Når Git lager en innledende klon fra et eksternt lager, får den bare hovedgrenen. Hvis vi bruker alternativet -a, ser vi:
$ git gren -a* mester
fjernkontroller / opprinnelse / HEAD -> opprinnelse / master
fjernkontroller / opprinnelse / utvikling
fjernkontroller / opprinnelse / master
Legg merke til at det ikke er noen lokal utviklingsgren. Vi presset aldri hurtigreparasjoner og eksperimentelle grener fra project_source til project.git, så vi ser dem ikke. Fjernregisteret har master- og utviklingsgrener (fjernkontroller / opprinnelse / HEAD -> origin / master er ikke en gren, det er bare å fortelle deg hvor HEAD peker på).
La oss få utviklingsgrenen til vårt arbeidsmiljø:
$ git henting - altHenter opprinnelse
$ git kassa utvikling
Grenutvikling satt opp for å spore ekstern grenutvikling fra opphav.
Byttet til en ny gren 'utvikling'
Hvis du bruker en eldre versjon av Git, må du kanskje bruke:
$ git kassa utvikling opprinnelse / utviklingNå hvis vi bruker grenkommandoen, får vi:
$ git gren -a* utvikling
herre
fjernkontroller / opprinnelse / HEAD -> opprinnelse / master
fjernkontroller / opprinnelse / utvikling
fjernkontroller / opprinnelse / master
Vi kan gjøre endringer i utviklingsgrenen, begå endringene og deretter skyve den ved hjelp av kommandoen git push origin development.
For å konkludere
Når du arbeider med GitHub og BitBucket, kan du bruke HTTPS- eller SSH-kobling for å koble til det eksterne depotet ditt. Så du vil sette opprinnelsen til disse koblingene. Men prinsippene til den eksterne grenen er de samme som beskrevet her.
Videre studier:
- https: // git-scm.com / docs / git-branch
- https: // git-scm.com / book / no / v2 / Git-on-the-Server-Setting-Up-the-Server
- https: // hjelp.github.com / artikler / legge til et eksisterende prosjekt til github ved hjelp av kommandolinjen /
- https: // hjelp.github.no / artikler / skyve-til-en-fjernkontroll /