Eine kleine Anleitung für Git

Erstellen eines Git Repros

Erzeugen mit:

1
#> git init 

Vom Server holen mit:

1
#> git clone remote user@server:path 

Abgleich

  • hochschieben git push
  • herunterladen git pull
  • lokales repository mit einem Remote Repository verbinden git remote add origin user@server:path

Neues Git Repository anlegen und mit vorhanden Daten befüllen

Szenario: Ich habe ein bißchen Sourcecode und möchte den jetzt in ein Git Repository wandeln.

Auf dem Git Server wird dazu folgendes gemacht

1
2
3
4
  scotty:/home/git # mkdir test2.git
          scotty:/home/git # cd test2.git/
          scotty:/home/git/test2.git # git init --bare
          Initialisierte leeres Git-Projektarchiv in /home/git/test2.git/

D.h. Zuerst wird ein leeres Verzeichnis angelegt, anschliessend in dieses Verzeichniss gewechselt und dieses dann zu einem git Verzeichnis gemacht. Wenn man einen extra User hat (z.B git), sollte man das entweder unter diesem User tun, oder dem User Schreibreichte auf die Dateien und das erzeugte Verzeichnis geben.

Auf dem Client mit dem vorhandenem Projektverzeichniss:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
        ~/Dokumente/ct/ $> git init
         Initialisierte leeres Git-Projektarchiv in
                  /home/stephan/Dokumente/ct/.git/
         ~/Dokumente/ct/ $> git add *
         ~/Dokumente/ct/ $> git commit -m 'Initiales Commit'
         ~/Dokumente/ct/ $> # git => der Remote User, # #> scotty Remote
        Server
                  # test2.git remote Verzeichnis
         ~/Dokumente/ct/ $> git remote add origin git@scotty:test2.git
         ~/Dokumente/ct/ $> git push --set-upstream origin master
         ~/Dokumente/ct/ $> git push
         Counting objects: 141, done.
         Delta compression using up to 4 threads.
         Compressing objects: 100% (132/132), done.
         Writing objects: 100% (141/141), 111.36 KiB, done.
         Total 141 (delta 32), reused 0 (delta 0)
         To git@scotty:test2.git
         * [new branch] master -> master
         Branch master set up to track remote branch master from origin.
  • Dieses Verzeichnis woanders wieder auschecken:
1
2
3
4
5
6
7
8
         /tmp/ $> git clone git@scotty:test2.git
         Klone nach 'test2'...
         remote: Counting objects: 141, done.
         remote: Compressing objects: 100% (100/100), done.
         remote: Total 141 (delta 32), reused 141 (delta 32)
         Empfange Objekte: 100% (141/141), 111.36 KiB, done.
         Löse Unterschiede auf: 100% (32/32), done.
          /tmp/ $> 
  • Änderungen einchecken und hochladen:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
         /tmp/test2/myapp/ $> git rm \#schema.sql\#    
         rm 'myapp/#schema.sql#'
         /tmp/test2/myapp/ $> git commit -m 'Emacs Datei entfernt'
         \#schema.sql\#
         [master 10239e6] Emacs Datei entfernt
         1 file changed, 10 deletions(-)
         delete mode 100644 myapp/#schema.sql#
         /tmp/test2/myapp/ $> git push 
         Counting objects: 5, done.
         Delta compression using up to 4 threads.
         Compressing objects: 100% (2/2), done.
         Writing objects: 100% (3/3), 285 bytes, done.
         Total 3 (delta 1), reused 0 (delta 0)
         To git@scotty:test2.git
         884b80a..10239e6  master -> master
         /tmp/test2/myapp/ $> 
  • Änderungen in anderem Verzeichnis übernehmen:
1
2
3
4
         ~/Dokumente/ct/ $> git log 
          commit 884b80a9467b48837b8a120a176ec15ce36da921
          Author: Stephan Weissenrieder <sw@nutzerverwaltung.de>
          Date:   Thu Apr 4 14:23:24 2013 +0200

Initiales Einchecken

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
        ~/Dokumente/ct/ $> git pull 
        remote: Counting objects: 5, done.
        remote: Compressing objects: 100% (2/2), done.
        remote: Total 3 (delta 1), reused 0 (delta 0)
        Unpacking objects: 100% (3/3), done.
        Von scotty:test2
        884b80a..10239e6  master     -> origin/master
        Aktualisiere 884b80a..10239e6
        Fast-forward
        myapp/#schema.sql# | 10 ----------
        1 file changed, 10 deletions(-)