Git

22 Essentiële Git-opdrachten

22 Essentiële Git-opdrachten
Git is het ultieme versiebeheersysteem geworden. De opkomst van Git's populariteit kan worden toegeschreven aan zijn snelheid, behendigheid en veelzijdigheid. Of u nu een freelance webontwikkelaar bent of een softwareontwerper voor toepassingen op bedrijfsniveau, u kunt profiteren van het gebruik van Git. Het helpt u uw bestanden bij te houden door middel van systematische versiebeheer. Git maakt het gemakkelijker om terug te gaan naar oudere versies van code of om nieuwe branches te maken om te experimenteren met de huidige codebase. Git is ook een gedistribueerd versiebeheersysteem, wat betekent dat u niet altijd verbinding hoeft te maken met een centrale server om uw werk gedaan te krijgen.Hieronder staan ​​de essentiële Git-commando's die u zullen helpen bij uw dagelijkse taken. De eenvoudige voorbeelden geven u inzicht in de opdrachten, zodat u de syntaxis gemakkelijk kunt onthouden wanneer u ze moet gebruiken.

1. git add

Met de opdracht git add kun je bestanden en mappen voor je Git-repository gaan volgen en deze naar het staging-gebied verplaatsen. Je moet het git commit commando gebruiken om ze permanent te maken op je historische snapshots.

Het gebruik van de opdracht is eenvoudig. U kunt ervoor kiezen om bestanden en mappen afzonderlijk toe te voegen of de asterisk (*) glob-operator van het Linux-type te gebruiken om ze in groepen toe te voegen.

Laten we het onderstaande voorbeeld nemen:

Stel dat we in het bovenstaande geval de ReadMe.tekst. Maar de rest van de bestanden zijn niet toegevoegd.

Laten we de status controleren:

$git-status
Op branch master
Uw branche is up-to-date met 'origin/master'.
Niet-getrackte bestanden:
(gebruik 'git add' … ' om op te nemen in wat zal worden gepleegd)
bestand1.tekst
bestand2.tekst
map1/

De bestanden en mappen zijn rood, wat betekent dat ze niet worden gevolgd. We kunnen ze toevoegen met:

$git bestand toevoegen1.txt-bestand2.txt-map1/*

Als we de status nu controleren:

$git-status
Op branch master
Uw branche is up-to-date met 'origin/master'.
Door te voeren wijzigingen:
(gebruik 'git reset HEAD' … ' om uit te zetten)
nieuw bestand:   bestand1.tekst
nieuw bestand:   bestand2.tekst
nieuw bestand:   map1/bestand3.tekst
nieuw bestand:   map1/bestand4.tekst

Het git add commando heeft de bestanden toegevoegd aan de staging area. Bestanden worden bewaard in het verzamelgebied voordat ze permanent worden gemaakt via het vastleggingsproces.

2. git branch

Op Git is vertakking eenvoudig. In andere versiebeheersystemen was het een dure operatie. Maar Git-algoritmen zijn geoptimaliseerd voor vertakking. Dus je kunt het git branch commando gebruiken wanneer je een aparte ontwikkelingslijn wilt maken zonder je zorgen te maken over de prestaties.

Laten we naar het volgende voorbeeld kijken:.

$git-status
Op branch master
Uw branche is up-to-date met 'origin/master'.
Door te voeren wijzigingen:
(gebruik 'git reset HEAD' … ' om uit te zetten)
nieuw bestand:   bestand1.tekst
nieuw bestand:   bestand2.tekst
nieuw bestand:   map1/bestand3.tekst
nieuw bestand:   map1/bestand4.tekst

Merk op dat we 'On branch master' zijn. Wanneer je een nieuw project aanmaakt, kom je terecht in branch master. Je kunt ook het git branch -a commando gebruiken om erachter te komen in welke branch je zit:

$git branch -a
* meester

Het bovenstaande vertelt je dat er maar één branch is genaamd 'master' en de asterisk (*) betekent dat je op die branch zit.

Laten we een nieuwe branch maken genaamd 'testing':

$git branch testen

Nu kunnen we de takken opnieuw controleren:

$git branch -a
* meester
testen

Hoewel we nog steeds in de 'master'-branch zitten, kunnen we ook de nieuwe 'testing'-branch zien die is gemaakt. De 'testing' branch is een replica van de 'master' branch.

3. git kassa

Het git checkout-commando brengt je naar een branch, zodat je aan de resources daarin kunt werken. Je kunt takken zien als rivieren en stromen. Met een branch maak je een nieuwe stream aan. Met het checkout-commando ga je naar die stream.

Laten we de tak 'testen' uit het vorige voorbeeld bekijken:

$git kassa testen
Overgeschakeld naar branche 'testen'

Laten we nu de status en de takken opnieuw controleren:

$git-status
Op tak testen
niets te committen, werkmap opschonen
$git branch -a
meester
* testen

Je kunt aan de git branch -a commando zien dat we naar de testing branch hebben verplaatst.

4. git kloon

Met het git clone commando kun je een kopie maken van elke Git repository. Zodra je een repository kloont, begint de nieuwe gekloonde map de wijzigingen lokaal bij te houden. Omdat Git wordt gedistribueerd, is een kloon een volledig autonome Git-repository.

Laten we een nieuwe repository maken om te laten zien hoe klonen werkt:

$mkdir dir1
$cd dir1
$mkdir mijnproject
$cd mijnproject/
$git init
Geïnitialiseerd lege Git-repository in /dir1/myproject/.git/
$raak LeesMij aan.tekst
$git commit -m 'Initialiseer mijn repository'
[master (root-commit) 5a0bd75] Mijn repository initialiseren
1 bestand gewijzigd, 0 invoegingen (+), 0 verwijderingen (-)
aanmaakmodus 100644 Leesmij.tekst

In het bovenstaande voorbeeld hebben we Git-repository gemaakt met de naam 'myproject' in de map 'dir1'. Stel dat dit onze belangrijkste opslagplaats is. Nu willen we er een kopie van maken en ergens anders gaan werken.

Laten we een map maken met de naam 'dir2' en de repository van 'myproject' klonen. We gebruiken de git-kloon

om 'mijnproject' te klonen:

$mkdir dir2
$cd dir2
$git kloon /dir1/mijnproject/
Klonen in 'mijnproject'…
gedaan.
$ls
mijn project

Het git clone commando werkt ook met een URL.

$git-kloon  https://github.com/test/test.git

U kunt ook de naam van de kloon wijzigen door deze op te geven achter het Git-repository-adres:

$git-kloon  https://github.com/test/test.git mytest

5. git commit

Het git commit commando wordt uitgevoerd na het git add commando. In ons git add-voorbeeld hadden we de bestanden voor tracking toegevoegd, maar we hadden het niet vastgelegd in de Git-repository. Tracking blijft lokaal totdat een commit is gemaakt. Wanneer u de wijzigingen vastlegt, worden ze onderdeel van het permanente record.

Hieronder draaien we de git commit -m opdracht:

$git commit -m 'Mijn bestanden en mappen vastleggen'
[master 3ef57b3] Mijn bestanden en mappen vastleggen
4 bestanden gewijzigd, 0 invoegingen (+), 0 verwijderingen (-)
maakmodus 100644 bestand1.tekst
maakmodus 100644 bestand2.tekst
aanmaakmodus 100644 map1/bestand3.tekst
aanmaakmodus 100644 map1/bestand4.tekst

Als je de -m optie niet gebruikt om een ​​opmerking te plaatsen, zal Git je standaard teksteditor openen en erom vragen. Opmerkingen worden beschouwd als goede praktijken voor versiebeheer. Dus plaats altijd zinvolle opmerkingen in je commit.

6. git config

Met het git config commando kun je verschillende opties instellen voor je git repository. U kunt bijvoorbeeld de git config -global . gebruiken commando om uw gebruiker op te halen en in te stellen.naam en gebruiker.e-mail.

Zo kunt u de waarden instellen:

$ git config --global user.naam 'Zak H'
$ git config --global user.e-mail [email protected]

Zo kunt u de waarden controleren:

$git config --global gebruiker.naam
Zak H
$git config --global gebruiker.e-mail
[email protected]

7. git verschil

Het git diff commando helpt je de verschillen tussen bestanden en mappen te zien. Als u wijzigingen aanbrengt in een bestand, is dit een handig hulpmiddel om snel de aangebrachte wijzigingen te evalueren.

Laten we aannemen dat we ons werk beginnen met een ReadMe.txt-bestand met twee regels. Dan verwijderen we de tweede regel en voegen we een derde regel toe.

Als we nu het diff-commando uitvoeren, toont het de verschillen tussen de vastgelegde versie en de lokaal gewijzigde versie in het staging-gebied. Hier is hoe het eruit zal zien:

$git verschil
diff --git a/ReadMe.txt b/LeesMij.tekst
index 9475ddc… 1804904 100644
--- a/LeesMij.tekst
+++ b/LeesMij.tekst
@@ -1,2 +1,2 @@
Regel 1: Mijn eerste regel
-Lijn 2: Mijn tweede regel
+Regel 3: Mijn DERDE regel

Lijn 1 is ongewijzigd (wit), Lijn 2 verwijderd (rood) en Lijn 3 toegevoegd (groen).
Je kunt het diff commando gebruiken om ook verschillen tussen bepaalde commits te vinden.

8. git fetch

De opdracht git fetch haalt de nieuwste bronnen van de opgegeven oorsprong.

Laten we naar een voorbeeld kijken an. Stel dat u de volgende aandoening heeft:

dir1/mijnproject
dir2/mijnproject (gekloond)

De map 'dir2/myproject' is gekloond uit 'dir1/myproject'. Als iemand nu wijzigingen heeft doorgevoerd in 'dir1/myproject', kun je die wijzigingen als volgt verkrijgen vanuit 'dir2/myproject':

$git ophalen oorsprong
afstandsbediening: Objecten tellen: 2, klaar.
afstandsbediening: Objecten comprimeren: 100% (2/2), klaar.
afstandsbediening: Totaal 2 (delta 0), hergebruikt 0 (delta 0)
Objecten uitpakken: 100% (2/2), klaar.
Van /dir2/… /dir1/mijnproject
5a0bd75… 1713734  master     -> origin/master

Het is belangrijk om te onthouden dat het git fetch-commando de wijzigingen niet samenvoegt. Gebruik voor automatisch ophalen en samenvoegen het git pull-commando. Dan vraag je je misschien af ​​waarom je dit commando in de eerste plaats gebruikt. Er kunnen geavanceerde Git-opties zijn waarbij je alle wijzigingen van je oorspronkelijke server krijgt en vervolgens wijzigingen alleen selectief op bepaalde bestanden toepast. Met het git fetch commando kun je dit bereiken. Het is echter een geavanceerd onderwerp dat je kunt vinden in de git fetch-documentatie.

9. git grep

Met het git grep-commando kun je in je Git-boom zoeken naar informatie. Hier is een voorbeeld van het zoeken naar het woord 'Line' in onze git-repository. De -n of --line-number optie toont regelnummers waar Git een overeenkomst vindt:

$git grep -n Line
Leesmij.txt:1:Lijn 1: Mijn eerste regel
Leesmij.txt:2:Lijn 3: Mijn DERDE regel

U kunt een vergelijkbare zoekopdracht uitvoeren voor het aantal keren dat de overeenkomst er is met de optie -c of --count:

git grep -c regel
Leesmij.txt:2

De reden voor het gebruik van git grep over Linux grep is dat git grep sneller is voor git-repositories.

10. git log

Het git log commando laat je de commit geschiedenis zien.

$git log
commit 171373479fc309846ef605fbe650933767afd0fb
Auteur: Zak H
Datum:   wo 21 nov 20:26:32 2018 -0800
Nieuwe bestanden toegevoegd
commit 5a0bd759506d20b2b989873258bf60d003aa3d36
Auteur: Zak H
Datum:   wo 21 nov 18:48:35 2018 -0800
Mijn repository initialiseren

Je kunt ook de --oneline optie gebruiken om een ​​verkorte versie te zien. De verkorte versie is makkelijker te volgen.

$git log --oneline
1713734 Nieuwe bestanden toegevoegd
5a0bd75 Mijn repository initialiseren

11. git merge

Het git merge commando voegt branches samen.

Laten we een nieuwe repository maken met 'main' en dan een 'test' branch maken.

$mkdir mijnproject
$cd mijnproject
$git init
Lege Git-repository geïnitialiseerd in /git_essentials/myproject/.git/
$raak LeesMij aan.tekst
$git add -A
$git commit -m 'Initiële commit'
[master (root-commit) b31d4e1] Initiële commit
1 bestand gewijzigd, 0 invoegingen (+), 0 verwijderingen (-)
aanmaakmodus 100644 Leesmij.tekst
$git vertakkingstest
$git branch -a
* meester
test
$git kassa-test
Overgeschakeld naar branche 'test'

Laten we in de 'test'-branch enkele wijzigingen aanbrengen:

$raak Bestand1 aan.txt-bestand2.tekst
$Ls
Bestand1.txt-bestand2.txt  LeesMij.tekst
$git add -A
$git commit -m 'Twee nieuwe bestanden toegevoegd'
[test 7e11910] Twee nieuwe bestanden toegevoegd
2 bestanden gewijzigd, 0 invoegingen (+), 0 verwijderingen (-)
aanmaakmodus 100644 Bestand1.tekst
aanmaakmodus 100644 Bestand2.tekst

We hebben twee bestanden aan de test toegevoegd.

$git branch -a
meester
* test
$ls
Bestand1.txt-bestand2.txt  LeesMij.tekst
$git kassa-master
Overgeschakeld naar tak 'master'
$git branch -a
* meester
test
$ls
Leesmij.tekst

We zien uit het bovenstaande dat File1.txt en File2.txt bestaat in 'test' branch, maar niet in 'master'.

Laten we nu samenvoegen.

$git samenvoegtest
B31d4e1 bijwerken... 7e11910
Vooruitspoelen
Bestand1.txt | 0
Bestand2.txt | 0
2 bestanden gewijzigd, 0 invoegingen (+), 0 verwijderingen (-)
aanmaakmodus 100644 Bestand1.tekst
aanmaakmodus 100644 Bestand2.tekst
$ls
Bestand1.txt-bestand2.txt  LeesMij.tekst
$git branch -a
* meester
test

Nu hebben we 'Bestand1'.txt' en 'Bestand2'.txt' ook in de 'master' branch branch.

Opmerking: beschouw samenvoegen als een pull-bewerking. Je moet in de branch zijn waarin je wilt mergen. In dit geval bevindt u zich in de 'master'-branch en haalt u de wijzigingen uit de 'test'-branch.

12. git mv

De git mv is een sneltoets om de commando's git add en git rm uit te voeren. Het kan worden gebruikt om bestanden te hernoemen.

Hier is een voorbeeld:

$git mv LeesMij.txt LeesMij.md
$git-status
Op branch master
Door te voeren wijzigingen:
(gebruik 'git reset HEAD' … ' om uit te zetten)
hernoemd:    LeesMij.txt -> LeesMij.md

13. git pull

Het git pull-commando lijkt veel op het git fetch-commando, behalve dat het samenvoegen automatisch gebeurt.

Hier is een voorbeeld van het uitvoeren van git pull-oorsprong zoals de git fetch one (we voeren een pull-verzoek uit van de kloon om wijzigingen uit de originele Git-repository te krijgen):

$git pull oorsprong
afstandsbediening: Objecten tellen: 3, klaar.
afstandsbediening: Objecten comprimeren: 100% (2/2), klaar.
afstandsbediening: Totaal 3 (delta 0), hergebruikt 0 (delta 0)
Objecten uitpakken: 100% (3/3), klaar.
Van /LearnGIT/git_essentials/myproject
7e11910… e67f932  master     -> origin/master
7e11910 bijwerken... e67f932
Vooruitspoelen
Bestand1.txt               | 1 +
Bestand2.txt               | 1 +
Bestand3.txt               | 1 +
Leesmij.txt => LeesMij.md | 0
4 bestanden gewijzigd, 3 invoegingen (+)
aanmaakmodus 100644 Bestand3.tekst
hernoem ReadMe.txt => LeesMij.md (100%)

U kunt zien dat de wijzigingen zijn gedownload vanaf de oorsprong en zijn samengevoegd met de kloon.

14. git push

Het git push-commando wordt gebruikt om wijzigingen naar externe repositories te pushen. Hier is een voorbeeld van het uitvoeren van de push-opdracht:

$git push origin master
Objecten tellen: 2, klaar.
Delta-compressie met maximaal 4 threads.
Objecten comprimeren: 100% (2/2), klaar.
Objecten schrijven: 100% (2/2), 242 bytes | 0 bytes/s, klaar.
Totaal 2 (delta 1), hergebruikt 0 (delta 0)
Naar /LearnGIT/git_essentials/mijnproject
e67f932… 90dc546  meester -> meester

Het git push origin master commando stuurt wijzigingen naar de 'master' branch van de origin (de Git repository die je hebt gekloond) vanuit de 'master' branch van de gekloonde repository. Visueel ziet de push er als volgt uit:

gekloond/master -> oorsprong/master

15. git rebase

Het git rebase commando helpt je de basis van de branches te veranderen. In een algemene samenvoeging gebeurt zoiets als dit:

De test branch is samengevoegd in de 'master' branch om een ​​nieuwe commit te maken.

In een rebase gebeurt dit:

De wijzigingen van E en F changelist worden herberekend en vergrendeld aan het einde van de master branch. Rebasen helpt de vertakkingen te vereenvoudigen.

Laten we aannemen dat we deze situatie hebben in de 'master' branch:

$ git log --oneline
7f573d8 Commit C: c . toegevoegd.tekst
795da3c Commit B: toegevoegd b.tekst
0f4ed5b Commit A: toegevoegd a.tekst

En een functietak:

$ git log --oneline
8ed0c4e Commit F: gewijzigd b.tekst
6e12b57 Commit E: gewijzigd a.tekst
795da3c Commit B: toegevoegd b.tekst
0f4ed5b Commit A: toegevoegd a.tekst

Als we rebasen, krijgen we git rebase master:

$ git afrekenfunctie
Overgeschakeld naar branch 'feature'
$ git rebase master

Eerst het hoofd terugspoelen om je werk er bovenop af te spelen..

Toepassen: Commit E: gewijzigd a.tekst
Toepassen: Commit F: gewijzigd b.tekst
Voeg vervolgens 'feature' samen in 'master'.
$ git checkout master
Overgeschakeld naar tak 'master'
$ git merge-functie
Bijwerken 7f573d8… 9efa1a3
Vooruitspoelen
een.txt | 1 +
b.txt | 1 +
2 bestanden gewijzigd, 2 invoegingen (+)

Als je nu naar zowel de 'master' als de 'feature' branch gaat, zie je dezelfde logs:

$ git log --oneline
9efa1a3 Commit F: gewijzigd b.tekst
8710174 Commit E: gewijzigd a.tekst
7f573d8 Commit C: c . toegevoegd.tekst
795da3c Commit B: toegevoegd b.tekst
0f4ed5b Commit A: toegevoegd a.tekst

Rebasen heeft ze samen geplet.

Opmerking: gebruik nooit rebasen in openbare repositories, omdat ontwikkelaars grote problemen met het samenvoegen zullen tegenkomen.

16. git remote

Met de opdracht git remote kun je een externe server instellen voor je repository. In een kloonsituatie wordt de bronrepository automatisch de externe.

Bijvoorbeeld:

$pwd
/LearnGIT/git_essentials/test
$git remote -v
origin  /LearnGIT/git_essentials/myproject (fetch)
origin  /LearnGIT/git_essentials/myproject (push)

Het bovenstaande laat zien dat de externe server voor 'test' een andere map is met de naam 'myproject'. De reden is dat 'test' is gekloond voor mijn project.

Maar de externe server hoeft niet lokaal te zijn. Je kunt zoiets hebben met een URL:

$git remote -v
oorsprong https://github.com/zakh/mijnproject (ophalen)
oorsprong https://github.com/zakh/mijnproject (push)

Je kunt een git remote repository opzetten met het commando git remote add :

$git remote origin toevoegen https://github.com/zakh/mijnproject

Dit verbindt je repo met de oorsprong, zodat je kunt ophalen en pushen.

17. git reset

Met de git reset kun je toegevoegde bestanden unstagen.

Laten we zeggen dat je het bestand 'test' hebt toegevoegd.txt' naar uw repository:

$aanraaktest.tekst
$git add -A
$git-status
Op branch master
Uw branche is up-to-date met 'origin/master'.
Door te voeren wijzigingen:
(gebruik 'git reset HEAD' … ' om uit te zetten)
nieuw bestand:   test.tekst

U besluit echter dat u 'test' niet wilt volgen.txt' meer. Je kunt de git reset Head gebruiken commando om het bestand te unstagen:

$git reset HEAD-test.tekst

Als u de status controleert, wordt het bestand opnieuw niet getraceerd:

$git-status
Op branch master
Uw branche is up-to-date met 'origin/master'.
Niet-getrackte bestanden:
(gebruik 'git add' … ' om op te nemen in wat zal worden gepleegd)
test.tekst

Het bestand 'test'.txt' wordt niet langer bijgehouden.

18. git revert

Met het git revert commando kun je wijzigingen ongedaan maken met behulp van het commit hash-nummer.

$echo 'Test 1' >> MijnBestand.tekst
$git add -A
$git commit -m 'Wijziging toegevoegd 1'
[master 78a8277] Wijziging 1 toegevoegd
2 bestanden gewijzigd, 1 invoeging (+)
aanmaakmodus 100644 MijnBestand.tekst
maak modus 100644 test.tekst
$cat MijnBestand.tekst
Test 1
$echo 'Test 2' >> MijnBestand.tekst
$git add -A
$git commit -m 'Wijziging toegevoegd 2'
[master a976e9c] Wijziging 2 toegevoegd
1 bestand gewijzigd, 1 invoeging (+)
$cat MijnBestand.tekst
Test 1
Test 2
$git log --oneline
a976e9c Wijziging toegevoegd 2
78a8277 Wijziging toegevoegd 1
90dc546 Een bestand toegevoegd
e67f932 Nieuwe bestanden toegevoegd
7e11910 Twee nieuwe bestanden toegevoegd
b31d4e1 Initiële vastlegging

We hebben een 'MijnBestand' gemaakt.txt' en twee wijzigingen doorgevoerd, zodat het bestand de regels 'Test 1' en 'Test 2' heeft. Maar we hebben besloten dat we de tweede commit niet willen. Dus we hebben de commit-hash (a976e9c) ervoor gevonden. We kunnen de git revert gebruiken om van de verplichting af te komen:

$git revert a976e9c
[master 4f270e7] 'Toegevoegde wijziging 2' terugzetten
1 bestand gewijzigd, 1 verwijdering(-)
$git log --oneline
4f270e7 'Toegevoegde wijziging 2' terugzetten
a976e9c Wijziging toegevoegd 2
78a8277 Wijziging toegevoegd 1
90dc546 Een bestand toegevoegd
e67f932 Nieuwe bestanden toegevoegd
7e11910 Twee nieuwe bestanden toegevoegd
b31d4e1 Initiële vastlegging
$cat MijnBestand.tekst
Test 1

We zien dat er een nieuwe commit-hash is gemaakt die de commit-regel 'Test 2' terugdraait. Het bestand heeft nu alleen de regel 'Test 1'.

19. git rm

De opdracht git rm stelt bestanden in voor toekomstige verwijderingen. Het plaatst de te verwijderen bestanden in het verzamelgebied.

$git rm-test.tekst
rm 'test'.tekst'
$git-status
Op branch master
Je branch loopt 3 commits voor op 'origin/master'.
(gebruik 'git push' om je lokale commits te publiceren)
Door te voeren wijzigingen:
(gebruik 'git reset HEAD' … ' om uit te zetten)
verwijderd:    test.tekst

U moet de wijzigingen vastleggen om de verwijdering van kracht te laten worden.

20. git stash

Met het git stash-commando kun je tijdelijk werk stopzetten waarvan je nog niet klaar bent om het vast te leggen.
Stel dat u werkt in een repository met de volgende bestanden:

$ls
John.txt   Mary.tekst
U wilt deze bestanden wijzigen zodat ze meer op projecten zijn gebaseerd. Dus je begint met:
$git mv John.txt ProjectFile1.tekst
$ls
Maria.txt       ProjectFile1.tekst
$git-status
Op branch master
Door te voeren wijzigingen:
(gebruik 'git reset HEAD' … ' om uit te zetten)
hernoemd:    John.txt -> ProjectBestand1.tekst

In het midden van het hernoemen en bijwerken van 'John.txt' naar 'ProjectFile1'.txt', ontvang je een verzoek om iets in het project te wijzigen. Maar u bent nog niet klaar om 'ProjectFile1' in te dienen.tekst'. Dus je bergt het op.

$git stash

Opgeslagen werkmap en indexstatus WIP op master: f0b5a01 Init John en Mary

HEAD is nu op f0b5a01 Init John en Mary

$ls
John.txt   Mary.tekst

Uw lokale werkomgeving is terug naar waar u was voordat u uw projectgebaseerde wijzigingen aanbracht. Na, aandacht besteden aan de onderbreking, in plaats van terug te gaan naar 'John.txt', besluit je te werken aan de 'Mary.txt'-bestand nu:

$git mv Mary.txt ProjectFile2.tekst
$git-status
Op branch master
Door te voeren wijzigingen:
(gebruik 'git reset HEAD' … ' om uit te zetten)
hernoemd:    Mary.txt -> ProjectFile2.tekst
$ls
John.txt       ProjectFile2.tekst

Je wordt weer onderbroken en je nieuwe werk berg je op 'Mary'.tekst':

$git stash
Opgeslagen werkmap en indexstatus WIP op master: f0b5a01 Init John en Mary
HEAD is nu op f0b5a01 Init John en Mary
$ls
John.txt   Mary.tekst

Nadat het onderbrekingswerk is voltooid, controleert u de stashlijst:

$git stash lijst
stash@0: WIP op master: f0b5a01 Init John en Mary
stash@1: WIP op master: f0b5a01 Init John en Mary

Je hebt twee work-in-progress (WIP) in de stash. De eerste keer dat je de voorraad opruimt, krijg je de nieuwste 'Mary'.txt' wijzigingen:

$git stash pop
Mary verwijderen.tekst
Op branch master
Door te voeren wijzigingen:
(gebruik 'git reset HEAD' … ' om uit te zetten)
nieuw bestand:   ProjectFile2.tekst
Wijzigingen niet gestaged voor commit:
(gebruik 'git add/rm' … ' om bij te werken wat er zal worden vastgelegd)
(gebruik 'git checkout' -- … ' om wijzigingen in de werkdirectory te negeren)
verwijderd:    Mary.tekst
Gedropt refs/stash@0 (9b77a6b75e4e414fb64de341668c812d3d35150c)

De tweede keer dat je de voorraad opent, krijg je de 'John.txt'-gerelateerde wijzigingen:

$git stash pop
John verwijderen.tekst
Op branch master
Door te voeren wijzigingen:
(gebruik 'git reset HEAD' … ' om uit te zetten)
nieuw bestand:   ProjectFile1.tekst
nieuw bestand:   ProjectFile2.tekst
Wijzigingen niet gestaged voor commit:
(gebruik 'git add/rm' … ' om bij te werken wat er zal worden vastgelegd)
(gebruik 'git checkout' -- … ' om wijzigingen in de werkdirectory te negeren)
verwijderd:    Jan.tekst
verwijderd:    Mary.tekst
Gedropt refs/stash@0 (1e1968854fb5ca4d609e577822dc3280dbf928f6)
$ls
ProjectBestand1.txt   ProjectFile2.tekst

En je hebt je onderhanden werk 'ProjectFile1'.txt' en 'ProjectFile2'.txt' terug.

Dus het git stash commando helpt je je werk op te bergen, zodat je er later op terug kunt komen.

21. git-status

Het git status commando toont het verschil tussen huidige bestanden en de HEAD commit.

Hier is een voorbeeld:

$git-status
Op branch master
Door te voeren wijzigingen:
(gebruik 'git reset HEAD' … ' om uit te zetten)
hernoemd:    Bestand2.txt -> Bestand3.tekst
Wijzigingen niet gestaged voor commit:
(gebruik 'git add' … ' om bij te werken wat er zal worden vastgelegd)
(gebruik 'git checkout' -- … ' om wijzigingen in de werkdirectory te negeren)
gewijzigd:   Bestand1.tekst

Het laat zien dat 'File2'.txt' wordt hernoemd naar 'File3'.txt' die klaar is voor commit, maar de wijzigingen in 'File1'.txt' is nog niet in de staging area.

Dus we voegen alles toe:

$git add -A

Als we nu de status controleren:

$git-status
Op branch master
Door te voeren wijzigingen:
(gebruik 'git reset HEAD' … ' om uit te zetten)
gewijzigd:   Bestand1.tekst
hernoemd:    Bestand2.txt -> Bestand3.tekst

We zien dat alle wijzigingen klaar zijn om vast te leggen.

22. git-tag

Het git tag commando helpt je om tags te maken voor je belangrijke historische punten. Het wordt over het algemeen gebruikt om versienummers in te stellen.

Het git tag commando laat je de huidige beschikbare tags zien:

$git-tag
v1.0
v2.0

U kunt taggen met de opdrachtindeling git tag :

$git-tag v3.0

Om te zien wat er in de tag staat, kun je het git show commando gebruiken:

$git show v1.0
vastleg 61e9e8aa1b98b2a657303e6822b291d2374314b5
Auteur: Zak H
Datum:   do 22 nov 01:06:42 2018 -0800
Eerste commit
diff --git a/1.txt b/1.tekst
nieuwe bestandsmodus 100644
index 0000000… e69de29

Je kunt ook taggen met een commit hash en het commando formaat git tag :

$git log --oneline
374efe9 Gewijzigd bestand
a621765 Toevoegen
6d6ed84 Tweede commit
61e9e8a  Eerste vastlegging
$git-tag v4.0 a621765
$git show v4.0
commit a6217650a2c7b2531ecb9c173ba94bd4b3ba7abd
Auteur: Zak H
Datum:   do 22 nov 01:15:55 2018 -0800
Toevoegen
diff --git a/1.txt b/1.tekst
index e69de29… 587be6b 100644
--- een/1.tekst
+++ b/1.tekst
@@ -0,0 +1 @@

Tot slot

Voor elk commando kun je git . gebruiken -h voor meer info.

Verdere studie

  • https://git-scm.com/docs
Hoe AutoKey te gebruiken om Linux-spellen te automatiseren
AutoKey is een hulpprogramma voor desktopautomatisering voor Linux en X11, geprogrammeerd in Python 3, GTK en Qt. Met behulp van de scripting- en MACR...
Hoe FPS-teller in Linux-games te tonen
Linux-gaming kreeg een grote duw toen Valve in 2012 Linux-ondersteuning voor Steam-client en hun games aankondigde. Sindsdien hebben veel AAA- en indi...
Sid Meier's Civilization VI downloaden en spelen op Linux and
Inleiding tot het spel Civilization 6 is een moderne versie van het klassieke concept dat werd geïntroduceerd in de serie Age of Empires-games. Het id...