La oss starte med Git -depotet. Vi oppretter en mappe som heter Project.Git og initialiser det for å bli det eksterne depotet:
$ MKDIR -prosjekt.git
$ CD -prosjekt.git/
$ git init - --fulle
Initialisert tom Git -depot i/brukere/zakh_eecs/_work/learngit/git_remote_repository/
prosjekt.git/
Gå nå til et nytt sted hvor du kan opprette en ren mappe. Lag mappen Project_Source og initialiser den for GIT:
$ MKDIR Project_Source
$ CD Project_Source
$ git init
Initialisert tom Git -depot i/brukere/zakh_eecs/_work/learngit/git_branching_source/
Project_Source/.git/
$ Touch Readme.tekst
$ git add -a
$ git commit -m "initial commit"
[Master (root-commit) 176134f] Initial commit
1 Fil endret, 0 innsettinger (+), 0 delesjoner (-)
Opprett modus 100644 Readme.tekst
Project_setup er en git -katalog med readme.txt -fil. Imidlertid er det ikke koblet til vårt eksterne depot. La oss sette opp prosjekt.Git til å være det eksterne depotet for Project_Source. Vi kan oppnå dette gjennom følgende kommando:
$ git eksternt legg til opprinnelse/brukere/zakh_eecs/_work/learngit/git_remote_repository/prosjekt.git
$ git push origin master
Teller objekter: 3, gjort.
Skrive objekter: 100% (3/3), 213 byte | 0 byte/s, gjort.
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 Project_Source -mappen):
$ git gren
* mester
$ git gren -r
opprinnelse/master
$ git gren -a
* mester
Remotes/Origin/Master
Den første kommandoen viser bare den lokale grenen. Alternativet -r -alternativet viser den eksterne grenen. Og alternativet -et alternativ viser både lokalt og fjerntliggende.
La oss lage noen få grener i arbeidskatalogen vår:
$ git grenutvikling
$ git filial hurtig
$ git gren eksperimentell
$ git gren -a
utvikling
eksperimentell
Hotfiks
* mester
Remotes/Origin/Master
Vi har laget grener som heter Development, Hotfix og Experimental. De dukker opp på vår lokale filialliste. Men i fjernkontrollene/opprinnelsen er det bare mastergren fordi det er den eneste vi presset. Stjernen (*) mesteren betyr at vi fortsatt er i den lokale mastergrenen. La oss gå inn i utviklingsgrenen, begå endringer og skyve disse endringene til det eksterne depotet.
$ Git Checkout Development
Byttet til filial 'utvikling'
$ ekko abc> readme.tekst
$ git add -a
$ git commit -m "Modified Development Branch"
[Utvikling DD9933E] Modified Development Branch
1 Fil endret, 1 innsetting (+)
$ git push opprinnelsesutvikling
Teller objekter: 3, gjort.
Skrive objekter: 100% (3/3), 257 byte | 0 byte/s, gjort.
Totalt 3 (Delta 0), gjenbrukt 0 (Delta 0)
Til/brukere/zakh_eecs/_work/learngit/git_remote_repository/prosjekt.git
* [Ny filial] Utvikling -> Utvikling
La oss sjekke alle grenene nå:
$ git gren -a
* Utvikling
eksperimentell
Hotfiks
herre
Remotes/Origin/Development
Remotes/Origin/Master
Vi ser at vi er i den lokale utviklingsgrenen, men det er også en ekstern utviklingsgren. Da vi presset endringene våre med utvikling av Git Push Origin, skapte det utviklingsgrenen i fjernkontroll/opprinnelse.
La oss nå komme ut av Project_Source og finne et friskt sted hvor vi kan ha en ny mappe. Her skal vi klone det eksterne depotet med følgende kommando:
$ git klone/brukere/zakh_eecs/_work/learngit/git_remote_repository/project.git
Kloning til 'prosjekt' ..
Ferdig.
Vi har klonet en ny kopi som heter Project fra Project.git. Gå inn i prosjektmappen og sjekk filialene:
$ CD -prosjekt
$ git gren
* mester
Når Git lager en innledende klon fra et eksternt depot, får den bare mastergrenen. Hvis vi bruker alternativet -A, ser vi:
$ git gren -a
* mester
Remotes/Origin/Head -> Origin/Master
Remotes/Origin/Development
Remotes/Origin/Master
Legg merke til at det ikke er noen lokal utviklingsgren. Vi presset også hurtig og eksperimentelle grener fra Project_Source til Project.Git, så vi ser dem ikke. Det eksterne depotet har master- og utviklingsgrener (Remotes/Origin/Head -> Origin/Master er ikke en gren, det er bare å fortelle deg hvor hodet peker på).
La oss få utviklingsgrenen til vårt arbeidsmiljø:
$ git hente -alt
Hente opprinnelse
$ Git Checkout Development
Filialutvikling satt opp for å spore ekstern grenutvikling fra opprinnelse.
Byttet til en ny gren 'utvikling'
Hvis du bruker en eldre versjon av Git, kan det hende du må bruke:
$ Git Checkout Development Origin/Development
Nå hvis vi bruker grenkommandoen, får vi:
$ git gren -a
* Utvikling
herre
Remotes/Origin/Head -> Origin/Master
Remotes/Origin/Development
Remotes/Origin/Master
Vi kan gjøre endringer i utviklingsgrenen, begå endringene og deretter skyve den ved hjelp av Git Push Origin Development -kommandoen.
For å konkludere
Når du jobber med GitHub og Bitbucket, kan du bruke HTTPS eller SSH -lenke for å koble deg til det eksterne depotet ditt. Så du vil sette opprinnelsen til disse koblingene. Men prinsippene for den eksterne grenen er de samme som beskrevet her.