Wilt u bestanden uitwisselen tussen werk en thuis of gezamenlijk bestanden
gebruiken in een project?
Met Git is snel een eenvoudige Open Source OwnCloud oplossing te realiseren!
1)
Naast de Git software op de lokale computer 2) is het enige dat u nodig heeft een via Internet toegankelijke Unix/Linux computer, waarop u uw eigen Git repository (archief) mag inrichten. In dit voorbeeld gebruiken we een computer van Internet provider XS4ALL, waarop we op “shell” niveau mogen inloggen. 3)
Hoewel Git ontworpen werd t.b.v. software ontwikkeling, is het in brede zin
geschikt om verzamelingen bestanden te beheren.
Git is echter niet geschikt voor grote binaire bestanden (bijv. video).
4)
Gebruik ssh om met gebruikersnaam (bijv. “myname”) en wachtwoord in te loggen in de Unix/Linux computer: 5)
$ ssh myname@shell.xs4all.nl The authenticity of host 'shell.xs4all.nl (194.109.21.8)' can't be established. RSA key fingerprint is 8b:16:df:7b:11:7c:78:1c:4d:65:3f:50:71:2b:91:5d. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'shell.xs4all.nl,194.109.21.8' (RSA) to the list of known hosts. myname@shell.xs4all.nl's password: Linux xs8.xs4all.nl 3.2.52-xsserver #1 SMP Mon Nov 11 23:22:44 CET 2013 x86_64 Welkom bij XS4ALL ! xs8.xs4all.nl:/home/m/myname$
Maak een “bare” Git repository aan: 6) 7)
$ mkdir mygitrepo.git $ cd mygitrepo.git $ git init --bare Initialized empty Git repository in /home/auto/myname/mygitrepo.git/
En hiermee is onze Git “server” klaar.
$ exit Connection to shell.xs4all.nl closed.
Maak als gewone gebruiker (bijv. “myname”) een lege Git repository aan op de lokale computer:
$ mkdir mygitrepo $ cd mygitrepo $ git init Initialized empty Git repository in /home/myname/mygitrepo/.git/
Maak de Git server (een z.g. “remote”) bekend in deze Git repository:
(Als remote naam is hier “xs4all” gekozen.)
$ git remote add xs4all ssh://myname@shell.xs4all.nl/~/mygitrepo.git
Check het resultaat:
$ git remote -v xs4all ssh://myname@shell.xs4all.nl/~/mygitrepo.git (fetch) xs4all ssh://myname@shell.xs4all.nl/~/mygitrepo.git (push)
Controleer of het mogelijk is om data op te halen van de Git server:
$ git fetch xs4all myname@shell.xs4all.nl's password:
Alvorens we de nieuwe Git repository kunnen gebruiken, moeten we onze identiteit bekendmaken:
$ git config --global user.name "Myname" $ git config --global user.email "Myname@myhome.net"
Voeg bestanden toe in de Git repository van de Git client computer:
$ pwd /home/myname/mygitrepo $ cal | tee cal.txt February 2014 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 $ echo 'Hello there!' > hello.txt $ ls -l total 8 -rw-r--r-- 1 myname myname 188 Feb 18 10:37 cal.txt -rw-r--r-- 1 myname myname 13 Feb 18 10:38 hello.txt
Nieuwe data wordt aan de Git repository toegevoegd d.m.v. een “Commit”.
Een Commit is een bij elkaar behorende set van wijzigingen aan de
bestanden in de werkruimte.
8)
Schrijf nu de nieuwe Commit in de Git repository:
$ git add . $ git commit -m 'Mijn eerste Commit!' [master (root-commit) 8d84f9d] Mijn eerste Commit! 2 files changed, 9 insertions(+) create mode 100644 cal.txt create mode 100644 hello.txt
Met het commando “git log” kunnen we de historie van de een branch bekijken: 11) 12)
$ git log commit 88b32f6fb1fea7a0742f9060c5f4daa262e94630 Author: Myname <Myname@myhome.net> Date: Tue Feb 18 11:57:47 2014 +0100 Mijn eerste Commit!
Het commando “git fetch” haalt de data van de Git server:
(In dit voorbeeld is er al data op de Git server geplaatst
vanuit een andere Git client.)
$ git fetch xs4all myname@shell.xs4all.nl's password: warning: no common commits remote: Counting objects: 3, done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. From ssh://shell.xs4all.nl/~/mygitrepo * [new branch] master -> xs4all/master
Met het commando “git log” kunnen we de historie van de remote branch “xs4all/master” bekijken: 13)
$ git log xs4all/master commit ec6468d43cfbeddd317073224ffee6019dc55c09 Author: Myworkname <Myworkname@myworkplace.com> Date: Mon Feb 17 14:50:58 2014 +0100 Kalender 2014
Het commando “git rebase” voegt de lokale data in de Git repository samen met de data van de Git server: 14)
$ git rebase xs4all/master First, rewinding head to replay your work on top of it... Applying: Mijn eerste Commit!
Met het commando “git log” kunnen we de historie van de actuele branch (master) bekijken: 15)
$ git log commit 88b32f6fb1fea7a0742f9060c5f4daa262e94630 Author: Myname <Myname@myhome.net> Date: Tue Feb 18 11:57:47 2014 +0100 Mijn eerste Commit! commit ec6468d43cfbeddd317073224ffee6019dc55c09 Author: Myworkname <Myworkname@myworkplace.com> Date: Mon Feb 17 14:50:58 2014 +0100 Kalender 2014
Met het commando “git push” zenden we de samengevoegde data naar de Git server:
$ git push xs4all master myname@shell.xs4all.nl's password: Counting objects: 5, done. Compressing objects: 100% (3/3), done. Writing objects: 100% (4/4), 438 bytes, done. Total 4 (delta 0), reused 0 (delta 0) To ssh://myname@shell.xs4all.nl/~/mygitrepo.git ec6468d..88b32f6 master -> master
Wanneer de Git client niet eerst gesynchroniseerd is met de Git server wordt de “git push” door de Git server geweigerd:
$ git push xs4all master myname@shell.xs4all.nl's password: To ssh://myname@shell.xs4all.nl/~/mygitrepo.git ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to 'ssh://myname@shell.xs4all.nl/~/mygitrepo.git' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Merge the remote changes (e.g. 'git pull') hint: before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Met het grafische programma “gitk” kunnen we een actueel overzicht opvragen van de Git repository:
$ pwd /home/myname/mygitrepo $ gitk --all &
Links | |
---|---|
http://git-scm.com/book/nl | Git-scm boek NL |
https://www.kernel.org/pub/software/scm/git/docs/user-manual.html | Git User's Manual |
http://git-scm.com/downloads | Git-scm downloads (diverse platformen) |
Copyright © 2014 Integrated Services; Tux4u.nl
Author: Marjan Waldorp; git/git-owncloud 2014-02-21