-
1. Aan die slag
- 1.1 Oor Weergawebeheer
- 1.2 Wat is Git?
- 1.3 Die Opdragreël
- 1.4 Git Installeer
- 1.5 Git klaarmaak vir eerste gebruik
- 1.6 Hulp Verkry
- 1.7 Opsomming
-
2. Git Basics
-
3. Git Branching
-
4. Git on the Server
- 4.1 Die Protokolle (The Protocols)
- 4.2 Git op 'n Bediener kry (Getting Git on a Server)
- 4.3 Jou Publieke SSH-sleutel Genereer (Generating Your SSH Public Key)
- 4.4 Die Bediener Opstel (Setting Up the Server)
- 4.5 Git Daemon
- 4.6 Slim HTTP (Smart HTTP)
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Derdeparty-gasheuroplossings (Third-Party Hosting Solutions)
- 4.10 Summary
-
5. Distributed Git
-
6. GitHub
-
7. Git Tools
- 7.1 Hersieningseleksie (Revision Selection)
- 7.2 Interaktiewe Voorbereiding (Interactive Staging)
- 7.3 Bêre en Skoonmaak (Stashing and Cleaning)
- 7.4 Ondertekening van Jou Werk (Signing Your Work)
- 7.5 Soek (Searching)
- 7.6 Herskryf van Geskiedenis (Rewriting History)
- 7.7 Reset Ontmystifiseer (Reset Demystified)
- 7.8 Gevorderde Saamsmelting (Advanced Merging)
- 7.9 Rerere
- 7.10 Ontfouting met Git (Debugging with Git)
- 7.11 Submodules
- 7.12 Bundeling (Bundling)
- 7.13 Vervang (Replace)
- 7.14 Die Stoor van Aanmeldbewyse (Credential Storage)
- 7.15 Summary
-
8. Customizing Git
-
9. Git and Other Systems
- 9.1 Git as a Client
- 9.2 Migrating to Git
- 9.3 Summary
-
10. Git Internals
7.2 Git Tools - Interaktiewe Voorbereiding (Interactive Staging)
Interaktiewe Voorbereiding (Interactive Staging)
In hierdie afdeling sal jy kyk na 'n paar interaktiewe Git-opdragte wat jou kan help om jou vasleggings (commits) so saam te stel dat dit slegs sekere kombinasies en dele van lêers insluit. Hierdie gereedskap is nuttig as jy 'n aantal lêers omvattend wysig, en dan besluit dat jy wil hê daardie veranderings moet in verskeie gefokusde vasleggings verdeel word in plaas van een groot, morsige vaslegging. Op hierdie manier kan jy seker maak jou vasleggings is logies aparte veranderingsette (changesets) en kan maklik hersien word deur die ontwikkelaars wat saam met jou werk.
As jy git add met die -i of --interactive opsie uitvoer, gaan Git in 'n interaktiewe dop-modus (interactive shell mode) in, wat iets soos die volgende vertoon:
$ 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: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp
What now>
Jy kan sien dat hierdie opdrag vir jou 'n heel ander blik op jou voorbereidingsarea (staging area) wys as waaraan jy waarskynlik gewoond is — basies dieselfde inligting wat jy met git status kry, maar net 'n bietjie meer bondig en insiggewend.
Dit lys die veranderings wat jy voorberei (staged) het aan die linkerkant, en onvoorbereide (unstaged) veranderings aan die regterkant.
Hierna volg 'n “Commands” afdeling, wat jou toelaat om 'n aantal dinge te doen soos die voorbereiding en ongedaan maak van voorbereiding (staging and unstaging) van lêers, die voorbereiding van dele van lêers, die byvoeging van onopgespoorde (untracked) lêers, en die vertoon van diffs van dit wat voorberei is.
Voorbereiding en Ontvoorbereiding van Lêers (Staging and Unstaging Files)
As jy u of 2 (vir update) by die What now> por (prompt) tik, word jy gevra watter lêers jy wil voorberei:
What now> u
staged unstaged path
1: unchanged +0/-1 TODO
2: unchanged +1/-1 index.html
3: unchanged +5/-1 lib/simplegit.rb
Update>>
Om die TODO en index.html lêers voor te berei, kan jy die nommers tik:
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>>
Die * langs elke lêer beteken die lêer is gekies om voorberei te word.
As jy Enter druk nadat jy niks by die Update>> por getik het nie, neem Git enigiets wat gekies is en berei dit vir jou voor:
Update>>
updated 2 paths
*** Commands ***
1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp
What now> s
staged unstaged path
1: +0/-1 nothing TODO
2: +1/-1 nothing index.html
3: unchanged +5/-1 lib/simplegit.rb
Nou kan jy sien dat die TODO en index.html lêers voorberei (staged) is en die simplegit.rb lêer steeds onvoorbereid (unstaged) is.
As jy die voorbereiding van die TODO lêer op hierdie stadium ongedaan wil maak (unstage), gebruik jy die r of 3 (vir revert) opsie:
*** Commands ***
1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp
What now> r
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
As jy weer na jou Git-status kyk, kan jy sien dat jy die TODO lêer onvoorbereid (unstaged) gemaak het:
*** Commands ***
1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp
What now> s
staged unstaged path
1: unchanged +0/-1 TODO
2: +1/-1 nothing index.html
3: unchanged +5/-1 lib/simplegit.rb
Om die diff te sien van wat jy voorberei het, kan jy die d of 6 (vir diff) opdrag gebruik.
Dit wys vir jou 'n lys van jou voorbereide lêers, en jy kan dié kies waarvoor jy graag die voorbereide diff wil sien.
Dit is baie soos om git diff --cached op die opdragreël te spesifiseer:
*** Commands ***
1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp
What now> d
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">
Met hierdie basiese opdragte kan jy die interaktiewe byvoeg-modus (interactive add mode) gebruik om jou voorbereidingsarea 'n bietjie makliker te hanteer.
Voorbereiding van Pleisters (Staging Patches)
Dit is ook moontlik vir Git om sekere dele van lêers voor te berei en nie die res nie.
Byvoorbeeld, as jy twee veranderings aan jou simplegit.rb lêer maak en een daarvan wil voorberei en nie die ander nie, is dit baie maklik om in Git te doen.
Vanuit dieselfde interaktiewe por wat in die vorige afdeling verduidelik is, tik p of 5 (vir patch).
Git sal jou vra watter lêers jy gedeeltelik wil voorberei; dan, vir elke afdeling van die gekose lêers, sal dit brokke (hunks) van die lêer-diff vertoon en vra of jy dit wil voorberei, een vir een:
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,?]?
Jy het baie opsies op hierdie stadium.
Deur ? te tik, word 'n lys gewys van wat jy kan doen:
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
Oor die algemeen sal jy y of n tik as jy elke brok (hunk) wil voorberei, maar om almal in sekere lêers voor te berei of 'n besluit oor 'n brok tot later oor te slaan, kan ook nuttig wees.
As jy een deel van die lêer voorberei en 'n ander deel onvoorbereid laat, sal jou status-afvoer soos volg lyk:
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
Die status van die simplegit.rb lêer is interessant.
Dit wys vir jou dat 'n paar reëls voorberei (staged) is en 'n paar onvoorbereid is.
Jy het hierdie lêer gedeeltelik voorberei.
Op hierdie punt kan jy die interaktiewe byvoegingskrip (interactive adding script) verlaat en git commit uitvoer om die gedeeltelik voorbereide lêers vas te lê.
Jy hoef ook nie in die interaktiewe byvoeg-modus te wees om die gedeeltelike lêer-voorbereiding te doen nie — jy kan dieselfde skrip begin deur git add -p of git add --patch op die opdragreël te gebruik.
Verder kan jy die pleistermodus (patch mode) gebruik om lêers gedeeltelik terug te stel met die git reset --patch opdrag, om dele van lêers uit te check met die git checkout --patch opdrag, en om dele van lêers te bêre met die git stash save --patch opdrag.
Ons sal in meer besonderhede op elkeen hiervan ingaan soos ons by meer gevorderde gebruike van hierdie opdragte kom.