-
1. Začetek
- 1.1 O nadzoru različic
- 1.2 Kratka zgodovina Gita
- 1.3 Kaj je Git?
- 1.4 Ukazna vrstica
- 1.5 Namestitev Gita
- 1.6 Prva nastavitev Gita
- 1.7 Pridobivanje pomoči
- 1.8 Povzetek
-
2. Osnove Git
- 2.1 Pridobivanje repozitorija Git
- 2.2 Snemanje sprememb v repozitorij
- 2.3 Pregled zgodovine potrditev
- 2.4 Razveljavljanje stvari
- 2.5 Delo z daljavami
- 2.6 Označevanje
- 2.7 Aliasi Git
- 2.8 Povzetek
-
3. Veje Git
- 3.1 Veje na kratko
- 3.2 Osnove vej in združevanja
- 3.3 Upravljanje vej
- 3.4 Poteki dela z vejami
- 3.5 Oddaljene veje
- 3.6 Ponovno baziranje
- 3.7 Povzetek
-
4. Git na strežniku
- 4.1 Protokoli
- 4.2 Pridobitev Gita na strežniku
- 4.3 Generiranje vaših javnih ključev SSH
- 4.4 Nastavitev strežnika
- 4.5 Prikriti proces Git
- 4.6 Pametni HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Možnosti gostovanja pri tretjih ponudnikih
- 4.10 Povzetek
-
5. Porazdeljeni Git
- 5.1 Porazdeljeni poteki dela
- 5.2 Prispevek k projektu
- 5.3 Vzdrževanje projekta
- 5.4 Povzetek
-
6. GitHub
-
7. Orodja Git
- 7.1 Izbira revizije
- 7.2 Interaktivno pripravljanje
- 7.3 Shranjevanje na varno (angl. stashing) in čiščenje
- 7.4 Podpisovanje vašega dela
- 7.5 Iskanje
- 7.6 Prepisovanje zgodovine
- 7.7 Demistifikacija ponastavitve
- 7.8 Napredno združevanje
- 7.9 Rerere
- 7.10 Razhroščevanje z Gitom
- 7.11 Podmoduli
- 7.12 Povezovanje v pakete
- 7.13 Zamenjava
- 7.14 Shramba poverilnic
- 7.15 Povzetek
-
8. Prilagoditev Gita
- 8.1 Konfiguracija Git
- 8.2 Atributi Git
- 8.3 Kljuke Git
- 8.4 Primer pravilnika, ki ga uveljavlja Git
- 8.5 Povzetek
-
9. Git in ostali sistemi
- 9.1 Git kot odjemalec
- 9.2 Migracija na Git
- 9.3 Povzetek
-
10. Notranjost Gita
- 10.1 Napeljava in keramika
- 10.2 Objekti Git
- 10.3 Reference Git
- 10.4 Packfiles (datoteke zmanjšanih podatkov)
- 10.5 Refspec
- 10.6 Protokoli prenosa
- 10.7 Vzdrževanje in obnovitev podatkov
- 10.8 Spremenljivke okolja
- 10.9 Povzetek
-
A1. Dodatek A: Git v drugih okoljih
- A1.1 Grafični vmesniki
- A1.2 Git v Visual Studio
- A1.3 Git v Visual Studio Code
- A1.4 Git v IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine
- A1.5 Git v Sublime Text
- A1.6 Git v Bashu
- A1.7 Git v Zsh
- A1.8 Git v Powershellu
- A1.9 Povzetek
-
A2. Dodatek B: Vdelava Gita v vašo aplikacijo
- A2.1 Git v ukazni vrstici
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Dodatek C: Ukazi Git
- A3.1 Nastavitev in konfiguracija
- A3.2 Pridobivanje in ustvarjanje projektov
- A3.3 Osnove posnetkov
- A3.4 Veje in združevanje
- A3.5 Deljenje in posodabljanje projektov
- A3.6 Pregled in primerjava
- A3.7 Razhroščevanje
- A3.8 Popravljanje
- A3.9 E-pošta
- A3.10 Zunanji sistemi
- A3.11 Administracija
- A3.12 Orodja za sisteme napeljave
7.2 Orodja Git - Interaktivno pripravljanje
Interaktivno pripravljanje
V tem razdelku si bomo ogledali nekaj interaktivnih ukazov Git, ki vam lahko pomagajo oblikovati potrditve tako, da vključujejo samo določene kombinacije in dele datotek. Ta orodja so koristna, če obsežno spreminjate več datotek in se odločite, da želite te spremembe razdeliti na več osredotočenih potrditev namesto ene velike in neurejene potrditve. Tako lahko zagotovite, da so vaše potrditve logične ločene spremembe in jih lahko razvijalci, s katerimi sodelujete, enostavno pregledajo.
Če zaženete git add
z možnostjo -i
ali --interactive
, Git vstopi v interaktivni način lupine in prikaže nekaj takega:
$ 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>
Vidite, da ta ukaz prikaže pogled na vaše področje priprave, ki je verjetno drugačen od tistega, ki ste ga navajeni — v osnovi je enak kot pri git status
, vendar malo bolj jedrnat in informativen.
Na levi strani prikaže spremembe, ki ste jih pripravili na področju za pripravo, na desni strani pa nepripravljene spremembe.
Po tem sledi del »Commands«, ki vam omogoča, da storite veliko stvari, kot sta priprava in odklop datotek, priprava delov datotek, dodajanje nezabeleženih datotek in prikazovanje razlik tistega, kar ste pripravili.
Dodajanje datotek v področje priprave in iz njega
Če vpišete u
ali 2
(za posodobitev) pri pozivu What now>
, boste vprašani, katere datoteke želite dati v pripravo:
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>>
Da daste v pripravo datoteki TODO
in index.html
, lahko vpišete številki:
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>>
*
poleg vsake datoteke pomeni, da je datoteka izbrana za pripravo.
Če pritisnete Enter, potem ko pri pozivu Update>>
niste ničesar vnesli, Git izbere vse izbrane dele in jih da za vas v področje priprave:
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
Zdaj lahko vidite, da sta datoteki TODO
in index.html
pripravljeni, medtem ko je pa datoteka simplegit.rb
še vedno izven področja priprave.
Če želite datoteko TODO
v tej fazi razveljaviti, uporabite možnost r
ali 3
(za razveljavitev):
*** 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
Če ponovno pogledate svoje stanje Gita, lahko vidite, da ste dali datoteko TODO
izven področja priprave:
*** 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
Za prikaz sprememb, ki ste jih dodali v pripravo, lahko uporabite ukaz d
ali 6
(za razliko).
Ta prikaže seznam datotek, ki so bile dodane v področje priprave, in lahko izberete tiste, katerih razlike želite videti.
To je precej podobno, kot bi izvedli ukaz git diff --cached
v ukazni vrstici:
*** 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">
S temi osnovnimi ukazi lahko uporabite interaktivni način za dodajanje in tako uporabljate svoje področje priprave veliko bolj enostavno.
Pripravljanje popravkov
Možno je narediti tudi, da Git doda v področje priprave samo posamezne dele datotek, ne pa celotnih datotek.
Na primer, če naredite dve spremembi v datoteki simplegit.rb
in želite dodati eno spremembo v področje priprave, druge pa ne, to storite v Gitu zelo enostavno.
V istem interaktivnem ukazu, kot je pojasnjeno v prejšnjem odstavku, vtipkajte p
ali 5
(za programski popravek).
Git vas bo vprašal, katere datoteke želite delno dodati v področje priprave, nato pa vam bo za vsak odsek izbrane datoteke prikazal delček razlike datoteke in vas enega za drugim vprašal, ali ga želite dodati v področje priprave:
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,?]?
V tem trenutku imate veliko možnosti.
Če vpišete ?
, vam bo izpisalo, kaj lahko naredite:
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
Na splošno boste vpisali y
ali n
, če želite vsak del datoteke shraniti v področje priprave, vendar je lahko koristno shraniti tudi vse kose v nekaterih datotekah, ali pa preskočiti odločitev za določen kos za kasneje.
Če del datoteke shranite v področje priprave in drugega dela ne, bo vaš izpis statusa videti takole:
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
Status datoteke simplegit.rb
je zanimiv.
Prikazuje, da so nekatere vrstice dane v pripravo in nekatere niso.
Delno ste dali to datoteko v pripravo.
V tem trenutku lahko zapustite interaktivni način dodajanja in začnete z git commit
, da potrdite delno pripravljene datoteke.
Prav tako vam ni treba biti v interaktivnem načinu, da izvedete delno pripravo datotek — lahko začnete enaki skript z uporabo git add -p
ali git add --patch
v ukazni vrstici.
Poleg tega lahko način popravka uporabite za delno ponastavljanje datotek z ukazom git reset --patch
, za izvlek delov datotek z ukazom git checkout --patch
in za shrambo delov datotek na varno z ukazom git stash save --patch
.
Več podrobnosti o vsakem od teh ukazov bomo predstavili, ko bomo prišli do naprednejše uporabe teh ukazov.