GitAan de slag met Git


Opmerkingen

Git is een gratis, gedistribueerd versiebeheersysteem waarmee programmeurs codewijzigingen kunnen bijhouden, via "snapshots" (commits), in zijn huidige staat. Door commits te gebruiken, kunnen programmeurs samen testen, debuggen en nieuwe functies maken. Alle commits worden bewaard in een zogenaamde "Git Repository" die kan worden gehost op uw computer, privéservers of open source-websites, zoals bij Github.

Met Git kunnen gebruikers ook nieuwe "takken" van de code maken, waardoor verschillende versies van de code naast elkaar kunnen leven. Dit maakt scenario's mogelijk waarbij een branch de meest recente stabiele versie bevat, een andere branch een set nieuwe functies die worden ontwikkeld, en een zoveelste branch een andere set functies bevat. Git maakt het proces van het maken van deze takken en deze vervolgens weer samen te voegen, bijna pijnloos.

Git heeft 3 verschillende "gebieden" voor je code:

  • Werkmap : het gebied waarin u al uw werk zult doen (bestanden maken, bewerken, verwijderen en organiseren)
  • Staging-gebied : het gebied waar u de wijzigingen weergeeft die u in de werkmap hebt aangebracht
  • Repository : waar Git de wijzigingen die je hebt aangebracht permanent opslaat als verschillende versies van het project

Git is oorspronkelijk gemaakt voor het beheer van de Linux-kernelbron. Door ze gemakkelijker te maken, moedigt het kleine commits aan, het forceren van projecten en het samenvoegen van vorken, en het hebben van veel kortlevende takken.

De grootste verandering voor mensen die gewend zijn aan CVS of Subversion is dat elke kassa niet alleen de bronboom bevat, maar ook de hele geschiedenis van het project. Veelvoorkomende bewerkingen zoals het wijzigen van revisies, het uitchecken van oudere revisies, het plegen (naar uw lokale geschiedenis), het maken van een filiaal, het uitchecken van een andere filiaal, het samenvoegen van filialen of patchbestanden kunnen allemaal lokaal worden gedaan zonder te communiceren met een centrale server. Zo wordt de grootste bron van latentie en onbetrouwbaarheid verwijderd. Communicatie met de "upstream" -repository is alleen nodig om de laatste wijzigingen te ontvangen en om uw lokale wijzigingen aan andere ontwikkelaars te publiceren. Dit maakt van wat voorheen een technische beperking was (degene die de repository heeft, het project bezit) een organisatorische keuze (uw "upstream" is degene waarmee u wilt synchroniseren).

versies

Versie Publicatiedatum
2.13 2017/05/10
2.12 2017/02/24
2.11.1 2017/02/02
2.11 2016/11/29
2.10.2 2016/10/28
2.10 2016/09/02
2.9 2016/06/13
2.8 2016/03/28
2.7 2015/10/04
2.6 2015/09/28
2.5 2015/07/27
2.4 2015/04/30
2.3 2015/02/05
2.2 2014/11/26
2.1 2014/08/16
2.0 2014/05/28
1.9 2014/02/14
1.8.3 2013/05/24
1.8 2012-10-21
1.7.10 2012-04-06
1.7 2010-02-13
1.6.5 2009-10-10
1.6.3 2009-05-07
1.6 2008-08-17
1.5.3 2007-09-02
1.5 2007-02-14
1.4 2006-06-10
1.3 2006-04-18
1.2 2006-02-12
1.1 2006-01-08
1.0 2005-12-21
0.99 2005-07-11

Maak je eerste repository en voeg vervolgens bestanden toe en leg ze vast

Controleer op de opdrachtregel eerst of Git is geïnstalleerd:

Op alle besturingssystemen:

git --version
 

Op UNIX-achtige besturingssystemen:

which git
 

Als er niets wordt geretourneerd of de opdracht niet wordt herkend, moet je Git mogelijk op je systeem installeren door het installatieprogramma te downloaden en uit te voeren. Zie de Git-startpagina voor uitzonderlijk duidelijke en eenvoudige installatie-instructies.

Na het installeren van Git, configureer je gebruikersnaam en e-mailadres . Doe dit voordat je een commit doet.

Nadat Git is geïnstalleerd, navigeer je naar de map die je onder versiebeheer wilt plaatsen en maak je een lege Git-repository aan:

git init
 

Dit creëert een verborgen map, .git , die het sanitair bevat dat nodig is om Git te laten werken.

Controleer vervolgens welke bestanden Git aan je nieuwe repository zal toevoegen; deze stap is speciale zorg waard:

git status
 

Bekijk de resulterende lijst met bestanden; je kunt Git vertellen welke van de bestanden in versiebeheer moet worden geplaatst (vermijd het toevoegen van bestanden met vertrouwelijke informatie zoals wachtwoorden of bestanden die de repo gewoon volzetten):

git add <file/directory name #1> <file/directory name #2> < ... >
 

Als alle bestanden in de lijst moeten worden gedeeld met iedereen die toegang heeft tot de repository, voegt een enkele opdracht alles toe aan uw huidige map en de bijbehorende submappen:

git add .
 

Hiermee worden alle bestanden die aan het versiebeheer moeten worden toegevoegd "gefaseerd" voorbereid, zodat ze kunnen worden vastgelegd in je eerste commit.

Voor bestanden die u nooit onder versiebeheer wilt, maakt en vult u een bestand met de naam .gitignore voordat u de opdracht add uitvoert.

Commit alle bestanden die zijn toegevoegd, samen met een commit bericht:

git commit -m "Initial commit"
 

Dit creëert een nieuwe commit met het gegeven bericht. Een commit is als een save of snapshot van je hele project. Je kunt het nu naar een externe repository pushen of uploaden, en later kun je er zo nodig naar terugspringen.
Als u de parameter -m , wordt uw standaardeditor geopend en kunt u het commit-bericht daar bewerken en opslaan.

Een afstandsbediening toevoegen

Om een nieuwe afstandsbediening toe te voegen, gebruikt git remote add opdracht git remote add op de terminal, in de map waarin uw repository is opgeslagen.

De opdracht git remote add heeft twee argumenten:

  1. Een externe naam, bijvoorbeeld origin
  2. Een externe URL, bijvoorbeeld https://<your-git-service-address>/user/repo.git
    git remote add origin https://<your-git-service-address>/owner/repository.git
 

OPMERKING: Voordat je de afstandsbediening toevoegt, moet je de vereiste repository in je git-service maken. Je kunt commits pushen / trekken nadat je je afstandsbediening hebt toegevoegd.

Kloon een repository

De opdracht git clone wordt gebruikt om een bestaande Git-repository van een server naar de lokale machine te kopiëren.

Om bijvoorbeeld een GitHub-project te klonen:

cd <path where you'd like the clone to create a directory>
git clone https://github.com/username/projectname.git
 

Een BitBucket-project klonen:

cd <path where you'd like the clone to create a directory>
git clone https://yourusername@bitbucket.org/username/projectname.git
 

Dit creëert een map met de naam projectname op de lokale machine, die alle bestanden in de externe Git-repository bevat. Dit omvat bronbestanden voor het project, evenals een .git submap die de volledige geschiedenis en configuratie voor het project bevat.

Om een andere naam van de map op te geven, bijvoorbeeld MyFolder :

git clone https://github.com/username/projectname.git MyFolder
 

Of om te klonen in de huidige map:

git clone https://github.com/username/projectname.git .
 

Notitie:

  1. Bij het klonen naar een opgegeven map, moet de map leeg zijn of niet bestaan.

  2. U kunt ook de ssh versie van de opdracht gebruiken:

    git clone git@github.com:username/projectname.git
     

De https versie en de ssh versie zijn equivalent. Sommige hostingdiensten zoals GitHub raden echter aan dat u https plaats van ssh .

Git installatie

Laten we wat Git gebruiken. Eerste dingen eerst - u moet het installeren. Je kunt het op verschillende manieren krijgen; de twee belangrijkste zijn om het vanaf de bron te installeren of om een bestaand pakket voor uw platform te installeren.

Installeren vanaf bron

Als je kunt, is het over het algemeen handig om Git vanaf de bron te installeren, omdat je de meest recente versie krijgt. Elke versie van Git bevat meestal nuttige UI-verbeteringen, dus het verkrijgen van de nieuwste versie is vaak de beste route als je je comfortabel voelt bij het compileren van software van de bron. Het is ook het geval dat veel Linux-distributies zeer oude pakketten bevatten; dus tenzij je een zeer actuele distributie hebt of backports gebruikt, is installatie vanaf de bron wellicht de beste keuze.

Om Git te installeren, moet je de volgende bibliotheken hebben waarvan Git afhankelijk is: curl, zlib, openssl, expat en libiconv. Als je bijvoorbeeld op een systeem met yum (zoals Fedora) of apt-get (zoals een op Debian gebaseerd systeem) werkt, kun je een van deze commando's gebruiken om alle afhankelijkheden te installeren:

$ yum install curl-devel expat-devel gettext-devel \
  openssl-devel zlib-devel

$ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \
  libz-dev libssl-dev
 

Als je alle benodigde afhankelijkheden hebt, kun je doorgaan en de nieuwste snapshot van de Git-website pakken:

http://git-scm.com/download Compileer en installeer vervolgens:

$ tar -zxf git-1.7.2.2.tar.gz
$ cd git-1.7.2.2
$ make prefix=/usr/local all
$ sudo make prefix=/usr/local install
 

Nadat dit is gedaan, kun je Git ook via Git zelf krijgen voor updates:

$ git clone git://git.kernel.org/pub/scm/git/git.git
 

Installatie op Linux

Als je Git op Linux wilt installeren via een binair installatieprogramma, kun je dit meestal doen via de basispakketbeheertool die bij je distributie wordt geleverd. Als je Fedora gebruikt, kun je yum gebruiken:

$ yum install git
 

Of als u een Debian-gebaseerde distributie zoals Ubuntu gebruikt, probeer apt-get:

$ apt-get install git
 

Installeren op Mac

Er zijn drie eenvoudige manieren om Git op een Mac te installeren. Het gemakkelijkste is om het grafische Git-installatieprogramma te gebruiken, dat je kunt downloaden vanaf de SourceForge-pagina.

http://sourceforge.net/projects/git-osx-installer/

Figuur 1-7. Git OS X-installatieprogramma. De andere belangrijke manier is om Git te installeren via MacPorts ( http://www.macports.org) . Als je MacPorts hebt geïnstalleerd, installeer je Git via

$ sudo port install git +svn +doc +bash_completion +gitweb
 

Je hoeft niet alle extra's toe te voegen, maar je zult waarschijnlijk + svn willen opnemen voor het geval je Git ooit met Subversion-repositories moet gebruiken (zie hoofdstuk 8).

Homebrew ( http://brew.sh/) is een ander alternatief om Git te installeren. Als je Homebrew hebt geïnstalleerd, installeer dan Git via

$ brew install git
 

Installeren op Windows

Git installeren op Windows is heel eenvoudig. Het msysGit-project heeft een van de eenvoudigere installatieprocedures. Download eenvoudig het exe-bestand van het installatieprogramma van de GitHub-pagina en voer het uit:

http://msysgit.github.io
 

Nadat het is geïnstalleerd, hebt u zowel een opdrachtregelversie (inclusief een SSH-client die later van pas kan komen) als de standaard GUI.

Opmerking over Windows-gebruik: je moet Git gebruiken met de meegeleverde msysGit-shell (Unix-stijl), hiermee kun je de complexe opdrachtregels gebruiken die in dit boek worden gegeven. Als u om de een of andere reden de native Windows shell / opdrachtregelconsole moet gebruiken, moet u dubbele aanhalingstekens gebruiken in plaats van enkele aanhalingstekens (voor parameters met spaties) en moet u de parameters opgeven die eindigen met het circumflex-accent (^ ) als ze als laatste op de regel staan, omdat het een voortzetsymbool is in Windows.

Leren over een opdracht

Om meer informatie te krijgen over een git commando - dwz details over wat het commando doet, beschikbare opties en andere documentatie - gebruik de --help optie of het help commando.

Om bijvoorbeeld alle beschikbare informatie over de opdracht git diff , gebruik je:

git diff --help
git help diff
 

Om op dezelfde manier alle beschikbare informatie over de status te krijgen, gebruikt u:

git status --help
git help status
 

Als je alleen snelle hulp nodig hebt om je de betekenis van de meest gebruikte opdrachtregelvlaggen te laten zien, gebruik je -h :

git checkout -h
 

SSH instellen voor Git

Als u Windows gebruikt, opent u Git Bash . Als u Mac of Linux gebruikt, opent u uw terminal.

Voordat u een SSH-sleutel genereert, kunt u controleren of u bestaande SSH-sleutels hebt.

Geef de inhoud van uw map ~/.ssh :

$ ls -al ~/.ssh 
# Lists all the files in your ~/.ssh directory
 

Controleer de directorylijst om te zien of u al een openbare SSH-sleutel hebt. Standaard zijn de bestandsnamen van de openbare sleutels een van de volgende:

id_dsa.pub
id_ecdsa.pub
id_ed25519.pub
id_rsa.pub
 

Als u een bestaand publiek en privaat sleutelpaar ziet dat u wilt gebruiken op uw Bitbucket, GitHub (of vergelijkbaar) account, kunt u de inhoud van het id_*.pub bestand kopiëren.

Als dit niet het geval is, kunt u een nieuw paar openbare en privé-sleutels maken met de volgende opdracht:

$ ssh-keygen
 

Druk op Enter of Return om de standaardlocatie te accepteren. Voer een wachtwoordzin in en voer deze opnieuw in wanneer daarom wordt gevraagd, of laat deze leeg.

Zorg ervoor dat uw SSH-sleutel is toegevoegd aan de ssh-agent. Start de ssh-agent op de achtergrond als deze nog niet actief is:

$ eval "$(ssh-agent -s)"
 

Voeg uw SSH-sleutel toe aan de ssh-agent. Merk op dat u id_rsa in de opdracht moet vervangen door de naam van uw privésleutelbestand :

$ ssh-add ~/.ssh/id_rsa
 

Als u de upstream van een bestaande repository wilt wijzigen van HTTPS naar SSH, kunt u de volgende opdracht uitvoeren:

$ git remote set-url origin ssh://git@bitbucket.server.com:7999/projects/your_project.git
 

Om een nieuwe repository over SSH te klonen, kunt u de volgende opdracht uitvoeren:

$ git clone ssh://git@bitbucket.server.com:7999/projects/your_project.git
 

De upstream-afstandsbediening instellen

Als je een vork hebt gekloond (bijvoorbeeld een open source-project op Github), heb je misschien geen push-toegang tot de upstream-repository, dus je hebt beide vork nodig, maar je kunt de upstream-repository ophalen.

Controleer eerst de namen op afstand:

$ git remote -v
origin    https://github.com/myusername/repo.git (fetch)
origin    https://github.com/myusername/repo.git (push)
upstream  # this line may or may not be here
 

Als er upstream al is (het is op sommige Git-versies), moet je de URL instellen (momenteel is deze leeg):

$ git remote set-url upstream https://github.com/projectusername/repo.git
 

Als de upstream er niet is, of als je ook de vork van een vriend / collega wilt toevoegen (momenteel bestaan ze niet):

$ git remote add upstream https://github.com/projectusername/repo.git
$ git remote add dave https://github.com/dave/repo.git
 

Uw gebruikersnaam en e-mailadres instellen

You need to set who you are *before* creating any commit.  That will allow commits to have the right author name and email associated to them.
 

Het heeft niets te maken met authenticatie bij het pushen naar een externe repository (bijv. Bij het pushen naar een externe repository met uw GitHub-, BitBucket- of GitLab-account)

Gebruik git config --global om die identiteit voor alle repositories aan te git config --global
Hiermee wordt de instelling opgeslagen in het .gitconfig bestand van uw gebruiker: bijvoorbeeld $HOME/.gitconfig of voor Windows, %USERPROFILE%\.gitconfig .

git config --global user.name "Your Name"
git config --global user.email mail@example.com
 

Gebruik git config in een repo om een identiteit voor een enkele repository aan te geven.
Dit slaat de instelling op in de individuele repository, in het bestand $GIT_DIR/config . bijv. /path/to/your/repo/.git/config .

cd /path/to/my/repo
git config user.name "Your Login At Work"
git config user.email mail_at_work@example.com
 

Instellingen die zijn opgeslagen in het configuratiebestand van een repository hebben voorrang op de algemene configuratie wanneer u die repository gebruikt.


Tips: als je verschillende identiteiten hebt (één voor open-source project, één op het werk, één voor privé-repo's, ...), en je wilt niet vergeten de juiste in te stellen voor elke verschillende repos waaraan je werkt :

  • Verwijder een globale identiteit

    git config --global --remove-section user.name
    git config --global --remove-section user.email
     
2.8
  • Om git te dwingen alleen naar je identiteit te zoeken binnen de instellingen van een repository, niet in de globale configuratie:

      git config --global user.useConfigOnly true
     

Op die manier, als je vergeet je user.name en user.email voor een gegeven repository en je probeert een commit te maken, zie je:

no name was given and auto-detection is disabled
no email was given and auto-detection is disabled
 

Code delen

Om uw code te delen, maakt u een repository op een externe server waarnaar u uw lokale repository kopieert.

Om het gebruik van ruimte op de externe server te minimaliseren, maakt u een kale repository: een die alleen de .git objecten heeft en geen werkkopie in het bestandssysteem maakt. Als bonus stel je deze afstandsbediening in als een upstream-server om eenvoudig updates te delen met andere programmeurs.

Op de externe server:

git init --bare /path/to/repo.git
 

Op de lokale machine:

git remote add origin ssh://username@server:/path/to/repo.git
 

(Merk op dat ssh: slechts één mogelijke manier is om toegang te krijgen tot de externe repository.)

Kopieer nu uw lokale repository naar de afstandsbediening:

git push --set-upstream origin master
 

Door --set-upstream (of -u ) toe te voegen, is een upstream (tracking) --set-upstream gemaakt die wordt gebruikt door Git-opdrachten zonder argument, bijvoorbeeld git pull .