Mit Git beginnen
Alexander Groß
agross@therightstuff.de
@agross
Vom 21. – 23.10.2011 findet zum vierten Mal der
.NET Open Space in Leipzig statt
Anmeldung: netopenspace.de
Heute
 grundlegende Operationen verstehen
 Arbeit mit Servern/im Team
 Git Workflow
 Cool Stuff
Delta Storage
Snapshot Storage
http://www.flickr.com/photos/saschaaa/152502539/
http://www.flickr.com/photos/mklingo/717372511/
$ git log
commit ad9a291416165bb95a541321a7acf9cef9731c1d
Author: Alexander Groß <agross@therightstuff.de>
Date: Thu Sep 9 15:18:55 2011 +0200
hello, nrwonf
Installation
Cygwin
msysGit
GitExtensions
TortoiseGit
C:DontPanic
/c/DontPanic
$ git <verb>
$ git help <verb>
$ git <verb> --help
Git Basics
Repository erzeugen
$ git init
Initialized empty Git repository in
/scratch/.git/
Repository herunterladen
$ git clone git://github.com/machine/
machine.specifications.git
Änderungen einchecken
Checking…
$ git status
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files
and use "git add" to track)
Working…
$ touch hello_nrwconf.txt
$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be
committed)
#
# hello_nrwconf.txt
nothing added to commit but untracked files present (use
"git add" to track)
Dateien unter Source Control bringen
$ git add --all
oder:
$ git add hello_nrwconf.txt
Dateien unter Source Control bringen
$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to
# unstage)
#
# new file: hello_nrwconf.txt
Commit erzeugen
$ git commit –m “hello, nrwconf”
[master (root-commit) ea4bdca] hello, nrwconf
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 hello, nrwconf.txt
.gitignore
/Source/*/obj
/Source/*/bin
_ReSharper.*
*.user
*.suo
beinhaltet Dateien und Verzeichnisse die nicht
unter Source Control kommen
Protokoll
git log
gitk –all &
git log --oneline
git log -10
git log -1 --patch
Arbeiten mit Remotes
Clone
$ git clone git@github.com:machine/
machine.specifications.git
Cloning into machine.specifications...
remote: Counting objects: 10409, done.
remote: Compressing objects: 100% (2986/2986), done.
remote: Total 10409 (delta 7402), reused 10090
Receiving objects: 100% (10409/10409), 108.96 MiB.
Resolving deltas: 100% (7402/7402), done.
$ cd machine.specifications
$ git remote
origin
Remote-Operationen
$ git fetch origin
$ git push origin master
$ git pull origin master *
http://www.flickr.com/photos/sethponek/1581346753
Git Server
 Windows File Share
git clone //server/repository.git
 SSH-Server mit Public Key-Authentifizierung
und granularen Benutzerberechtigungen
http://bit.ly/oZbhtt
git clone git@server:repository.git
http://www.flickr.com/photos/wyrmworld/4837749008
Ein Commit
Mehrere Commits
Branches
Branch erzeugen
$ git branch testing
$ git checkout -b testing
Der HEAD
Branch wechseln
$ git checkout testing
Änderung committen
$ git commit -m „work on testing“
Zurückwecheln
$ git checkout master
Eine weitere Änderung
$ git commit –m „work on master“
Divergente Commits
Ein Merge
$ git checkout master
$ git merge experiment
Rebase
$ git checkout experiment
$ git rebase master
Fast-forward merge
$ git checkout master
$ git merge experiment
Regeln
http://www.flickr.com/photos/smolianitski/4818714313/
http://www.flickr.com/photos/lisaconnolly/27339281
 git cherry-pick
 git commit --amend
 git rebase --interactive
 git stash
 git {add|reset|rm|log|…} --patch
 git reflog
 git bisect
gitflow
Link
therightstuff.de/download/git.zip
Versionskontrolle mit Git

Versionskontrolle mit Git