-
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
A3.3 Appendix C: Mga Kautusan ng Git - Pangunahing Snapshotting
Pangunahing Snapshotting
Para sa mga pangunahing proseso ng trabaho sa pag-aayos ng nilalaman at pag-commit nito sa iyong kasaysayan, mayroon lamang ilang mga pangunahing kautusan.
git add
Ang git add
na kautusan ay nagdadagdag ng nilalaman mula sa gumaganang direktoryo patungo sa lugar ng pag-stage (o “index”) para sa susunod na pag-commit.
Kapag ang kautusan ng git commit
ay gumana, bilang default tinitingnan lamang nito ang lugar ng pag-stage, kaya ang git add
ay ginagamit upang gawing eksakto kung ano ang nais mong anyo sa susunod na pag-commit ng snapshot.
Ang kautusan na ito ay sobrang mahalagang utos sa Git at nabanggit o ginamit ng maraming beses sa aklat na ito. Mabilis naming isasali ang mga dipangkaraniwang mga paggamit nito na maaring makita.
Una naming ipinakilala at ipaliwanag ang git add
nang detalyado sa Pagsubaybay sa Bagong mga File.
Binabanggit namin kung paano gamitin ito upang malutas ang pagsasalungat sa pagsasama sa Mga Pangunahing Salungatan sa Pag-Merge.
Natalakay din namin ang paggamit nito sa pag-stage lamang ng mga tukoy na bahagi ng isang nabagong file sa << _interactive_staging >>.
Sa panghuli, kokopyahin namin ito sa isang mababang antas sa Tree Objects, kaya makakakuha ka ng ideya kung ano ang ginagawa nito sa likod ng mga eksena.
git status
Sa git status
na kautusan ipapakita sa iyo ng ang iba’t ibang mga estado ng mga file sa iyong gumaganang direktoryo at sa lugar ng staging.
Alin sa mga file ang binago at unstaged at kung saan ang mga na staged ngunit hindi pa na commit.
Sa normal na anyo nito, ipapakita rin nito sa iyo ang ilang mga pangunahing pahiwatig kung paano maglipat ng mga file sa pagitan ng mga stage.
Una nating na pag-usapang ang status
sa << _checking_status >>, kapwa ang mga batayan at pinadaling mga form nito.
Habang ginagamit namin ito sa buong libro, halos lahat ng iyong magagawa sa git status
na utos ay sakop doon.
git diff
Ang kautusang git diff
ay ginagamit kapag nais mong makita ang mga pagkakaiba sa pagitan ng dalawang trees.
Ito ay maaaring pagkakaiba sa pagitan ng iyong gumaganang environment at ang iyong staging na lugar (git diff
mismo), sa pagitan ng iyong staging na lugar at ang iyong huling commit (git diff --staged
), o sa pagitan ng dalawang mga commit (`git diff master branchB `).
Una naming natalakay ang mga pangunahing paggamit ng git diff
sa << _git_diff_staged >>, kung saan ipinapakita namin kung paano makita kung ano ang mga pagbabago sa staged at kung ano ang hindi pa na staged.
Ginagamit namin ito upang tumingin para sa posibleng mga isyu sa whitespace bago gumawa ng - check
na opsyon sa << _commit_guidelines >>.
Nakita namin kung paano masuri ang mga pagkakaiba sa pagitan ng mga branch nang mas epektibo sa git diff A ... B
syntax sa << _what_is_introduced >>.
Ginagamit namin ito upang i-filter ang mga pagkakaiba sa whitespace sa -b
at kung paano ihambing ang iba’t ibang yugto ng mga magkakasalungat ng mga file gamit ang` --theirs`, --ours
at` --base` sa << _advanced_merging >>.
Sa panghuli, ginagamit namin ito upang epektibong ihambing ang mga pagbabago sa submodule sa --submodule
sa << _starting_submodules >>.
git difftool
Ang git difftool
na kautusan ay naglulunsad lamang ng isang panlabas na kasangkapan upang ipakita sa iyo ang pagkakaiba sa pagitan ng dalawang mga tree kung sakaling gusto mong gumamit ng iba pang bagay kaysa sa built in na git diff
na kautusan.
Binanggit lang namin ito sa Pagtingin sa iyong itinanghal at hindi itinanghal na mga pagbabago.
git commit
Ang git commit
na kautusan ay kumukuha sa lahat ng mga nilalaman ng file na itinanghal sa git add
at nagtatala ng isang bagong permanenteng snapshot sa database at pagkatapos ay inililipat ang branch pointer hanggang sa kasalukuyang branch nito.
Unang tinalakay natin ang mga pangunahing kaalaman sa pag-commit sa Pag-commit ng iyong mga Binago. Ipinakita din namin kung paano gamitin ang isang -a
na flag upang laktawan ang git add
na hakbang sa pang-araw-araw na daloy ng trabaho at kung paano gamitin ang -m
na flag upang pumasa ng isang mensaheng commit sa command line sa halip ng pagpapatakbo nito sa editor.
Sa _git_basics_chapter.asc tinalakay namin ang paggamit ng --amend na opsyon upang gawing muli ang pinakabagong commit.
Sa _git_branching.asc, pumunta kami sa mas maraming detalye tungkol sa kung ano ang ginagawa ng git at kung bakit ganito niya ginagawa.
Tiningnan namin kung paano mag-sign ng mga commit na cryptographically kasama ang -S
na flag sa Pag-sign ng mga Commit.
Panghuli, tinitingnan natin kung ano ang ginagawa ng git commit sa background at kung paano nito aktwal na ipinatupad sa Commit Objects.
git reset
Ang utos na git reset
ay pangunahing ginagamit upang i-undo ang mga bagay, parang maaari mong sabihin sa pamamagitan ng pandiwa. Ito ay gumagalaw sa paligid ng HEAD pointer at opsyonal na nagbabago sa index o sa lugar ng staging at maaari ring opsyonal na baguhin ang gumaganang direktoryo kung gagamitin mo ang --hard
. Ang pangwakas na opsyon ay posibleng magbura sa iyong tinatrabaho kung ginamit nang hindi tama, kaya tiyaking maunawaan mo ito bago gamitin.
Una naming epektibong tinalakay ang pinakasimpleng paggamit ng git reset sa Hindi pagyuyugto ng isang Yugtong File, kung saan ginagamit namin ito upang ma unstage isang file na pinatakbo ang git add
.
Pagkatapos ay tinalakay natin ito ng lubos ang detalye sa Ang Reset Demystified, na nakalaan sa pagpapaliwanag sa utos na ito.
Ginagamit namin ang git reset --hard
upang i-abort ang pagsanib sa Pag-abort ng Merge, kung saan ginagamit din namin ang git merge --abort
, na kung saan ay isang kaunting pagbabalut para sa git reset
command.
git rm
Ang git rm
command ay ginagamit upang tanggalin ang mga file mula sa lugar ng staging at gumaganang direktoryo para sa Git. Ito ay katulad ng git add
subalit ito ay magtatanggal ng isang file para sa susunod na commit.
Tinalakay namin ang utos na git rm
ng iilang detalye sa << _removing_files >>, kabilang ang paulit-ulit na pag-alis ng mga file at pag-aalis lamang ng mga file mula sa lugar ng staging ngunit iniiwan ang mga ito sa gumaganang direktoryo na may --cached
.
Ang tanging iba pang magkakaibang paggamit ng git rm
sa aklat ay nasa << _removing_objects >> kung saan ginagamit namin ng maikli at ipinaliwanag ang --ignore-unmatch
kapag nagpapatakbo ng git filter-branch
, na kung saan ay pasimpleng hindi nito mag-error-out kapag ang file na sinusubukan naming i-stage ay hindi umiiral.
Maaari itong maging kapaki-pakinabang para sa mga layunin ng pag-script.
git mv
Ang utos na git mv
ay isang manipis na kaginhawahan na utos upang maglipat ng isang file at pagkatapos ay patakbuhin ang` git add` sa bagong file at git rm
sa lumang file.
Binanggit lamang namin nang maikli ang utos na ito sa << _ git_mv >>.
git clean
Ang git clean
na utos ay ginagamit upang tanggalin ang mga hindi gustong file mula sa iyong gumaganang direktoryo.
Maaaring kabilang dito ang pag-alis ng pansamantalang mga artifact build o pagsamahin ang mga conflict na file.
Tinalakay namin ang karamihang mga pagpipilian at sitwasyon kung saan maaari mong gamitin ang git clean
na utos sa << _ git_clean >>.