Git
Chapters ▾ 2nd Edition

A1.1 Appendix A: Git in Other Environments - Grapikal Interfaces

If you read through the whole book, you’ve learned a lot about how to use Git at the command line. You can work with local files, connect your repository to others over a network, and work effectively with others. But the story doesn’t end there; Git is usually used as part of a larger ecosystem, and the terminal isn’t always the best way to work with it. Now we’ll take a look at some of the other kinds of environments where Git can be useful, and how other applications (including yours) work alongside Git.

Grapikal Interfaces

Ang natibong environment ng Git ay nasa terminal. Ang mga bagong tampok ay ipapakita muna roon, at tanging sa command line ay ang buong lakas ng Git na lubos sa iyong pamamahala. Ngunit ang plain text ay hindi ang pinakamahusay na pagpipilian para sa lahat ng mga gawain; kung minsan ang isang biswal na representasyon ay ang iyong kailangan, at ang ilang mga gumagamit ay mas kumportable sa isang interface ng point-and-click.

Mahalagang tandaan na ang iba’t ibang mga interface ay natatangi para sa iba’t-ibang mga workflow. Ang ilang mga kliyente ay naglalantad lamang ng maingat na na-curate na subset ng Git na functionality, upang suportahan ang isang partikular na paraan ng paggawa na itinuturing ng may-akda na epektibo. Kapag tiningnan sa liwanag na ito, wala sa mga kasangkapan na ito ay maaaring masabi na “mas mabuti” kaysa sa iba pa, ang mga ito ay mas angkop sa kanilang layunin. Tandaan din na wala sa mga grapikal na kliyente na maaaring gawin na ang command-line na kliyente ay hindi kaya; ang command-line ay pa rin kung saan magkakaroon ka ng pinaka makapangyarihan at kontrol kapag gumagawa sa iyong mga repository.

gitk at git-gui

Kapag nag-install ka ng Git, nakakuha ka rin ng mga biswal na kasangkapan nito, gitk at git-gui.

Ang gitk ay isang grapikal viewer ng kasaysayan. Isipin ito tulad ng isang malakas na shell ng GUI sa git log at git grep. Ito ang kasangkapan na gagamitin kapag sinusubukan mong maghanap ng isang bagay na nangyari sa nakaraan, o maisalarawan ang kasaysayan ng iyong proyekto.

Ang Gitk ay pinakamadaling tawagin mula sa command-line. Mag-cd lamang sa isang repository ng Git, at i-type:

$ gitk [git log options]

Tinatanggap ng Gitk ang maraming mga opsyon sa command line, na karamihan ay naipasa sa pinagbabatayan na aksyon ng git log. Marahil ang isa sa mga pinaka-kapaki-pakinabang ay ang --all na flag, na nagsasabi sa gitk na ipakita ang mga commit na mula sa anumang ref, na hindi lamang HEAD. Mukhang ganito ang interface ng Gitk:

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

Sa itaas ay isang bagay na mukhang medyo katulad ng output ng git log - graph; ang bawat tuldok ay kumakatawan sa isang commit, ang mga linya ay kumakatawan sa mga relasyon ng parent, at ang mga ref ay ipinapakita bilang mga kulay na mga kahon. Ang dilaw na tuldok ay kumakatawan sa HEAD, at ang pulang tuldok ay kumakatawan sa mga pagbabago na hindi pa magiging isang commit. Sa ibaba ay isang tanawin sa napiling commit; ang mga komento at patch sa kaliwa, at isang buod na tanawin sa kanan. Sa pagitan ay isang koleksyon ng mga kontrol na ginagamit para sa kasaysayan ng paghahanap.

Ang git-gui, sa kabilang banda, ay pangunahing kasangkapan para sa paggawa ng mga commit. Ito rin, ay pinakamadaling tawagin mula sa command line:

$ git gui

At mukhang ganito:

Ang `git-gui` na commit na kasangkapan.
Figure 154. The git-gui commit tool.

Sa kaliwa ay ang index; unstaged na mga pagbabago ay nasa itaas, staged na mga pagbabago sa ibaba. Maaari mong ilipat ang buong mga file sa pagitan ng dalawang estado sa pamamagitan ng pagpindot sa kanilang mga icon, o maaari kang pumili ng isang file para sa pagpapakita sa pamamagitan ng pagpindot sa pangalan nito.

Sa itaas na kanan ay ang diff na view, na nagpapakita ng mga pagbabago para sa kasalukuyang napiling file. Maaari mong i-stage ang mga indibidwal na hunks (o mga indibidwal na linya) sa pamamagitan ng pagpindot sa kanang bahagi nito.

Sa kanang ibaba ay ang mensahe at aksyon ng lawak. I-type ang iyong mensahe sa text box at pindotin ang “Commit” upang magawa ang isang bagay na katulad ng git commit. Maaari mo ring piliin na baguhin ang huling commit sa pamamagitan ng pagpili ng radio button na “Amend”, na kung saan ay i-update ang bahagi ng ‘`Mga Staged na Pagbabago’ sa mga nilalaman ng huling commit. Pagkatapos ay maaari mo i-stage o unstage ang ilang mga pagbabago, baguhin ang commit na mensahe, at pindotin muli ang ‘`Commit’ upang palitan ang lumang commit ng bago.

Ang gitk at git-gui ay mga halimbawa ng mga kasangkapan na task-oriented. Ang bawat isa sa kanila ay pinasadya para sa isang tiyak na layunin (pagtingin sa kasaysayan at paglikha ng mga commit, ayon sa pagkakabanggit), at laktawan ang mga tampok na hindi kinakailangan para sa gawaing iyon.

GitHub para sa Mac at Windows

Ang GitHub ay lumikha ng dalawang kliyente na nakatuon sa workflow na Git: isa para sa Windows, at isa para sa Mac. Ang mga kliyente na ito ay isang mahusay na halimbawa ng mga kasangkapan na nakatuon sa workflow - sa halip na ilantad ang all ng functionality ng Git, sa halip ay nakatuon sila sa isang na-curate na pangkat ng mga karaniwang ginagamit na mga tampok na mahusay na magkasama. Mukhang ganito:

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

Idinisenyo ang mga ito upang magmukha at gumana nang magkatulad, kaya gagamitin namin ang mga ito tulad ng isang solong produkto sa kabanatang ito. Hindi namin gagawin ang isang detalyadong rundown ng mga kasangkapan na ito (mayroon silang sariling dokumentasyon), ngunit ang isang mabilis na paglilibot sa “pagbabago” na ipakita (na kung saan ay magbubuhos ka ng maraming oras) ay nasa kaayusan.

  • Sa kaliwa ang listahan ng mga repositoryo na sinusubaybayan ng kliyente; maaari kang magdagdag ng repositoryo (alinman sa pamamagitan ng pag-clone o pag-attach lokal) sa pamamagitan ng pagpindot sa ikon na “+” sa tuktok ng lugar na ito.

  • Sa sentrong bahagi ay isang commit-input, na nagbibigay-daan sa iyo ng pag-input ng isang mensahe ng commit, at piliin kung aling mga file ang dapat isama. (Sa Windows, ang commit na kasaysayan ay ipinapakita nang direkta sa ibaba nito, sa Mac, ito ay nasa isang hiwalay na tab.)

  • Sa kanan ay isang diff view, na nagpapakita kung ano ang binago sa iyong ginagawa na direktoryo, o kung aling mga pagbabago ang kasama sa napiling commit.

  • Ang huling bagay na mapapansin ay ang pindutan ng “Sync” sa kanang tuktok, na siyang pangunahing paraan na nakikipag-ugnayan ka sa network.

Hindi mo kailangan ang isang GitHub na account upang magamit ang mga kasangkapan na ito. Habang ang mga ito ay dinisenyo upang i-highlight ang serbisyo ng GitHub at inirerekumendang daloy ng trabaho, maginhawa silang gagana sa anumang repository, at gawin ang mga operasyon ng network sa anumang host Git.

Pag-install

Maaaring ma-download ang GitHub para sa Windows mula sa https://windows.github.com, at GitHub para sa Mac mula sa https://mac.github.com. Kapag ang mga aplikasyon ay unang pinatakbo, nilalakad ka nila sa lahat ng unang pag-setup ng Git, tulad ng pagkompigura ng iyong pangalan at email address, at kapwa nag-set up ng parehong default para sa maraming mga karaniwang opsyon sa kompigurasyon, tulad ng mga cache ng kredensyal at pag-uugali ng CRLF.

Parehong “evergreen” - ang mga update ay na-download at na-install sa background habang bukas ang mga application. Tinutulungan nito na isama ang isang bundle na bersyon ng Git, na nangangahulugang marahil ay hindi mo kailangang mag-alala tungkol sa manu-manong pag-update nito muli. Sa Windows, ang kliyente ay nagsasama ng isang shortcut upang ilunsad ang Powershell sa Posh-git, na kung saan pag-uusapan natin mamaya ang kabanatang ito

Ang susunod na hakbang ay upang bigyan ang kasangkapan ng ilang mga repositoryu upang gumana sa. Ang client ay nagpapakita sa iyo ng isang listahan ng mga repositoryo na mayroon kang access sa GitHub, at maaaring i-clone ang mga ito sa isang hakbang. Kung mayroon ka nang isang lokal na repositoryo, hilahin lamang ang direktoryo nito mula sa Finder o Windows Explorer sa window ng kliyente ng GitHub, at ito ay isasama sa listahan ng mga repositoryo sa kaliwa.

Inirerekumendang Workflow

Sa sandaling naka-install at nakompigura, ay maaari mong gamitin ang GitHub na kliyente para sa maraming karaniwang mga commit sa Git. Ang inilaan na workflow para sa kasangkapan na ito kung minsan ay tinatawag na “GitHub Flow.” Sinasaklaw namin ito nang mas detalyado sa Ang Daloy ng GitHub, ngunit ang pangkalahatang gist ay (a) magkakapag-commit ka sa isang branch, at (b) makakapag-sync ka ng isang remote na repositoryo ng madalas.

Ang pangangasiwa ng branch ay isa sa mga bahagi kung saan magkakaiba ang dalawang mga kasangkapan. Sa Mac, mayroong isang pindutan sa tuktok ng window para sa paglikha ng isang bagong branch:

``Lumikha ng Branch'' na pindutan sa Mac.
Figure 157. “Lumikha ng Branch” na pindutan sa Mac.

Sa Windows, ito ay ginagawa sa pamamagitan ng pag-type ng pangalan ng bagong sangay sa widget ng switch ng sangay:

Paglikha ng isang branch sa Windows.
Figure 158. Paglikha ng isang branch sa Windows

Sa sandaling ang iyong branch ay nilikha, ang paggawa ng mga bagong commit ay medyo tahas. Gumawa ng ilang mga pagbabago sa iyong gumaganang direktoryo, at kapag lumipat ka sa window ng kliyente ng GitHub, ipapakita nito sa iyo kung aling mga file ang nagbago. Maglagay ng isang commit ng mensahe, piliin ang mga file na nais mong isama, at pindutin ang “Commit” na pindutan (ctrl-enter o ⌘-enter).

Ang pangunahing paraan na nakikipag-ugnayan ka sa iba pang mga repositoryo sa network ay sa pamamagitan ng tampok na “Sync”. Ang Git sa loob ay may hiwalay na mga operasyon para sa pag-push, pagkuha, pagsasama, at pag-rebase, ngunit ang mga kliyente ng GitHub ay nabagsak ang lahat ng mga ito sa isang tampok na multi-step. Narito kung ano ang mangyayari kapag pinindot ang Sync na pindutan:

  1. git pull --rebase. Kung nabigo ito dahil sa isang conflict sa pagsali, bumabalik sa git pull --no-rebase.

  2. git push.

Ito ang pinakakaraniwang pagkakasunud-sunod ng mga utos ng network kapag ginagawa ang estilo na ito, kaya ang paglalagay ng mga ito sa isang command ay nagse-save ng maraming oras.

Buod

Ang mga kasangkapan na ito ay napakahusay na angkop para sa workflow na idinisenyo para sa. Ang mga nag-develop at hindi developer ay magkakasamang nakikipagtulungan sa isang proyekto sa loob ng ilang minuto, at marami sa mga pinakamahusay na kasanayan para sa ganitong uri ng daloy ng trabaho ay nai-bake na sa mga kasangkapan. Gayunpaman, kung ang iyong daloy ng trabaho ay iba, o gusto mong higit na kontrol sa kung paano at kailan ang mga operasyon ng network matapos, inirerekumenda namin na gumamit ka ng isa pang kliyente o command line.

Iba pang mga GUI

Mayroong ilang iba pang mga grapikal na kliyente ng Git, at pinatakbo nila ang gamut mula sa mga espesyal, mga tool na nag-iisang layunin sa lahat ng paraan sa mga apps na subukang ilantad ang lahat ng magagawa ng Git. Ang opisyal na website ng Git ay may isang listahan ng mga pinakasikat na kliyente sa http://git-scm.com/downloads/guis. Ang isang mas malawak na listahan ay magagamit sa Git wiki na site, sa https://git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools#Graphical_Interfaces.