-
1. Začetek
- 1.1 O nadzoru različic
- 1.2 Kratka zgodovina Gita
- 1.3 Kaj je Git?
- 1.4 Ukazna vrstica
- 1.5 Namestitev Gita
- 1.6 Prva nastavitev Gita
- 1.7 Pridobivanje pomoči
- 1.8 Povzetek
-
2. Osnove Git
- 2.1 Pridobivanje repozitorija Git
- 2.2 Snemanje sprememb v repozitorij
- 2.3 Pregled zgodovine potrditev
- 2.4 Razveljavljanje stvari
- 2.5 Delo z daljavami
- 2.6 Označevanje
- 2.7 Aliasi Git
- 2.8 Povzetek
-
3. Veje Git
- 3.1 Veje na kratko
- 3.2 Osnove vej in združevanja
- 3.3 Upravljanje vej
- 3.4 Poteki dela z vejami
- 3.5 Oddaljene veje
- 3.6 Ponovno baziranje
- 3.7 Povzetek
-
4. Git na strežniku
- 4.1 Protokoli
- 4.2 Pridobitev Gita na strežniku
- 4.3 Generiranje vaših javnih ključev SSH
- 4.4 Nastavitev strežnika
- 4.5 Prikriti proces Git
- 4.6 Pametni HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Možnosti gostovanja pri tretjih ponudnikih
- 4.10 Povzetek
-
5. Porazdeljeni Git
- 5.1 Porazdeljeni poteki dela
- 5.2 Prispevek k projektu
- 5.3 Vzdrževanje projekta
- 5.4 Povzetek
-
6. GitHub
-
7. Orodja Git
- 7.1 Izbira revizije
- 7.2 Interaktivno pripravljanje
- 7.3 Shranjevanje na varno (angl. stashing) in čiščenje
- 7.4 Podpisovanje vašega dela
- 7.5 Iskanje
- 7.6 Prepisovanje zgodovine
- 7.7 Demistifikacija ponastavitve
- 7.8 Napredno združevanje
- 7.9 Rerere
- 7.10 Razhroščevanje z Gitom
- 7.11 Podmoduli
- 7.12 Povezovanje v pakete
- 7.13 Zamenjava
- 7.14 Shramba poverilnic
- 7.15 Povzetek
-
8. Prilagoditev Gita
- 8.1 Konfiguracija Git
- 8.2 Atributi Git
- 8.3 Kljuke Git
- 8.4 Primer pravilnika, ki ga uveljavlja Git
- 8.5 Povzetek
-
9. Git in ostali sistemi
- 9.1 Git kot odjemalec
- 9.2 Migracija na Git
- 9.3 Povzetek
-
10. Notranjost Gita
- 10.1 Napeljava in keramika
- 10.2 Objekti Git
- 10.3 Reference Git
- 10.4 Packfiles (datoteke zmanjšanih podatkov)
- 10.5 Refspec
- 10.6 Protokoli prenosa
- 10.7 Vzdrževanje in obnovitev podatkov
- 10.8 Spremenljivke okolja
- 10.9 Povzetek
-
A1. Dodatek A: Git v drugih okoljih
- A1.1 Grafični vmesniki
- A1.2 Git v Visual Studio
- A1.3 Git v Visual Studio Code
- A1.4 Git v IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine
- A1.5 Git v Sublime Text
- A1.6 Git v Bashu
- A1.7 Git v Zsh
- A1.8 Git v Powershellu
- A1.9 Povzetek
-
A2. Dodatek B: Vdelava Gita v vašo aplikacijo
- A2.1 Git v ukazni vrstici
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Dodatek C: Ukazi Git
- A3.1 Nastavitev in konfiguracija
- A3.2 Pridobivanje in ustvarjanje projektov
- A3.3 Osnove posnetkov
- A3.4 Veje in združevanje
- A3.5 Deljenje in posodabljanje projektov
- A3.6 Pregled in primerjava
- A3.7 Razhroščevanje
- A3.8 Popravljanje
- A3.9 E-pošta
- A3.10 Zunanji sistemi
- A3.11 Administracija
- A3.12 Orodja za sisteme napeljave
2.5 Osnove Git - Delo z daljavami
Delo z daljavami
Da lahko sodelujete na kateremkoli projektu Git, morate vedeti, kako upravljati vaše oddaljene repozitorije. Oddaljeni repozitoriji so različice vašega projekta, ki gostujejo nekje na internetu ali omrežju. Imate jih lahko več, v splošnem je za vas vsak od njih samo za branje ali pa za branje/pisanje. Sodelovanje z drugimi vključuje upravljanje teh oddaljenih repozitorijev, potiskanje in vlečenje podatkov vanje ali iz njih, ko morate deliti delo. Upravljanje oddaljenih repozitorijev vključuje vedeti, kako dodati oddaljene repozitorije, odstraniti daljave, ki niso več veljavne, upravljati različne oddaljene veje in kako jih definirati kot sledene ali ne in še več. V tem razdelku bomo pokrili nekaj od teh veščin upravljanja daljav.
Opomba
|
Oddaljeni repozitoriji so lahko na vaši lokalni napravi.
Popolnoma mogoče je, da delate z oddaljenim (angl. remote) repozitorijem, ki je v resnici na istem gostitelju kot vi. Beseda »oddaljen« ne pomeni nujno, da je repozitorij drugje na omrežju ali na internetu, temveč samo, da je drugje. Delo s takšnim oddaljenim repozitorijem še vedno vključuje vse standardne operacije potiskanja, vlečenja in pridobivanja kot pri katerem koli drugem oddaljenem repozitoriju. |
Prikaz vaših daljav
Da pogledate, katere oddaljene strežnike ste nastavili, lahko poženete ukaz git remote
.
Izpiše kratka imena vsakega oprimka daljave, ki ste ga določili.
Če ste klonirali svoj repozitorij, bi morali videti vsaj t. i. origin
(izvor) — to je privzeto ime, ki ga Git da strežniku, iz katerega ste klonirali:
$ git clone https://github.com/schacon/ticgit
Cloning into 'ticgit'...
remote: Reusing existing pack: 1857, done.
remote: Total 1857 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1857/1857), 374.35 KiB | 268.00 KiB/s, done.
Resolving deltas: 100% (772/772), done.
Checking connectivity... done.
$ cd ticgit
$ git remote
origin
Določite lahko tudi -v
, ki vam pokaže URL-je, ki jih je Git shranil za kratko ime, ki bo uporabljeno, ko se bo bralo in pisalo na to daljavo:
$ git remote -v
origin https://github.com/schacon/ticgit (fetch)
origin https://github.com/schacon/ticgit (push)
Če imate več kot eno daljavo, ukaz izpiše vse. Na primer, repozitorij z več daljavami za delo z več sodelavci je lahko videti nekako takole.
$ cd grit
$ git remote -v
bakkdoor https://github.com/bakkdoor/grit (fetch)
bakkdoor https://github.com/bakkdoor/grit (push)
cho45 https://github.com/cho45/grit (fetch)
cho45 https://github.com/cho45/grit (push)
defunkt https://github.com/defunkt/grit (fetch)
defunkt https://github.com/defunkt/grit (push)
koke git://github.com/koke/grit.git (fetch)
koke git://github.com/koke/grit.git (push)
origin git@github.com:mojombo/grit.git (fetch)
origin git@github.com:mojombo/grit.git (push)
To pomeni, da lahko precej enostavno povlečemo prispevke od kateregakoli od teh uporabnikov. Morda moramo dodatno imeti pravice za potiskanje v enega ali več od le-teh, vendar tega tu ne moremo vedeti.
Bodite pozorni, saj te daljave uporabljajo številne protokole; več o tem bomo pokrili v Pridobitev Gita na strežniku.
Dodajanje oddaljenih repozitorijev
Omenili in podali smo nekaj demonstracij, kako vam ukaz git clone
posredno doda daljavo origin
.
Tako se doda nova daljava izrecno.
Da dodate nov oddaljeni repozitorij Git kot kratko ime, na katerega se lahko enostavno sklicujete, poženite git remote add <shortname> <url>
:
$ git remote
origin
$ git remote add pb https://github.com/paulboone/ticgit
$ git remote -v
origin https://github.com/schacon/ticgit (fetch)
origin https://github.com/schacon/ticgit (push)
pb https://github.com/paulboone/ticgit (fetch)
pb https://github.com/paulboone/ticgit (push)
Sedaj lahko v ukazni vrstici uporabite niz pb
namesto celotnega URL-ja.
Na primer, če želite prenesti vse informacije, ki jih ima Paul, vendar jih vi še nimate v svojem repozitoriju, lahko poženete git fetch pb
:
$ git fetch pb
remote: Counting objects: 43, done.
remote: Compressing objects: 100% (36/36), done.
remote: Total 43 (delta 10), reused 31 (delta 5)
Unpacking objects: 100% (43/43), done.
From https://github.com/paulboone/ticgit
* [new branch] master -> pb/master
* [new branch] ticgit -> pb/ticgit
Paulova veja master
je sedaj dostopna lokalno kot pb/master
— lahko jo združite v eno izmed svojih vej, ali pa izvlečete lokalno vejo na tisti točki, ki jo želite preiskati.
Kaj so veje in kako jih uporabljati, bomo šli bolj podrobno skozi v Veje Git.
Pridobivanje in vlečenje iz vaših daljav
Kot ste ravnokar videli, da dobite podatke iz svojih oddaljenih projektov, lahko poženete:
$ git fetch <remote>
Ukaz gre v oddaljeni projekt in iz tega oddaljenega projekta povleče vse podatke, ki jih še nimate. Ko to naredite, bi morali imeti reference na vse veje iz te daljave, ki jih lahko kadarkoli združite ali raziščete.
Če klonirate repozitorij, ukaz avtomatsko doda ta oddaljeni repozitorij pod ime »origin«.
Torej, git fetch origin
prinese katerokoli delo, ki je bilo potisnjeno na ta strežnik, odkar ste ga klonirali (ali zadnje prenešeno iz njega).
Pomembno je opaziti, da ukaz git fetch
samo prenese podatke v vaš lokalni repozitorij — avtomatsko jih ne združi s katerimkoli delom ali spremeni česa, na čemer trenutno delate.
Združiti jih morate ročno v svoje delo, ko ste pripravljeni.
Če je vaša trenutna veja nastavljena, da sledi oddaljeni veji (za več informacij glejte naslednji razdelek in poglavje Veje Git), lahko uporabite ukaz git pull
, da avtomatsko prinese in nato združi oddaljeno vejo v vašo trenutno vejo.
To je lahko za vas enostavnejši ali bolj priročen potek dela; in privzeto ukaz git clone
avtomatsko nastavi vašo lokalno vejo master
, da sledi oddaljeni veji master
(ali kakorkoli se privzeta veja imenuje) na strežniku, iz katerega ste klonirali.
Pogon git pull
v splošnem prinese podatke iz strežnika, iz katerega ste prvotno klonirali, in jih skuša avtomatsko združiti v kodo na kateri trenutno delate.
Opomba
|
Od verzije Git 2.27 naprej bo Če želite privzeto obnašanje Gita (fast-forward, če je možen, drugače ustvarite potrditev združevanja):
Če želite ponovno bazirati, ko povlečete:
|
Potiskanje na vaše daljave
Ko imate svoj projekt na točki, ki jo želite deliti, ga morate potisniti v povratni tok.
Ukaz za to je enostaven: git push <remote> <branch>
.
Če želite potisniti vašo vejo master
na vaš strežnik origin
(ponovno, kloniranje vam v splošnem nastavi obe od teh imen avtomatsko), potem lahko to poženete, da potisnete nazaj na strežnik katerekoli potrditve, ki ste jih naredili:
$ git push origin master
Ta ukaz deluje samo, če ste klonirali iz strežnika, za katerega imate pravice pisanja in če nihče vmes ni ničesar potisnil. Če vi in še nekdo klonirata istočasno in drugi potisne proti toku ter nato potisnete proti toku še vi, bo vaše potiskanje pravilno zavrnjeno. Najprej boste morali prinesti delo drugega in ga vdelati v vaše, preden lahko potiskate. Za več podrobnih informacij si oglejte poglavje Veje Git, kako lahko potiskate na oddaljene strežnike.
Preverjanje daljave
Če želite videti več informacij o določeni daljavi, lahko uporabite ukaz git remote show <remote>
.
Če poženete ta ukaz z določenim kratkim imenom, kot je na primer origin
, dobite nekaj takega:
$ git remote show origin
* remote origin
Fetch URL: https://github.com/schacon/ticgit
Push URL: https://github.com/schacon/ticgit
HEAD branch: master
Remote branches:
master tracked
dev-branch tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
Izpiše URL za oddaljeni repozitorij kot tudi informacije sledene veje.
Ukaz vam koristno pove, da če ste na veji master
in poženete git pull
, bo avtomatsko združil oddaljeno vejo master
v lokalno, ko se jo prinese.
Izpiše tudi vse oddaljene reference, ki jih je povlekel.
To je enostaven primer, na katerega boste verjetno naleteli.
Ko uporabljate Git bolj intenzivno, boste lahko videli veliko več informacij preko git remote show
:
$ git remote show origin
* remote origin
URL: https://github.com/my-org/complex-project
Fetch URL: https://github.com/my-org/complex-project
Push URL: https://github.com/my-org/complex-project
HEAD branch: master
Remote branches:
master tracked
dev-branch tracked
markdown-strip tracked
issue-43 new (next fetch will store in remotes/origin)
issue-45 new (next fetch will store in remotes/origin)
refs/remotes/origin/issue-11 stale (use 'git remote prune' to remove)
Local branches configured for 'git pull':
dev-branch merges with remote dev-branch
master merges with remote master
Local refs configured for 'git push':
dev-branch pushes to dev-branch (up to date)
markdown-strip pushes to markdown-strip (up to date)
master pushes to master (up to date)
Ta ukaz pokaže, na katero vejo se avtomatsko potiska, ko poženete git push
, medtem ko ste na določenih vejah.
Pokaže vam tudi, katerih oddaljenih vej na strežniku še nimate pri sebi, katere oddaljene veje imate, ki so bile odstranjene iz strežnika, in več lokalnih vej, ki se lahko avtomatsko združijo s svojimi sledenimi oddaljenimi vejami, ko poženete git pull
.
Preimenovanje in odstranjevanje daljav
Da spremenite kratko ime daljave, lahko poženete git remote rename
.
Na primer, če želite preimenovati pb
v paul
, lahko to naredite z git remote rename
:
$ git remote rename pb paul
$ git remote
origin
paul
Vredno je omeniti, da to spremeni tudi vsa imena vaših sledenih oddaljenih vej.
Kar se je včasih sklicevalo na pb/master
, je sedaj na paul/master
.
Če želite zaradi nekega razloga odstraniti daljavo — prenesli ste strežnik, ali pa določene zrcaljene lokacije ne uporabljate več, ali pa mogoče nekdo, ki je prispeval, sedaj ne dela več — lahko uporabite bodisi git remote remove
ali pa git remote rm
:
$ git remote remove paul
$ git remote
origin
Ko enkrat na ta način odstranite referenco na daljavo, bodo izbrisane tudi vse sledene oddaljene veje in konfiguracijske nastavitve povezane s to daljavo.