-
1. Pagsisimula
-
2. Mga Pangunahing Kaalaman sa Git
-
3. Pag-branch ng Git
-
4. Git sa Server
- 4.1 Ang Mga Protokol
- 4.2 Pagkuha ng Git sa isang Server
- 4.3 Ang paglikha ng iyong Pampublikong Susi ng SSH
- 4.4 Pag-Setup ng Server
- 4.5 Git Daemon
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Mga Opsyon ng Naka-host sa Third Party
- 4.10 Buod
-
5. Distributed Git
- 5.1 Distributed Workflows
- 5.2 Contributing to a Project
- 5.3 Maintaining a Project
- 5.4 Summary
-
6. GitHub
-
7. Mga Git na Kasangkapan
- 7.1 Pagpipili ng Rebisyon
- 7.2 Staging na Interactive
- 7.3 Pag-stash at Paglilinis
- 7.4 Pag-sign sa Iyong Trabaho
- 7.5 Paghahanap
- 7.6 Pagsulat muli ng Kasaysayan
- 7.7 Ang Reset Demystified
- 7.8 Advanced na Pag-merge
- 7.9 Ang Rerere
- 7.10 Pagdebug gamit ang Git
- 7.11 Mga Submodule
- 7.12 Pagbibigkis
- 7.13 Pagpapalit
- 7.14 Kredensyal na ImbakanCredential Storage
- 7.15 Buod
-
8. Pag-aangkop sa Sariling Pangangailagan ng Git
- 8.1 Kompigurasyon ng Git
- 8.2 Mga Katangian ng Git
- 8.3 Mga Hook ng Git
- 8.4 An Example Git-Enforced Policy
- 8.5 Buod
-
9. Ang Git at iba pang mga Sistema
- 9.1 Git bilang isang Kliyente
- 9.2 Paglilipat sa Git
- 9.3 Buod
-
10. Mga Panloob ng GIT
- 10.1 Plumbing and Porcelain
- 10.2 Git Objects
- 10.3 Git References
- 10.4 Packfiles
- 10.5 Ang Refspec
- 10.6 Transfer Protocols
- 10.7 Pagpapanatili At Pagbalik ng Datos
- 10.8 Mga Variable sa Kapaligiran
- 10.9 Buod
-
A1. Appendix A: Git in Other Environments
- A1.1 Grapikal Interfaces
- A1.2 Git in Visual Studio
- A1.3 Git sa Eclipse
- A1.4 Git in Bash
- A1.5 Git in Zsh
- A1.6 Git sa Powershell
- A1.7 Summary
-
A2. Appendix B: Pag-embed ng Git sa iyong Mga Aplikasyon
- A2.1 Command-line Git
- A2.2 Libgit2
- A2.3 JGit
-
A3. Appendix C: Mga Kautusan ng Git
- A3.1 Setup at Config
- A3.2 Pagkuha at Paglikha ng Mga Proyekto
- A3.3 Pangunahing Snapshotting
- A3.4 Branching at Merging
- A3.5 Pagbabahagi at Pagbabago ng mga Proyekto
- A3.6 Pagsisiyasat at Paghahambing
- A3.7 Debugging
- A3.8 Patching
- A3.9 Email
- A3.10 External Systems
- A3.11 Administration
- A3.12 Pagtutuberong mga Utos
3.4 Pag-branch ng Git - Mga Daloy ng Trabaho sa Pag-branch
Mga Daloy ng Trabaho sa Pag-branch
Ngayon na mayroon ka nang mga batayan sa pag-branch at pag-merge down, ano ang maaari o dapat mong gawin sa mga ito? Sa seksyong ito, sasakupin natin ang ilang karaniwang mga daloy ng trabaho na ginagawang posible ang magaan na pag-branch, upang ikaw ay makapagpasya kung gusto mong isama ito sa iyong sariling development cycle.
Matagal na Tumatakbong mga Branch
Dahil ang Git ay gumagamit ng isang simpleng three-way na merge, ang pag-merge mula sa isang branch patungo sa iba pa nang maraming beses sa isang mahabang panahon ay kadalasang madaling gawin. Ang ibig sabihin nito ay maaari kang magkaroon ng iilang mga branch na palaging nakabukas at magagamit mo sa iba’t ibang mga yugto ng iyong development cycle; maaari kang regular na mag-merge mula sa ilan sa kanila patungo sa mga iba pa.
Karamihan sa mga developer ng Git ay mayroong isang daloy ng trabaho na tumatanggap ng ganitong paraan, katulad ng pagkakaroon ng code na buong matatag sa kanilang master
na branch — posibleng code lamang na na-release o iri-release. Mayroon silang ibang kahilera na branch na nakapangalang develop
o next
na tinatrabaho nila o ginagamit upang i-test ang katatagan — ito ay hindi kinakailangang palaging matatag, ngunit tuwing ito ay makakakuha ng isang matatag na estado, maaari itong i-merge sa master
. Ginagamit ito upang maka-pull sa paksa na mga branch (maikling buhay na mga branch, katulad ng iss53
na branch kamakailan lamang) kapag handa na ang mga ito, upang siguraduhing sila ay pasado sa lahat ng mga pagsubok at hindi magpapakilala ng mga bug.
Sa katunayan, tinatalakay natin ang tungkol sa mga pointer na lumilipat paitaas sa linya ng mga commit na iyong ginagawa. Ang matatag na mga branch ay mas malayo sa ibaba sa linya ng iyong kasaysayang ng commit, at ang pinakabago na mga branch ay malayo sa itaas ng kasaysayan.
Ito ay karaniwang mas madaling pag-isipan tungkol sa kanila bilang mga lalagyan ng trabaho, kung saan ang mga pangkat ng commit ay magtatapos sa isang mas matatag na lalagyan kapag sila ay ganap nang nasubukan.
Maaari kang manatiling gumawa nito sa ilang mga antas ng stabilidad. Ilang mas malaking mga proyekto ay mayroon ding proposed
o pu
(iminungkahi na mga update) na branch na may napagsama-sama na mga branch na maaaring hindi pa handang pumunta sa next
o master
na branch. Ang ideya nito ay ang iyong mga branch ay nasa iba’t ibang antas ng stabilidad; kapag nakaabot sila sa isang mas matatag na antas, sila ay imi-merge sa branch na nasa itaas nila. Muli, ang pagkakaroon ng maramihang matagal na tumatakbong mga branch ay hindi kinakailangan, ngunit ito ay kadalasang kapaki-pakinabang, lalo na kapag ikaw ay nakikipagtungo sa sobrang malaki o kumplikadong mga proyekto.
Paksa na mga Branch
Ang paksa na mga branch, gayunpaman, ay kapaki-pakinabang sa mga proyekto sa anumang laki. Isang paksa na branch ay isang maikling-buhay na branch na ginagawa mo at gagamitin para sa isang solong partikular na tampok o may kaugnayan na trabaho. Ito ay isang bagay na malamang na hindi mo pa nagawa gamit ang isang VCS dati dahil ito ay kadalasang sobrang magastos upang ilikha at i-merge sa mga branch.
Nakita mo ito sa huling seksyon sa iss53
at hotfix
na mga branch na iyong ginawa. Gumawa ka ng ilang mga commit sa mga iyon at direktang binura ang mga iyon pagkatapos mong i-merge ang mga ito sa iyong pangunahing branch. Ang pamamaraang ito ay nagpapahintulot sa iyo upang mag context-switch nang mabilis at ganap — dahil ang iyong trabaho ay hiwalay sa mga silo kung saan lahat ng mga pagbabago sa branch na iyo ay may gagawin sa paksang iyon, mas madaling tingnan kung ano ang nangyari sa panahon ng code review at ganoon. Maaari mong panatilihin ang mga pagbabago doon sa ilang mga minuto, mga araw, o mga buwan, at i-merge in ang mga iyon kapag sila ay handa na, kahit sa anumang pagkakaayos sila nabuo o tinrabaho.
Isaalang-alang ang isang halimbawa sa paggawa ng ilang trabaho (sa master
), pag-branch off para sa isang isyu (iss91
), pagtatrabaho nito sa isang saglit, pag-branch off sa pangalawang branch upang subukan ang ibang paraan ng pag-asikaso ng parehong bagay (iss91v2
), pagpunta pabalik sa iyong master
na branch at pagtatrabaho dito sa mahabang sandali, at pagkatapos ay mag-branch off doon para gumawa ng ilang trabaho na hindi ka siguradong isang magandang ideya (dumbidea
na branch). Ang iyong kasaysayan ng commit ay magmumukhang katulad nito:
Ngayon, sabihin nating ikaw ay nakapagpasya na pinakagusto mo ang pangalawang solusyon sa iyong isyu (iss91v2
); at ipinakita mo ang dumbidea
na branch sa iyong katrabaho, and ito ay napatunayang henyo. Maaari mong itapon ang orihinal na iss91
na branch (mawawala ang mga commit na C5
at C6
) at i-merge in ang dalawang iba pa. Ang iyong kasaysayan ngayon ay magmumukhang katulad nito:
dumbidea
at iss91v2
Pupunta tayo sa mas maraming detalye tungkol sa iba’t ibang posibleng mga daloy ng trabaho para sa iyong Git na proyekto sa Distributed Git, kaya bago ka makapagpasya kung anong pamamaraan ng pag-branch ang gagamitin ng iyong susunod na proyekto, siguraduhing basahin ang kabanatang iyon.
Importanteng tandaan tuwing ginagawa mo lahat ng mga ito na ang mga branch na ito ay ganap na lokal. Kapag ikaw ay nag-branch at nag-merge, ang lahat ng bagay ay tinatapos lamang sa iyong Git na repositoryo — walang server na komunikasyon ang nagaganap.