-
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
7.2 Mga Git na Kasangkapan - Staging na Interactive
Staging na Interactive
Sa seksyon na ito, ikaw ay tumitingin sa iilang interactive na Git na mga utos na maaaring makatulong sayo na napadali ang pag-craft ng iyong mga commit upang isama lamang ang tiyak na mga kumbinasyon at mga parte ng mga file. Itong mga kasangkapan ay kapaki-pakinabang kung ikaw ay nakapagbago ng bilang ng mga file at pagkatapos nagpasya na gusto mo ang mga pagbabago na iyon ay nasa ilang naka-focus na mga commit sa halip na isang malaking magulo na commit. Sa ganitong paraan, maaari mong tiyakin na ang iyong mga commit ay lohikal na hiwalay ang mga changeset at madaling masusuri ng mga developer na tumatrabaho kasama ka.
Kung ikaw ay magpatakbo ng git add
na may -i
o --interactive
na opsyon, ang Git ay pumapasok sa isang interactive na shell mode, na nagpapakita na isang bagay na tulad nito:
$ git add -i
staged unstaged path
1: unchanged +0/-1 TODO
2: unchanged +1/-1 index.html
3: unchanged +5/-1 lib/simplegit.rb
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now>
Makikita mo na ang utos na ito ay nagpapakita sayo ng isang mas kakaibang hitsura ng iyong staging na lugar kaysa nakagawiang paggamit nito — talagang, ang parehong impormasyon na iyong makukuha gamit ang git status
kung saan ay medyo maikli at makabuluhan.
Ito ay naglilista ng mga pagbabago na iyong na-stage sa kaliwa at mga hindi na stage na mga pagbabago sa iyong kanan.
Pagkatapos ito ay mayroon ding isang “Commands” na seksyon, na kung saan ay nagpapahintulot sayo na gawin ang iilang mga bagay katulad ng staging at unstaging na mga file, ang staging na mga parte ng mga file, ang pagdagdag ng untracked na mga file, at ang pagpakita ng mga diff sa kung ano ang na-staged.
Ang Pag-staging at Unstaging na mga File
Kung ikaw ang nag-type ng 2
o u
sa What now>
prompt, ikaw ay sinesenyasan kung anong mga file na gusto mong i-stage:
What now> 2
staged unstaged path
1: unchanged +0/-1 TODO
2: unchanged +1/-1 index.html
3: unchanged +5/-1 lib/simplegit.rb
Update>>
Sa pag-stage ng TODO
at index.html
na mga file, maaari kang mag-type ng mga numero:
Update>> 1,2
staged unstaged path
* 1: unchanged +0/-1 TODO
* 2: unchanged +1/-1 index.html
3: unchanged +5/-1 lib/simplegit.rb
Update>>
Ang *
na susunod sa bawat file ay nangangahulugan na ang file ay napili na i-stage.
Kung ikaw ay pumindot sa Enter pagkatapos mag-type ng wala sa Update>>
na prompt, ang Git kumukulang kung ano ang napili at i-stage ito para sa iyo:
Update>>
updated 2 paths
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now> 1
staged unstaged path
1: +0/-1 nothing TODO
2: +1/-1 nothing index.html
3: unchanged +5/-1 lib/simplegit.rb
Ngayon ay maaari mong makita ang TODO
at index.html
na mga file na nai-stage at ang simplegit.rb
na file ay nanatiling naka-unstaged.
Kung gusto mong i-unstage ang TODO
na file mula rito, gamitin mo ang 3
o r
(para bumalik) na opsyon:
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now> 3
staged unstaged path
1: +0/-1 nothing TODO
2: +1/-1 nothing index.html
3: unchanged +5/-1 lib/simplegit.rb
Revert>> 1
staged unstaged path
* 1: +0/-1 nothing TODO
2: +1/-1 nothing index.html
3: unchanged +5/-1 lib/simplegit.rb
Revert>> [enter]
reverted one path
Paghahanap muli sa katayuan ng iyong Git, makikita mo na nai-unstaged mo ang TODO
na file:
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now> 1
staged unstaged path
1: unchanged +0/-1 TODO
2: +1/-1 nothing index.html
3: unchanged +5/-1 lib/simplegit.rb
Upang tingnan ang diff ng iyong nai-stage, maaari kang gumamit ng 6
o d
(para sa diff) na utos.
Ito ay nagpapakita sa iyo ng isang listahan sa iyong na-stage na mga file, at maaari kang pumili ng isa lang para gusto mong makita ang na-stage diff.
Ito ay maraming tulad ng pagtukoy sa git diff --cached
sa command line:
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now> 6
staged unstaged path
1: +1/-1 nothing index.html
Review diff>> 1
diff --git a/index.html b/index.html
index 4d07108..4335f49 100644
--- a/index.html
+++ b/index.html
@@ -16,7 +16,7 @@ Date Finder
<p id="out">...</p>
-<div id="footer">contact : support@github.com</div>
+<div id="footer">contact : email.support@github.com</div>
<script type="text/javascript">
Sa mga pangunahing mga utos, maaari mong gamitin ang interactive na pagdagdag na mode upang makikitungo sa iyong staging na lugar na mas madali.
Ang mga Patch ng Staging
Ito rin ay posible para sa Git na i-stage ang tiyak na mga parte ng mga file at hindi ang lahat.
Halimbawa, kung ikaw ay gumawa ng dalawang pagbabago sa iyong simplegit.rb
na file at gusto mong i-stage ang isa sa kanila at hindi ang iba, sa paggawa nito ay isang pinakamadali sa Git.
Mula sa parehong interactive prompt ay ipinaliwanag sa nakaraang seksyon, i-type ang 5
o p
(para sa patch).
Ang Git ay magtatanong kung anong mga file ang gusto mo na i-bahagyang i-stage; pagkatapos, para sa bawat seksyon sa napiling mga file, ito ay magpakita ng mga hunk sa file na diff at magtanong na kung gusto mong i-stage sila, isa-isa:
diff --git a/lib/simplegit.rb b/lib/simplegit.rb
index dd5ecc4..57399e0 100644
--- a/lib/simplegit.rb
+++ b/lib/simplegit.rb
@@ -22,7 +22,7 @@ class SimpleGit
end
def log(treeish = 'master')
- command("git log -n 25 #{treeish}")
+ command("git log -n 30 #{treeish}")
end
def blame(path)
Stage this hunk [y,n,a,d,/,j,J,g,e,?]?
Ikaw ay merong maraming mga opsyon sa puntong ito.
I-type ang ?
na magpapakita ng listahan kung ano ang gagawin:
Stage this hunk [y,n,a,d,/,j,J,g,e,?]? ?
y - stage this hunk
n - do not stage this hunk
a - stage this and all the remaining hunks in the file
d - do not stage this hunk nor any of the remaining hunks in the file
g - select a hunk to go to
/ - search for a hunk matching the given regex
j - leave this hunk undecided, see next undecided hunk
J - leave this hunk undecided, see next hunk
k - leave this hunk undecided, see previous undecided hunk
K - leave this hunk undecided, see previous hunk
s - split the current hunk into smaller hunks
e - manually edit the current hunk
? - print help
Sa pangkalahatan, ikaw ay mag-type ng y
o n
kung gusto mong i-stage ang bawat hunk, ngunit ang pag-stage sa lahat sa kanila ng tiyak na mga file o paglaktaw sa isang hunk na desisyon hanggang mamaya ay maaaring makatulong din.
Kung ikaw ay mag-stage ng isang parte ng file at iwan ang ibang parte na naka-unstage, ang iyong katayuan sa output ay magmukhang ganito:
What now> 1
staged unstaged path
1: unchanged +0/-1 TODO
2: +1/-1 nothing index.html
3: +1/-1 +4/-0 lib/simplegit.rb
Ang katayuan ng simplegit.rb
na file ay kawili-wili.
Ito ay nagpapakita sa iyo na isang pares ng mga linya ay na-stage at ang isang pares ay naka-unstage.
Ikaw ay bahagyang na-stage ang file na ito.
Sa puntong ito, maaari mong lumabas sa interactive na pagdagdag na script at ipatakbo ang git commit
upang i-commit ang bahagyang naka-stage na mga file.
Ikaw din ay hindi nangangailangan na naka-interactive na nagdagdag na mode upang gawin ang bahagyang-file na staging — kaya mong simulan ang parehong script sa pamamagitan ng paggamit ng git add -p
o git add --patch
sa command line.
At saka, maaari mong gamitin ang patch mode para sa bahagyang pag-reset ng mga file na gamit ang git reset --patch
na utos, para sa pagsusuri ng mga parte ng mga file na may git checkout --patch
na utos at para sa pag-stash ng mga parte ng mga file na may git stash save --patch
na utos.
Pupunta tayo sa mas detalyado sa bawat na mga ganito hanggang tayo ay nasa mas advance na paggamit sa mga utos na ito.