-
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
2.4 Mga Pangunahing Kaalaman sa Git - Pag-Undo ng mga Bagay
Pag-Undo ng mga Bagay
Sa anumang yugto, baka gusto mong i-undo ang isang bagay. Dito, susuriin natin ang iilang mga pangunahing mga kasangkapan para sa pag-undo ng mga pagbabago na ginawa mo. Mag-ingat ka, dahil hindi mo laging i-undo ang ilan sa mga undo na ito. Ito ay isa sa ilang mga lugar sa Git na kung saan maaari kang mawalan ng trabaho kung mali ang pagkagawa mo nito.
Isa sa mga karaniwang mga undo ay magaganap kapag gumawa ka ng commit na masyadong maaga at marahil kalimutan na magdagdag ng ilang mga file, o ikaw ay gumulo sa iyong commit na mensahe.
Kung nais mong gawing muli ang commit na iyon, gawin ang karagdagang mga pagbabago na nakalimutan mo, i-yugto sila, at commit uli gamit ang --amend
option:
$ git commit --amend
Ang utos na ito ay kumukuha ng iyong staging na lugar at ginagamit ito para sa commit. Kung wala kang pagbabago mula noong iyong huling commit (halimbawa, agad mong pinatakbo ang utos na ito pagkatapos ng iyong nakaraan na commit), pagkatapos ang iyong snapshot ay magiging eksaktong magkatulad, at lahat ng iyong babaguhin ay ang iyong commit na mensahe.
Ang parehong commit-mensahe na editor ay nag-aapoy, ngunit naglalaman na ito ng mensahe sa nakaraan mong commit. Maaari mong i-edit ang mensahe na katulad palagi, ngunit ito ay nag-overwrite ng iyong huling commit.
Bilang isang halimbawa, kung mag-commit ka at pagkatapos ay mapagtanto mong nakalimutan ang yugto sa mga pagbabago sa isang file na nais mong idagdag sa commit na ito, maaari mong gawin ang isang bagay na tulad nito:
$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend
Nagtatapos ka ng may isang solong commit — ang pangalawang commit ay pumapalit sa mga resulta ng una.
Mahalagang unawaan na kapag binabago mo ang iyong huling commit, hindi ka masyadong nag-aayos nito bilang kapalit na ganap na may bago, pinagbuti na commit na nagpapatuloy sa lumang commit na wala sa daan at inilalagay ang bagong commit sa lugar na ito. Mabisa, ito ay kung ang dating commit ay hindi nangyari, at ito ay hindi nagpapakita ng iyong kasaysayan ng repositoryo.
Ang malinaw na halaga sa pagbabago ng mga commit ay gumawa ng mga menor na mga pagpapabuti sa iyong huling commit, wala nang kalat sa iyong kasaysayan ng repositoryo na may commit na mga mensahe ng form, “Oops, forgot to add a file” o “Darn, fixing a typo in last commit”.
Hindi pagyuyugto ng isang Yugtong File
Ang susunod na dalawang seksyon ay ipinapakita kung papaano magtrabaho sa iyong yugtong lugar at tinatrabahong direktoryo na mga pagbabago.
Ang ganda ng bahagi ay ang utos upang matukoy ang kalagayan ng dalawang lugar na iyon na nagpapaalala rin sa iyo kung papaano magbabago sa kanila.
Halimbawa, sabihin natin na ang nabago na dalawang file at nais na gawin ang commit na sila bilang dalawang hiwalay na pagbabago, ngunit hindi mo sinasadya ang pag-type ng git add *
at yugto silang pareho.
Paano ka mag-unstage sa isa sa dalawa?
Ang git status
na utos na nagpapaalala sa iyo:
$ git add *
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
renamed: README.md -> README
modified: CONTRIBUTING.md
Sa baba ng “Changes to be committed” na teksto, sinasabi nito ang paggamit git reset HEAD <file>...
sa unstage.
Kaya, gamitin natin ang payo na iyon upang i-unstage ang CONTRIBUTING.md
na file:
$ git reset HEAD CONTRIBUTING.md
Unstaged changes after reset:
M CONTRIBUTING.md
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
renamed: README.md -> README
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: CONTRIBUTING.md
Ang utos ay medyo kakaiba, ngunit ito ay gumagana.
Ang CONTRIBUTING.md
na file ay binago ngunit muling na unstaged.
Totoo iyon na ang git reset
ay maaaring isang mapanganib na utos, lalo na kung ibinigay mo ang --hard
na flag.
Gayunpaman, sa senaryo na inilarawan sa itaas, ang file sa iyong tinatrabahong direktoryo ay hindi hinawakan, kaya medyo ligtas.
Sa ngayon ito ay salamangka ng pagsang-ayon ay ang lahat na iyong kailangan na malaman tungkol sa git reset
na utos.
Puntahan natin ang mas detalye na tungkol sa ano ang reset
na gagawin at kung papaano ito i-master upang gawin talaga ang kawili-wiling mga bagay sa Ang Reset Demystified.
Ang Pagbalik sa Pagbago ng Binagong File
Paano kung napagtanto mo na ayaw mong panatilihin ang iyong pagbabago sa CONTRIBUTING.md
na file?
Paano mo napadali ang pagbalik sa pagbago nito — ibalik ito pabalik sa kung ano ang mukha nito bago ka huling na-commit (o nagsimula na naka-clone, o gayunpaman nakuha mo ito sa iyong tinatrabaho na direktoryo)?
Sa kabutihang palad, git status
nagsasabi sa iyo kung paano gawin iyon, din.
Sa huling halimbawa ng output, ang unstaged na lugar ay mukhang ganito:
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: CONTRIBUTING.md
Ito ay nagsasabi sa iyo ng medyo malinaw kung papaano itiwalag ang mga pagbabago na iyong ginawa. Gawin natin ang sinasabi nito:
$ git checkout -- CONTRIBUTING.md
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
renamed: README.md -> README
Nakikita mo na ang mga pagbabago ay naibalik na.
Ito ay mahalagang maunawaan na ang git checkout -- <file>
ay isang delikadong utos.
Anumang mga pagbabago na iyong ginawa sa file ay mawawala — Ang Git ay naka-kopya ng ibang file sa ganito.
Huwag kailanman gumamit sa utos maliban kung ikaw ay talagang alam na hindi mo gusto ang file.
Kung nais mong panatilihin ang pagbabago na nagawa mo sa file na iyon ngunit kailangan mo pa rin na lumabas daanan sa ngayon, pupunta tayo sa stashing at branching sa Pag-branch ng Git; ang mga ito ay pangkalahatang mas mahusay na paraan upang pumunta.
Tandaan, kahit ano ang na-commit sa Git ay maaaring halos palaging mababawi.
Kahit na ang mga commit na nasa branch na natanggal na o mga commit ay napalitan na ng --amend
ang commit ay pwedeng mababawi (tingnan Pagbalik ng Datos para sa pagbawi ng datos).
Gayunpaman, anumang bagay ang iyong mawala na hindi pa na-commit ay malamang hindi na makikita muli.