-
1. Kom igÄng
- 1.1 Om versionshantering
- 1.2 En kort historik av Git
- 1.3 Vad Àr Git?
- 1.4 Kommandoraden
- 1.5 Installera Git
- 1.6 AnvÀnda Git för första gÄngen
- 1.7 FÄ hjÀlp
- 1.8 Sammanfattning
-
2. Grunder i Git
- 2.1 Skaffa ett Git-förvar
- 2.2 Spara Àndringar till förvaret
- 2.3 Visa historiken
- 2.4 Ă ngra saker
- 2.5 Jobba med fjÀrrförvar
- 2.6 Taggning
- 2.7 Git alias
- 2.8 Sammanfattning
-
3. Git förgreningar
-
4. Git pÄ servern
- 4.1 Protokollen
- 4.2 Skaffa Git pÄ en server
- 4.3 Generera din publika SSH-nyckel
- 4.4 Konvigurera servern
- 4.5 Git Daemonen
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Alternativ tillhandahÄllna av tredje part
- 4.10 Sammanfattning
-
5. Distribuerade Git
-
6. GitHub
-
7. Git Tools
- 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 Summary
-
8. Customizing Git
- 8.1 Git Configuration
- 8.2 Git Attributes
- 8.3 Git Hooks
- 8.4 An Example Git-Enforced Policy
- 8.5 Summary
-
9. Git and Other Systems
- 9.1 Git as a Client
- 9.2 Migrating to Git
- 9.3 Summary
-
10. Git Internals
- 10.1 Plumbing and Porcelain
- 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 Summary
-
A1. Bilaga A: Git in Other Environments
- A1.1 Graphical Interfaces
- A1.2 Git in Visual Studio
- A1.3 Git in Eclipse
- A1.4 Git in Bash
- A1.5 Git in Zsh
- A1.6 Git in PowerShell
- A1.7 Summary
-
A2. Bilaga B: Embedding Git in your Applications
- A2.1 Command-line Git
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Bilaga 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 Grunder i Git - Ă ngra saker
Ă ngra saker
Det finns tillfÀllen dÄ du kanske vill Ängra nÄgot. HÀr kommer vi att titta pÄ nÄgra fÄ grundlÀggande verktyg för att Ängra Àndringar du gjort. Var försiktig, för att du kan inte alltid Ängra nÄgot som du Ängrat. Detta Àr ett av nÄgra fÄ omrÄden i Git dÀr du faktiskt kan förlora nÄgot om du gör det fel.
En av de vanligaste sakerna man vill Ängra Àr ifall du sparar en version för tidigt och kanske glömmer att lÀgga till filer, alternativt om du skriver fel i ditt versionsmeddelande.
Om du vill göra om versionen, göra ytterligare Àndringar, preparera dem och skapa en ny version igen, sÄ kan du anvÀnda valet --amend
:
$ git commit --amend
Kommandot tar din preparationsyta och anvÀnder den för versionen. Om du inte gjort nÄgra Àndringar sedan din förra version (till exempel om du kör kommandot direkt efter att du skdapat en version) kommer ögonblicksbilden att se identisk ut, och allt du kan Àndra Àr ditt versionsmeddelande.
Samma editor som du anvÀnde nÀr du gjorde din förra version öppnas, men den innehÄller dÄ ditt förra versionsmeddelande. Du kan Àndra meddelandet som alltid, men det skriver över din tidigare sparade version.
Som exempel, om du sparar en version och sedan inser att du glömde lÀgga till Àndringar i en fil du ville ha med i versionen sÄ kan du göra nÄgot liknande detta:
$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend
I slutĂ€ndan fĂ„r du en enda versionâââden andra versionen ersĂ€tter resultatet av den första.
Notera
|
Det Ă€r viktigt att förstĂ„ att nĂ€r du gör ett tillĂ€gg till din senaste version, sĂ„ ersĂ€tter du egentligen din gamla version med en helt ny, förbĂ€ttrad version som knuffar undan den gamla versionen och lĂ€gger den nya versionen i dess stĂ€lle. I praktiken Ă€r det som att den föregĂ„ende versionen aldrig fanns, och den kommer inte heller att visas i din versionshistorik. Det uppenbara vĂ€rdet i att göra tillĂ€gg pĂ„ detta sĂ€tt Ă€r att göra mindre förbĂ€ttringar till din senaste version utan att kladda ner din versionshistorik med meddelanden som âHoppsan, glömde lĂ€gga till en filâ eller âSkit ocksĂ„, tryckfelsnisse i senaste versionenâ. |
Ă ngra en preparerad fil
Kommande tvÄ avsnitt demonstrerar hur man arbetar med prepareringsytan och Àndringar i arbetskatalogen.
Det trevliga Àr att kommandot du anvÀnder för att avgöra statusen pÄ de tvÄ ytorna Àven pÄminner om hur man gör Àndringar ogjorda till dem.
Till exempel, sÀg att du har Àndrat tvÄ filer och vill spara dem som tvÄ separata Àndringar, men du har av misstag skrivit git add *
och markerat bÄda att ingÄ i din nÀsta version.
Hur kan du markera en av dem som oförbredd?
Kommandot git status
pÄminner dig:
$ 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
Under texten âChanges to be committedâ (Ăndringar att spara) stĂ„r det git reset HEAD <file>...
för att markera filen som oförberedd.
LÄt oss anvÀnda det rÄdet och flagga filen CONTRIBUTING.md
som oförberedd:
$ 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
Kommandot Àr lite mÀrkligt, men fungerar.
Filen CONTRIBUTING.md
Àr modifierad men Äterigen inte förberedd för nÀsta version.
Notera
|
Det Àr sant att |
För nu Àr denna magiska anvÀndning allt du behvöver veta om kommandot git reset
.
Vi kommer att gÄ in i mer detalj kring vad reset
gör och hur man anvÀnder det för att göra mycket intressanta saker i Reset Demystified.
à terstÀlla en modifierad fil
Vad gör du om du inser att du inte vill behÄlla Àndringarna i CONTRIBUTING.md
?
Hur kan man Ă„terstĂ€lla denâââĂ„terstĂ€lla till sĂ„ den sĂ„g ut i din senast sparade version (eller klonade, eller hur du nu fick in den i din arbetskatalog)?
Som tur Àr ger git status
oss en fingervisning om detta ocksÄ.
I förra exempelutskriften sÄ sÄg det ut sÄhÀr:
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
Den talar uttryckligen om hur du kastar bort Àndringarna som du gjort. LÄt oss pröva:
$ git checkout -- CONTRIBUTING.md
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
renamed: README.md -> README
Du kan se att Àndringarna nu Àr borta.
Viktigt
|
Det Àr viktigt att förstÄ att |
Om du vill behÄlla Àndringarna i filen men bara vill fÄ dem ur vÀgen för nu, sÄ kommer vi att gÄ igenom gömman och förgreningar i Git förgreningar; dessa Àr generellt sÀtt bÀttre vÀgar att ta.
Kom ihÄg att allt som Àr sparat i en version (commit) i Git nÀstan alltid kan Äterskapas.
Ăven versioner som var pĂ„ grenar som tagits bort, eller versioner som skrivits över med flaggan --amend
kan Äterskapas (se Data Recovery för ÄterstÀllning av data).
Dock, det som du förlorar som aldrig sparats i en version kommer sannolikt aldrig mer se dagens ljus.