Låt oss börja med Git-arkivet. Vi skapar en mapp som heter projekt.git och initialisera det för att bli fjärrförvaret:
$ mkdir-projekt.git$ cd-projekt.git /
$ git init --bare
Initierat tomt Git-arkiv i / Användare / zakh_eecs / _work / LearnGIT / git_remote_repository /
projekt.git /
Gå nu till en ny plats där du kan skapa en ren mapp. Skapa mappen project_source och initialisera den för Git:
$ mkdir-projekt_källa$ cd projektkälla
$ git init
Initierat tomt Git-arkiv i / Användare / zakh_eecs / _work / LearnGIT / git_branching_source /
projektkälla /.git /
$ touch ReadMe.Text
$ git add -A
$ git commit -m "Initial Commit"
[master (root-commit) 176134f] Initial Commit
1 fil har ändrats, 0 infogningar (+), 0 raderingar (-)
skapa läge 100644 ReadMe.Text
Project_setup är en Git-katalog med ReadMe.txt-fil. Det är dock inte anslutet till vårt fjärrförvar. Låt oss sätta upp projektet.git som fjärrförvar för project_source. Vi kan uppnå detta genom följande kommando:
$ git remote lägg till ursprung / Användare / zakh_eecs / _work / LearnGIT / git_remote_repository / project.git$ git push origin master
Räkna objekt: 3, klar.
Skrivobjekt: 100% (3/3), 213 byte | 0 byte / s, klar.
Totalt 3 (delta 0), återanvändt 0 (delta 0)
Till / Användare / zakh_eecs / _work / LearnGIT / git_remote_repository / project.git
* [ny gren] master -> master
Med kommandot git remote add origin har vi skapat anslutningen mellan projektet.git och project_source. Med git push origin master-kommandot har vi flyttat vår huvudfilial till fjärrförvaret.
Låt oss kolla våra filialer (fortfarande i mappen projekt_källa):
$ git gren* mästare
$ git gren -r
ursprung / mästare
$ git gren -a
* mästare
fjärrkontroller / ursprung / master
Det första kommandot visar endast den lokala grenen. Alternativet -r visar fjärrgrenen. Och alternativet -a visar både lokal och fjärrkontroll.
Låt oss skapa några grenar i vår arbetskatalog:
$ git grenutveckling$ git-snabbkorrigering
$ git gren experimentell
$ git gren -a
utveckling
experimentell
snabbkorrigering
* mästare
fjärrkontroller / ursprung / master
Vi har skapat filialer som kallas utveckling, snabbkorrigering och experiment. De dyker upp i vår lokala filiallista. Men i fjärrkontrollerna / ursprunget finns det bara mästergren eftersom det är den enda vi pressade. Stjärnans (*) mästare betyder att vi fortfarande är i den lokala mästergrenen. Låt oss gå in i utvecklingsgrenen, begå ändringar och flytta ändringarna till fjärrförvaret.
$ git checkout utvecklingByt till grenens "utveckling"
$ echo abc> ReadMe.Text
$ git add -A
$ git commit -m "Modified development branch"
[utveckling dd9933e] Modifierad utvecklingsgren
1 fil ändrad, 1 infogning (+)
$ git push-ursprungsutveckling
Räkna objekt: 3, klar.
Skrivobjekt: 100% (3/3), 257 byte | 0 byte / s, klar.
Totalt 3 (delta 0), återanvändt 0 (delta 0)
Till / Användare / zakh_eecs / _work / LearnGIT / git_remote_repository / project.git
* [ny gren] utveckling -> utveckling
Låt oss kolla alla grenar nu:
$ git gren -a* utveckling
experimentell
snabbkorrigering
bemästra
fjärrkontroller / ursprung / utveckling
fjärrkontroller / ursprung / master
Vi ser att vi befinner oss i den lokala utvecklingsgrenen, men det finns också en fjärran utvecklingsgren. När vi drev våra förändringar med git push-ursprungsutveckling skapade den utvecklingsgrenen i fjärrkontroller / ursprung.
Låt oss nu gå ut ur projektkällan och hitta en ny plats där vi kan ha en ny mapp. Här ska vi klona fjärrförvaret med följande kommando:
$ git clone / Users / zakh_eecs / _work / LearnGIT / git_remote_repository / project.gitKloning i "projekt" ..
Gjort.
Vi har klonat en ny kopia som heter projekt från projekt.git. Gå in i projektmappen och kontrollera filialerna:
$ cd-projekt$ git gren
* mästare
När Git skapar en första klon från ett fjärranslutet får det bara huvudgrenen. Om vi använder alternativet -a ser vi:
$ git gren -a* mästare
fjärrkontroller / ursprung / HEAD -> ursprung / master
fjärrkontroller / ursprung / utveckling
fjärrkontroller / ursprung / master
Observera att det inte finns någon lokal utvecklingsgren. Dessutom har vi aldrig flyttat snabbkorrigeringar och experimentella grenar från project_source till project.git, så vi ser dem inte. Fjärrförvaret har master- och utvecklingsgrenar (fjärrkontroller / ursprung / HEAD -> origin / master är inte en gren, det säger bara var HEAD pekar på).
Låt oss få utvecklingsgrenen till vår arbetsmiljö:
$ git hämta - alltHämtar ursprung
$ git checkout utveckling
Grenutveckling inrättad för att spåra fjärrkontrollutveckling från ursprung.
Byt till en ny gren 'utveckling'
Om du använder en äldre version av Git kan du behöva använda:
$ git kassa utveckling ursprung / utvecklingNu om vi använder filialkommandot får vi:
$ git gren -a* utveckling
bemästra
fjärrkontroller / ursprung / HEAD -> ursprung / master
fjärrkontroller / ursprung / utveckling
fjärrkontroller / ursprung / master
Vi kan göra ändringar i utvecklingsgrenen, begå ändringarna och sedan trycka på den med kommandot git push origin development.
Sammanfattningsvis
När du arbetar med GitHub och BitBucket kan du använda HTTPS eller SSH-länk för att ansluta till ditt fjärrförvar. Så du kommer att ställa in ditt ursprung till dessa länkar. Men principerna för den avlägsna grenen är desamma som beskrivs här.
Ytterligare studier:
- https: // git-scm.com / docs / git-branch
- https: // git-scm.com / book / sv / v2 / Git-on-the-Server-Setting-Up-the-Server
- https: // hjälp.github.com / artiklar / lägga till ett befintligt projekt till github-med-kommandoraden /
- https: // hjälp.github.com / artiklar / push-to-a-remote /