Git
Chapters ▾ 2nd Edition

A1.1 Appendix A: Git v drugih okoljih - Grafični vmesniki

Če ste prebrali celotno knjibo, ste se naučili veliko o tem, kako uporabljati Git v ukazni vrstici. Lahko delate z lokalnimi datotekami, povežete vaš repozitorij z drugimi preko omrežja in delate efektivno z ostalimi. Vendar zgodba se tu ne konča; Git je običajno uporabljen kot del večjih ekosistemov in terminal ni vedno najboljši način za delo z njim. Sedaj bomo pogledali nekaj drugim vrst okolj, kjer je Git lahko uporaben in kako druge aplikacij (vključno z vašo) delajo skupaj z Git-om.

Grafični vmesniki

Git materno okolje je v terminualu. Nove lastnosti se najprej prikažejo tam in samo ukazna vrstica je polna moč Git-a v celoti na razpolago. Vendar osnovni tekst ni najboljša izbira za vsa opravila; včasih je vizualna predstavitev to, kar potrebujete in nakateri uporabniki so veliko bolj udobni z vmesnikom točke in klika.

Pomembno je omeniti, da razlike med vmesniki so prilagojene z različnimi poteki dela. Nekateri klienti izpostavijo samo pazljive kustose razstave funkcionalnosti Git, da podpirajo določen način dela, ki ga avtor smatra za efektivnega. Ko se pogleda to v tej luči, nobeno izmed teh orodij ne more biti poimenovano kot “boljše” od ostalih, saj so enostavno samo prilagojeni njihovim predvidenim namenom. Pomnite tudi, da ni ničesar v teh grafičnih klientih, kar klient ukazne vrstice ne more narediti; ukazna vrstica je še vedno, kjer boste imeli največ moči in kontrole, ko delate z vašimi repozitoriji.

gitk in git-gui

Ko namestite Git, dobite tudi njegovi vizualni orodji gitk in git-gui.

gitk je grafični pregledovalnih zgodovine. O njem razmišljajte kot o močni GUI lupini preko git log in git grep. To je orodje za uporabo, ko poskušate ugotoviti, kaj se je zgodilo v preteklosti ali vizualizirati zgodovino vašega projekta.

Gitk je najenostavnejši za sklicevanje iz ukazne vrstice. Naredite samo cd v repozitorij Git in vpišite:

$ gitk [git log options]

Gitk sprejema mnoge opcije ukazne vrstice, večina od njih je podanih preko podležeče akcije git log. Verjetno ena najbolj uporabnik je zastavica --all, ki pove gitk, da prikaže pošiljanja, ki so doseglijva iz kateregakoli ref-a ne samo HEAD. Gitk-jev vmesnik izgleda takole:

The `gitk` history viewer.
Figure 153. The gitk history viewer.

Na vrhu je nekaj, kar izgleda kot nek izpis git log --graph; vsaka pika predstavlja pošiljanje, vrstice predstavljajo starševska razmerja in ref-i so prikazani kot obarvane škatlice. Rumena pika predstavlja HEAD in rdeča pika predstavlja spremembe, ki še bodo postale pošiljanja. Na dnu je pogled izbranega pošiljanja; komentarji in popravki na levi in pogled povzetka na desni. Vmes je zbirka kontrol uporabljenih za iskanje zgodovine.

git-gui na drugi strani je primarno orodje za obdelovanje pošiljanj. To je tudi najenostavnejše za sklic iz ukazne vrstice:

$ git gui

In izgleda nekako takole:

The `git-gui` commit tool.
Figure 154. The git-gui commit tool.

Na levi je kazalo; spremembe, ki niso v vmesni fazi na vrhu; spremembe dane v vmesno fazo na dnu. Premikate lahko celotne datoteke med dvemi stanji s klikom na njihove ikone ali pa lahko izberete datoteko za pogled s klikom na njeno ime.

Desno zgoraj je pogled diff, ki prikazuje spremembe za trenutno izbrano datoteko. Posamezne kupe lahko date v vmesno fazo (ali posamezne vrstice) z desnim klikom v tem področju.

Desno spodaj je sporočilo in področje akcije. Vpišite vaše sporočilo v tekstovno polje in kliknite “Commit”, da naredite nekaj podobnega git commit. Lahko tudi izberete za spreminjanje zadnjega pošiljanja z izbiro “Amend” izbirnega gumba, ki bo posodobil področje “Staged Changes” z vsebino zadnjega pošiljanja. Nato lahko enostavno date v vmesno fazo ali date izved vmesne faze nekatere spremembe, spremenite sporočilo pošiljanja in kliknite “Commit” ponovno, da zamenjate starejše pošiljanje z novim.

gitk in git-gui so primeri orodij orientiranih na naloge. Vsako od njih je prilagojeno za določen namen (ogledovanje zgodovine in ustvarjanje pošiljanj zaporedno) in izpuščanju lastnosti, ki niso potrebne za to opravilo.

GitHub za Mac in Windows

GitHub je ustvaril dva poteku dela orientirana klienta Git: enega za Windows in enega za Mac. Ta klienta sta dober primer poteku dela orientiranih orodij - namesto izpostavljnju vseh funkcionalnosti Git-a, se namesto tega fokusirata na kuriran skupek pogosto uporabljenih lastnosti, ki skupaj dobro delajo. Izgledata nekako takole:

GitHub for Mac.
Figure 155. GitHub for Mac.
GitHub for Windows.
Figure 156. GitHub for Windows.

Oblikovana sta, da izgledata in delujeta zelo podobno, torej ju bomo tretirali kot en produkt v tem poglavju. Ne bomo delali podrobnostnega poteka teh orodij (imata svojo lastno dokumentacijo), vendar na hitro iti skozi pogled sprememb (kjer boste porabili večino vašega časa) je v redu.

  • Na levi strani je seznam repozitorijev, katerim klient sledi; repozitorij lahko dodate (bodisi s kloniranjem ali pripetjem lokalno) s klikom na ikono “+” tega področja.

  • V centru je področje vnosa pošiljanj, ki vam omoga vnesti sporočilo pošiljanja in izbrati, katere datoteke naj bodo vključene. (Na Windows-u je zgodovina pošiljanj prikazana direktno pod tem; na Mac-u je na ločenem zavihku.)

  • Na desni je pogled diff, ki prikazuje, kaj se je spremenilo v vašem delovnem direktoriju, ali katere spremembe so bile vključene v izbranem pošiljanje.

  • Zadnja stvar za opaziti je gumb “Sync” zgoraj desno, ki je primarni način za interakcijo preko omrežja.

Note

Ne potrebujete računa GitHub za uporabo teh orodij. Medtem ko sta načrtovani posebej za storitev GitHub-a in priporočeni potek dela, bosta tudi veselo delovali s katerimkoli drugim repozitorijem in delali operacije omrežja s katerimkoli gostiteljem Git-a.

Namestitev

GitHub za Windows se lahko prenese iz https://windows.github.com in GitHub za Mac iz https://mac.github.com. Ko se aplikaciji prvič požene, vas pelje skozi vse prve nastavitve Git, kot je nastavitev vašega imena in naslova e-pošte in tako nastavi smiselne privzete vrednosti za mnogo pogostih nastavitvenih opcij, kot je predpomnenje overilnic in obnašanje CRLF.

Oboji sta “evergreen” - posodobitve so prenesene in nameščene v ozadju medtem kot so aplikacije odprte. To pomagajoče vključuje zapakirano verzijo Git-a, kar pomeni, da vam verjetno ne bo treba skrbeti o ročnem posodabljanju ponovno. Na Windows klient vključuje bližnjico za zagon Powershell-a s Posh-git, o katerem bomo govorili več kasneje v tem poglavju.

Naslednji korak je dati orodju neke repozitorije za delo. Klient vam prikaže seznam repozitorijev do katerih imate dostop na GitHub-u in jih lahko klonirate v enem koraku. Če že imate lokalni repozitorij, samo potegnite njegov direktorij iz Finder-ja ali Windows Explorer-ja v okno klienta GitHub in vključen bo v seznam repozitorijev na levi.

Priporočljiv potek dela

Enkrat ko je nameščen in nastavljen, lahko uporabite klienta GitHub za mnogo pogostih opravil Git. Namenjen potek dela za to orodje je včasih imenovan “GitHub Flow.” To pokrivamo v več podrobnostih v The GitHub Flow, vendar splošno bistvo je, da (a) pošiljali boste na vejo in (b) sinhronizirali boste z oddaljenim repozitorijev dokaj redno.

Upravljanje vej je eno področij, kjer se ti dve orodji razhajata. Na Mac-u je gump na vrhu okna za ustvarjanje nove veje:

``Create Branch'' button on Mac.
Figure 157. “Create Branch” button on Mac.

Na Windows-u je to narejeno tako, da vpišete ime nove veje v gradnik preklapljanja vej:

Creating a branch on Windows.
Figure 158. Creating a branch on Windows.

Ko je enkrat veja ustvarjena, je ustvarjanje novih pošiljanj dokaj enostavno. Naredite nekaj sprememb v vašem delovnem direktoriju in ko preklopite na okno klienta GitHub, vam bo prikazal katere datoteke so se spremenile. Vpišite sporočilo pošiljanja, izberite datoteke, ki bi jih želeli vključiti in kliknite na gumb “Commit” (ctrl-enter ali ⌘-enter).

Glavni način za interakcijo z ostalimi repozitoriji preko omrežja je skozi lastnost “Sync”. Git ima v notranjosti ločene operacije za porivanje, ujemanje, združevanje in ponovno baziranje vendar GitHub klienti strnejo vse te v eno več-koračno lastnost. Tu je, kaj se zgodi, ko kliknete na gumb Sync:

  1. git pull --rebase. If this fails because of a merge conflict, fall back to git pull --no-rebase.

  2. git push.

To je najbolj pogosta sekvenca ukazov omrežja, ko delate v tem stilu, tako da mečkanje v en ukaz vam prihrani veliko časa.

Povzetek

Ta orodja so zelo dobro primerna za potek dela za katerega so načrtovana. Podobni razvijalci in ne-razvijalci lahko sodelujejo na projektu v nekaj minutah in mnoge od najboljših praks za ta potek dela so zapečene v orodja. Vendar, če je vaš potek dela različen ali želite več kontrole nad tem kako in kdaj so operacije omrežja narejene, priporočamo, da uporabite drugega klienta ali ukazno vrstico.

Ostali GUI-ji

Na voljo je število ostalih grafičnih Git klientov in imajo celoten rang od specializiranih orodij z enim razlogom vse do applikacij, ki poskušajo izpostaviti vse kar Git lahko naredi. Uradna spletna stran Git ima točen seznam najbolj popularnih klientov na http://git-scm.com/downloads/guis. Bolj celovit seznam je na voljo na spletni strani Git wiki na https://git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools#Graphical_Interfaces.