-
1. Pričetek
- 1.1 O nadzoru različic
- 1.2 Kratka zgodovina Git-a
- 1.3 Osnove Git
- 1.4 The Command Line
- 1.5 Git namesitev
- 1.6 Prva namestitev Git-a
- 1.7 Pridobitev pomoči
- 1.8 Povzetek
-
2. Osnove Git
- 2.1 Pridobitev repozitorija Git
- 2.2 Snemanje sprememb repozitorija
- 2.3 Pregled zgodovine pošiljanja
- 2.4 Razveljavljanje stvari
- 2.5 Delo z daljavami
- 2.6 Označevanje
- 2.7 Git aliasi
- 2.8 Povzetek
-
3. Veje Git
- 3.1 Veje na kratko
- 3.2 Osnove vej in združevanja
- 3.3 Upravljanje vej
- 3.4 Potek dela z vejami
- 3.5 Oddaljene veje
- 3.6 Ponovno baziranje (rebasing)
- 3.7 Povzetek
-
4. Git na strežniku
- 4.1 Protokoli
- 4.2 Pridobiti Git na strežnik
- 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 Tretje osebne opcije gostovanja
- 4.10 Povzetek
-
5. Distribuirani Git
- 5.1 Distribuirani poteki dela
- 5.2 Prispevanje projektu
- 5.3 Vzdrževanje projekta
- 5.4 Povzetek
-
6. GitHub
-
7. Orodja Git
- 7.1 Revision Selection
- 7.2 Interactive Staging
- 7.3 Stashing and Cleaning
- 7.4 Signing Your Work
- 7.5 Searching
- 7.6 Rewriting History
- 7.7 Reset Demystified
- 7.8 Advanced Merging
- 7.9 Rerere
- 7.10 Debugging with Git
- 7.11 Submodules
- 7.12 Bundling
- 7.13 Replace
- 7.14 Credential Storage
- 7.15 Povzetek
-
8. Prilagoditev Git-a
- 8.1 Git Configuration
- 8.2 Git Attributes
- 8.3 Git kljuke
- 8.4 An Example Git-Enforced Policy
- 8.5 Povzetek
-
9. Git in drugi sistemi
- 9.1 Git kot klient
- 9.2 Migracija na Git
- 9.3 Povzetek
-
10. Notranjost Git-a
- 10.1 Napeljava in porcelan
- 10.2 Git Objects
- 10.3 Git References
- 10.4 Packfiles
- 10.5 The Refspec
- 10.6 Transfer Protocols
- 10.7 Maintenance and Data Recovery
- 10.8 Environment Variables
- 10.9 Povzetek
-
A1. Appendix A: Git v drugih okoljih
- A1.1 Grafični vmesniki
- A1.2 Git v Visual Studiu
- A1.3 Git v Eclipse
- A1.4 Git V Bash-u
- A1.5 Git v Zsh
- A1.6 Git v Powershell-u
- A1.7 Povzetek
-
A2. Appendix B: Vključevanje Git-a v vašo aplikacijo
- A2.1 Git v ukazni vrstici
- A2.2 Libgit2
- A2.3 JGit
-
A3. Appendix C: Git Commands
- A3.1 Setup and Config
- A3.2 Getting and Creating Projects
- A3.3 Basic Snapshotting
- A3.4 Branching and Merging
- A3.5 Sharing and Updating Projects
- A3.6 Inspection and Comparison
- A3.7 Debugging
- A3.8 Patching
- A3.9 Email
- A3.10 External Systems
- A3.11 Administration
- A3.12 Plumbing Commands
2.5 Osnove Git - Delo z daljavami
Delo z daljavami
Da imate možnost sodelovanja na kateremkoli Git projektu, morate vedeti kako upravljati vaše oddaljene repozitorije. Oddaljeni repozitoriji so verzije vašega projekta, ki je gostovan na internetu ali nekje na omrežju. Imate lahko nekaj njih, vsak od njih v splošnem je ali za vas samo za branje ali za branje/pisanje. Sodelovanje z drugimi vključuje upravljanje teh oddaljenih repozitorijev in potiskanje in poteg podatkov vanje ali iz njih, ko potrebujete deliti delo. Upravljanje oddaljenih repozitorijev vključuje vedeti kako dodati oddaljene repozitorije, odstraniti daljave, ki niso več veljavne, upravljati različne oddaljene veje in jih definirati kot sledene ali ne in več. V tej sekciji bomo pokrili nekaj od teh oddaljenih upravljalnih veščin.
Prikaz vaših daljav
Da vidite, katere oddaljene strežnike ste nastavili, lahko poženete ukaz git remote
.
Izpiše kratka imena vsake daljave, ki ste jo določili.
Če ste klonirali vaš repozitorij, bi morali videti vsak 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
Lahko tudi določite -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čimi daljavami za delo z večimi sodelavci, lahko izgleda 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 potegnemo sodelavce iz kateregakoli izmed teh uporabnikov precej enostavno. Morda moramo dodatno imeti pravice za potiskanje v enega ali več od le-teh, vendar tega ne moremo tu povedati.
Bodite pozorni, da te daljave uporabljajo številne protokole; več o njih bomo pokrili v Pridobiti Git na strežnik.
Dodajanje oddaljenih repozitorijev
Omenili in podali smo nekaj demonstracij dodajanja oddaljenih repozitorijev v prejšnjih sekcijah, vendar tu je tudi, kako to narediti eksplicitno.
Da dodamo nov oddaljeni Git repozitorij kot kratko ime, se lahko nanj sklicujete enostavno, poženete 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 uporabite niz pb
v ukazni vrstici namesto celotnega URL-ja.
Na primer, če želite ujeti vse informacije, ki jih ima Paul, vendar jih vi še nimate v vašem 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 master veja je sedaj dostopna lokalno kot pb/master
- lahko jo združite v eno izmed svojih vej, ali pa lahko izpišete lokalno vejo na tisti točki, če jo želite preiskati.
(Šli bomo skozi, kaj so veje in kako jih uporabljati v več podrobnostih v [ch03-git-branching].)
Pridobivanje in poteg iz vaših daljav
Kot ste ravnokar videli, da dobite podatke iz vaših oddaljenih projektov, lahko poženete:
$ git fetch [remote-name]
Ukaz gre v oddaljeni projekt in potegne vse podatke iz tega oddaljenega projekta, ki jih še nimate. Ko to naredite bi morali imeti reference na vse veje iz te daljave, ki jih lahko združite ali raziščete kadarkoli.
Če klonirate repozitorij, ukaz avtomatsko doda ta oddaljeni repozitorij pod ime “origin”.
Torej git fetch origin
ujame katerokoli delo, ki je bilo poslano na ta strežnik odkar ste klonirali (ali vsaj ujeli iz njega).
Pomembno je opaziti, da ukaz git fetch
potegne podatke v vaš lokalni repozitorij - avtomatsko ga ne združi s katerimkoli delom ali spremeni, na čemer trenutno delate.
Združiti jih morate ročno v vaše delo, ko ste pripravljeni.
Če imate nastavljeno vejo, da sledi oddaljeni veji (glejte naslednjo sekcijo in [ch03-git-branching] za več informacij), lahko uporabite ukaz git pull
, da avtomatsko
ujame in nato združi oddaljeno vejo v vašo trenutno vejo.
To je lahko enostavnejši ali bolj udoben potek dela za vas; in privzeto ukaz git clone
avtomatsko nastavi vašo lokalno master vejo, da sledi oddaljeni master veji (ali kakorkoli se privzeta veja imenuje) na strežniku iz katerega ste klonirali.
Pogon git pull
v splošnem ujame podatke iz strežnika, iz katerega ste prvotno klonirali in jih skuša avtomatsko združiti v kodo na kateri trenutno delate.
Potiskanje v vaše daljave
Ko imate vaš projekt na točki, ki jo želite deliti, morate potistniti smeri toka
Ukaz za to je enostaven: git push [remote-name] [branch-name]
.
Če želite potisniti vašo master vejo v vaš origin
strežnik (ponovno, kloniranje v splošnem nastavi oba od teh imen za vas avtomatsko), nato lahko poženete to s potiskanjem kateregakoli pošiljanja, ki ste ga naredili nazaj na strežnik:
$ git push origin master
Ta ukaz deluje samo če ste klonirali iz strežnika za katerega imate pravice pisati in če nihče vmes ne potisne. Če vi in še kdo drug klonirate istočasno in on potisne proti toku in nato vi potisnete navzgor, bo vaše potiskanje pravično zavrnjeno. Najprej boste morali potegniti njegovo delo in ga vdelati v vaše preden lahko potiskate. Glejte [ch03-git-branching] za več podrobnih informacij, 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-name]
.
Č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 pove v pomoč, da če ste na master veji in poženete git pull
, bo avtomatsko združil master vejo na daljavi ko ujame vse oddaljene reference.
Izpiše tudi oddaljene reference, ki jih je potegnil.
To je enostaven primer, na katerega ste verjetno naleteli.
Ko uporabljate Git bolj intenzivno, vendar lahko vidite veliko več informacij iz 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
, ko ste na določenih vejah.
Pokaže vam tudi, katerih oddaljenih vej na strežniku še nimate, katere oddaljene veje imate in so bile odstranjene iz strežnika in več vej, ki so avtomatsko združene, ko poženete git pull
.
Odstranjevanje in preimenovanje oddaljenih vej
Če želite preimenovati referenco, lahko poženete git remote rename
, da spremenite kratko ime daljave.
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 tudi spremeni imena vaših oddaljenih vej.
Kar je bilo včasih sklicevano na pb/master
je sedaj na paul/master
.
Če želite odstraniti daljavo zaradi nekega razloga - ste prenesli strežnik ali ne uporabljate več določene preslikave, ali mogoče nekdo, ki je prispeval, sedaj ne prispeva več lahko uporabite git remote rm
:
$ git remote rm paul
$ git remote
origin