-
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
2.4 Osnove Git - Razveljavljanje stvari
Razveljavljanje stvari
V katerikoli fazi boste morda želeli nekaj razveljaviti. Tu bomo pregledali nekaj osnovnih orodij za razveljavitev sprememb, ki ste jih naredili. Bodite previdni, ker nekaterih od teh razveljavitev ne morete vedno povrniti. To je eno izmed redkih področij v Gitu, kjer lahko izgubite nekaj dela, če tega ne naredite pravilno.
Ena izmed pogostih razveljavitev se zgodi, ko prezgodaj potrdite in mogoče pozabite dodati nekaj datotek, ali pa naredite zmedo s svojimi sporočili potrditev.
Če želite ponovno narediti določeno potrditev, naredite dodatne spremembe, ki ste jih pozabili, nato jih dajte v področje priprave in jih ponovno potrdite z možnostjo --amend
:
$ git commit --amend
Ta ukaz sprejme vaše področje priprave in ga uporabi za potrditev. Če niste naredili sprememb od svojega zadnjega potrjevanja (na primer, ta ukaz ste pognali takoj za prejšnjo potrditvijo), potem bo vaš posnetek videti popolnoma enako in vse, kar boste spremenili, je vaše sporočilo potrditve.
Zažene se isti urejevalnik sporočila potrditve, vendar pa že vsebuje sporočilo vaše prejšnje potrditve. Sporočilo lahko uredite enako kot vedno, vendar bo prepisalo vašo prejšnjo potrditev.
Kot primer, če naredite potrditev in nato ugotovite, da ste v področje priprave pozabili dati spremembe datoteke, ki jo želite dodati tej potrditvi, lahko naredite nekaj takega:
$ git commit -m 'Initial commit'
$ git add forgotten_file
$ git commit --amend
Dobili boste eno potrditev — druga potrditev zamenja rezultate prve.
Opomba
|
Pomembno je razumeti, da ko spreminjate zadnjo potrditev, je ne popravljate, ampak jo popolnoma zamenjate z novo in izboljšano potrditvijo, ki staro potisne iz poti in postavi novo potrditev na njeno mesto. Praktično, kot da se prejšnja potrditev nikoli ni zgodila in ne bo se prikazala v zgodovini vašega repozitorija. Očitna korist spreminjanja potrditev je, da lahko naredite manjše izboljšave zadnje potrditve, ne da bi vaša zgodovina repozitorija postala razmetana s sporočili potrditev v obliki »Ups, pozabil sem dodati datoteko« ali »Zaboga, popravljam tipkarsko napako v zadnji potrditvi«. |
Opomba
|
Spreminjajte samo potrditve, ki so še vedno lokalne in še niso bile nikamor potisnjene. Spreminjanje že prej potisnjenih potrditev in prisilno potiskanje veje bo povzročilo težave za vaše sodelavce. Če želite izvedeti več o tem, kaj se zgodi, ko to storite, in kako lahko to popravite, če ste na sprejemni strani, preberite Nevarnosti ponovnega baziranja. |
Povrnitev datoteke iz področja priprave
Naslednja razdelka demonstrirata, kako delati s spremembami vašega področja priprave in delovnega direktorija.
Dober del je, da vas ukaz, ki ste ga uporabili za določanje stanja teh dveh področij, tudi opominja, kako razveljaviti spremembe na njih.
Na primer, recimo, da ste spremenili dve datoteki in jih želite potrditi kot dve ločeni spremembi, vendar po nesreči vpišete git add *
in daste obe v pripravo.
Kako lahko povrnete eno izmed dveh iz področja priprave?
Ukaz git status
vas opomni:
$ 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
Ravno pod besedilom »Changes to be committed«, pravi, da uporabite git reset HEAD <file>…
za povrnitev iz področja priprave.
Torej uporabimo ta nasvet za povrnitev datoteke CONTRIBUTING.md
iz priprave:
$ 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
Ukaz je nekoliko čuden, vendar deluje.
Datoteka CONTRIBUTING.md
je spremenjena, vendar ponovno izven področja priprave.
Opomba
|
Velja, da je ukaz |
Za sedaj je ta čarobni priklic vse, kar morate vedeti o ukazu git reset
.
V večje podrobnosti, o tem kaj reset
naredi in kako ga osvojiti, da dela res zanimive stvari, bomo šli v razdelku Demistifikacija ponastavitve.
Povrnitev spremenjene datoteke
Kaj če ugotovite, da ne želite obdržati sprememb v datoteki CONTRIBUTING.md
?
Kako jo lahko enostavno razveljavite — povrnete nazaj v stanje, kakor je bila videti, ko ste zadnjič naredili potrditev (ali prvotno klonirali, ali kakorkoli ste jo dobili v svoj delovni direktorij)?
Na srečo vam git status
prav tako pove, kako to narediti.
V izpisu zadnjega primera je področje izven priprave videti takole:
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
Precej jasno vam pove, kako zavreči spremembe, ki ste jih naredili. Naredimo, kar pravi:
$ git checkout -- CONTRIBUTING.md
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
renamed: README.md -> README
Vidite lahko, da so bile spremembe povrnjene.
Pomembno
|
Pomembno je razumeti, da je |
Če bi radi ohranili spremembe, ki ste jih naredili na tej datoteki, vendar se je morate za zdaj še vedno znebiti, bomo šli skozi shranjevanje na varno in razvejanje v Veje Git; to so v splošnem boljši načini za to.
Pomnite, da karkoli je potrjeno v Git, je moč skoraj vedno povrniti.
Celo potrditve, ki so bile na vejah, ki so bile izbrisane, ali potrditve, ki so bile prepisane s potrjevanjem --amend
, se lahko povrne (glejte razdelek Obnovitev podatkov za povrnitev podatkov).
Vendar česarkoli, kar izgubite in kar ni bilo nikoli potrjeno, verjetno nikoli ne boste več videli.
Razveljavljanje stvari z git restore
Git različica 2.23.0 je predstavila nov ukaz: git restore
.
To je v bistvu alternativa za git reset
, ki smo ga ravnokar predelali.
Od različice Git 2.23.0 naprej bo Git uporabljal git restore
namesto git reset
za številne operacije razveljavitev.
Ponovimo svoje korake in razveljavimo stvari z git restore
namesto git reset
.
Preklic datoteke v pripravi z ukazom git restore
Naslednja razdelka prikazujeta, kako delati s spremembami v vašem področju priprave in delovnem direktoriju z git restore
.
Dober del je, da vas ukaz, ki ga uporabljate za določanje stanja teh dveh področij, hkrati tudi opominja, kako razveljaviti spremembe.
Na primer, recimo, da ste spremenili dve datoteki in ju želite potrditi kot dve ločeni spremembi, vendar napačno vnesete git add *
in obe daste v področje priprave.
Kako lahko razveljavite eno od teh dveh datotek?
Ukaz git status
vas opomni:
$ git add *
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: CONTRIBUTING.md
renamed: README.md -> README
Takoj pod besedilom »Changes to be committed« piše, da uporabite git restore --staged <file>…
za razveljavitev področja priprave.
Zato uporabimo ta nasvet, da razveljavimo datoteko CONTRIBUTING.md
:
$ git restore --staged CONTRIBUTING.md
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
renamed: README.md -> README
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: CONTRIBUTING.md
Datoteka CONTRIBUTING.md
je spremenjena, vendar zopet izven področja priprave.
Razveljavljanje spremenjene datoteke z ukazom git restore
Kaj pa, če ugotovite, da ne želite obdržati sprememb na datoteki CONTRIBUTING.md
?
Kako lahko to enostavno razveljavite — vrnete nazaj, kakor je bilo nazadnje potrjeno (ali sprva klonirano ali na kakšen drug način pridobljeno v delovni direktorij)?
Na srečo vam git status
prav tako pove, kako to storiti.
V izpisu zadnjega primera je področje izven priprave videti takole:
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: CONTRIBUTING.md
Jasno vam pove, kako zavreči spremembe, ki ste jih naredili. Naredimo to, kar pravi:
$ git restore CONTRIBUTING.md
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
renamed: README.md -> README
Pomembno
|
Pomembno je razumeti, da je |