-
1. Pričetek
- 1.1 O nadzoru različic
- 1.2 Kratka zgodovina Git-a
- 1.3 Osnove Git
- 1.4 The Command Line
- 1.5 Git namesitev
- 1.6 Prva namestitev Git-a
- 1.7 Pridobitev pomoči
- 1.8 Povzetek
-
2. Osnove Git
- 2.1 Pridobitev repozitorija Git
- 2.2 Snemanje sprememb repozitorija
- 2.3 Pregled zgodovine pošiljanja
- 2.4 Razveljavljanje stvari
- 2.5 Delo z daljavami
- 2.6 Označevanje
- 2.7 Git aliasi
- 2.8 Povzetek
-
3. Veje Git
- 3.1 Veje na kratko
- 3.2 Osnove vej in združevanja
- 3.3 Upravljanje vej
- 3.4 Potek dela z vejami
- 3.5 Oddaljene veje
- 3.6 Ponovno baziranje (rebasing)
- 3.7 Povzetek
-
4. Git na strežniku
- 4.1 Protokoli
- 4.2 Pridobiti Git na strežnik
- 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 Tretje osebne opcije gostovanja
- 4.10 Povzetek
-
5. Distribuirani Git
- 5.1 Distribuirani poteki dela
- 5.2 Prispevanje projektu
- 5.3 Vzdrževanje projekta
- 5.4 Povzetek
-
6. GitHub
-
7. Orodja Git
- 7.1 Revision Selection
- 7.2 Interactive Staging
- 7.3 Stashing and Cleaning
- 7.4 Signing Your Work
- 7.5 Searching
- 7.6 Rewriting History
- 7.7 Reset Demystified
- 7.8 Advanced Merging
- 7.9 Rerere
- 7.10 Debugging with Git
- 7.11 Submodules
- 7.12 Bundling
- 7.13 Replace
- 7.14 Credential Storage
- 7.15 Povzetek
-
8. Prilagoditev Git-a
- 8.1 Git Configuration
- 8.2 Git Attributes
- 8.3 Git kljuke
- 8.4 An Example Git-Enforced Policy
- 8.5 Povzetek
-
9. Git in drugi sistemi
- 9.1 Git kot klient
- 9.2 Migracija na Git
- 9.3 Povzetek
-
10. Notranjost Git-a
- 10.1 Napeljava in porcelan
- 10.2 Git Objects
- 10.3 Git References
- 10.4 Packfiles
- 10.5 The Refspec
- 10.6 Transfer Protocols
- 10.7 Maintenance and Data Recovery
- 10.8 Environment Variables
- 10.9 Povzetek
-
A1. Appendix A: Git v drugih okoljih
- A1.1 Grafični vmesniki
- A1.2 Git v Visual Studiu
- A1.3 Git v Eclipse
- A1.4 Git V Bash-u
- A1.5 Git v Zsh
- A1.6 Git v Powershell-u
- A1.7 Povzetek
-
A2. Appendix B: Vključevanje Git-a v vašo aplikacijo
- A2.1 Git v ukazni vrstici
- A2.2 Libgit2
- A2.3 JGit
-
A3. Appendix C: Git Commands
- A3.1 Setup and Config
- A3.2 Getting and Creating Projects
- A3.3 Basic Snapshotting
- A3.4 Branching and Merging
- A3.5 Sharing and Updating Projects
- A3.6 Inspection and Comparison
- A3.7 Debugging
- A3.8 Patching
- A3.9 Email
- A3.10 External Systems
- A3.11 Administration
- A3.12 Plumbing Commands
2.4 Osnove Git - Razveljavljanje stvari
Razveljavljanje stvari
V katerikoli fazi boste morda želeli nekaj razveljaviti. Tu bomo pregledali nekaj osnovnih orodij za razveljavljanje sprememb, ki ste jih naredili. Bodite previdni, ker ne morete vedno razveljaviti nekaterih od teh razveljavitev. To je eno izmed področij v Git-u, kjer lahko izgubite nekaj dela, če to naredite nepravilno.
Ena izmed pogostih razveljavitev se zgodi, ko prezgodaj pošljete in možno pozabite dodati nekaj datotek ali naredite zmedo z vašimi sporočili pošiljanja.
Če želite ponovno preizkusiti to pošiljanje, lahko poženete ukaz z opcijo --amend
:
$ git commit --amend
Ta ukaz vzame vašo področje vmesne faze in ga uporabi za pošiljanje. Če niste naredili sprememb od vašega zadnjega pošiljanja (na primer ste pognali ta ukaz takoj za prejšnjim pošiljanjem), potem bo vaš posnetek izgledal točno enako in vse, kar boste spremenili je vaše sporočilo pošiljanja.
Zažene se isti urejevalnik pošiljanja sporočila, vendar že vsebuje sporočilo vašega prejšnjega pošiljanja. Sporočilo lahko uredite enako kot vedno, vendar prepiše vaše prejšnje pošiljanje.
Kot primer, če pošljete in nato ugotovite, da ste pozabili dati spremembe v vmesno fazo v datoteki, katero želite dodati temu pošiljanju, lahko naredite nekaj takega:
$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend
Končate z enim ukazom - drugo pošiljanje zamenja rezultate prvega.
Povrnitev datoteke iz vmesne faze
Naslednji sekciji demonstrirata, kako prerekati vaše področje vmesne faze in spremembe delovneg direktorija.
Lep del je, da ukazi, ki ste jih uporabili za določanje stanja teh dveh področij vas tudi spominjajo, kako razveljaviti spremembe na njih.
Na primer, recimo, da ste spremenili dve datoteki in jih želite poslati kot dve ločeni spremembi, vendar po nesreči vpišete git add *
in date obe v vmesno fazo.
Kako lahko povrnete eno izmed dveh iz vmesne faze?
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
Točno pod tekstom “Changes to be committed”, pove, da uporabite git reset HEAD <file>...
za povrnitev iz vmesne faze.
Torej uporabimo ta nasvet za povrnitev datoteke CONTRIBuTING.md
iz vmesne faze:
$ 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 ni v vmesni fazi.
Note
|
Medtem ko |
Za sedaj ta čarobna molitev je vse, kar potrebujete vedeti o ukazu git reset
. Šli bomo v veliko večje podrobnosti o tem kaj reset
naredi in kako ga osvojiti, da dela res zanimive stvari v Reset Demystified.
Povrnitev sprememb spremenjene datoteke
Kaj če ugotovite, da ne želite obdržati sprememb v datoteki CONTRIBUTING.md
?
Kako jo lahko enostavno razveljavite - povrnete nazaj v stanje, kako je izgledala, ko ste zadnjič poslali (ali začetno klonirali ali kakorkoli ste jo dobili v vaš delovni direktorij)?
Na srečo vam prav tako git status
pove, kako to narediti.
V izpisu zadnjega primera področje pred vmesno fazo izgleda 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
Pove vam precej jasno, 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.
Important
|
Pomembno je razumeti, da je |
Če radi sledite spremembam, ki ste jih naredili na tej datoteki, vendar jo morate še vedno spraviti iz poti za sedaj, bomo šli skozi skrito shranjevanje in razvejanje v [ch03-git-branching]; to so splošno res boljši načini za to.
Pomnite, da karkoli je poslano v Git je lahko skoraj vedno povrnjeno.
Celo pošiljanja, ki so bila na vejah, ki so bile izbrisane ali pošiljanja, ki so bila prepisana z opcijo pošiljanja --amend
, so lahko povrnjena (glejte Data Recovery za povrnitev podatkov).
Vendar karkoli, kar izgubite in ni bilo nikoli poslano, verjetno nikoli ne boste več videli.