Git - Fast Version Control System



Ähnliche Dokumente
Von SVN zu Git. Daniel Willmann cbna

Versionsverwaltung für die KU Betriebssysteme. Eine Einführung

Versionkontrolle mit git

Verteile Revisionskontrolle mit GIT

git Änderungen verwalten mit git

Einführung in git. Johannes Gilger & Matthias Lederhofer. Rechen- und Kommunikationszentrum der RWTH Aachen Network Operation Center. 14.

Praktikum Ingenieurinformatik (PI)

Linux Cafe Referent: Bernd Strößenreuther

Medieninformatik Praktikum. Jens Rademacher

Gitting started. Christian Neukirchen. 14dec2011

Verteilte Versionskontrolle mit GIT Dortmund Ansgar Brauner - GreenPocket GmbH - Köln

Git-Grundlagen für Entwickler. Thomas Claudius

Einführung Git Interna Workflows Referenzen. Git. Fast Version Control System. Michael Kuhn

Die Projek*ools. Files, Git, Tickets & Time

Enes Kurnaz, Oliver Nagel Institut für Mathematik und Informatik. Versionsverwaltung mit Git

Apache Subversion (SVN)

Dr. R. Guderlei exxcellent solutions gmbh Tim Felgentreff HPI. Versionsmanagement. Zentral oder Verteilt?

Einführung in Git. Dirk Deimeke. 19. August My own IT. ddeimeke (My own IT) Einführung in Git 19. August / 23

Versionierung und Bugtracking mit Git(Hub)

Einführung in Git. master. Initial commit

Arbeiten mit dem Versionsverwaltungssystem. Jannik Kramer Proseminar Werkzeuge für das wissenschaftliche Arbeiten

Moodle aktuell halten mit Git

Einführung in Verteilte Versionskontrollsysteme. am Beispiel von Git

Sourcecodeverwaltung

Dezentrale Versionsverwaltung

Git-Workflows im Alltag

Git eine kurze Einführung

Konfigurationsdateien mit Git verwalten

Eine Einführung in das verteilte Quelltextverwaltungssystem Git

Source Code Verwaltung mit Git

Having fun with GIT. Chris Wewerka. Software Development Specialist

Versionsverwaltung. Seminar Softwareentwicklung in der Wissenschaft Robert Wiesner

git Workshop Matthias Beyer Hochschule Furtwangen University matthias. hs-furtwangen. de beyermatthias. de 19.

git & git-flow Jens Sandmann Warpzone Münster e.v. Jens Sandmann (WZ) git & git-flow / 31

Versionskontrollsysteme. Uwe Berger & Markus Dahms <bralug@bralug.de>

Gitting started. Christian Neukirchen. 05nov2010

Programmieren 2 06 Git-Teamwork und Egit

Git in großen Projekten

Git II. Dezentrale Versionsverwaltung im Team

Einführung in Subversion. Tutorium SWP

Versionsverwaltung mit Mercurial für Einsteiger

Git eine kurze Einführung. Malte Schmitz ~ Mai 2012

Semesterprojekt Entwicklung einer Suchmaschine für Alternativmethoden zu Tierversuchen. Versionierung und Bugtracking mit GitHub

Versionsverwaltung mit git. Christoph Knabe FB VI

Versionsverwaltung mit GIT

Prof. Dr. Marko Boger. Prof. Dr. Christian Johner. Versionsmanagement

FS cs108 Programmierpraktikum Subversion. Lukas Beck Cedric Geissmann Alexander Stiemer

Versionsverwaltung mit SVN

Crashkurs Subversion / Trac / Provisioning. Jan Zieschang, , Berlin

SVN-Einführung für das SEP DS und CM. Julian Timpner, Stefan Brenner, Stephan Rottmann

Torsten Flatter inovex GmbH. "Git.NET" gibt's nicht?

Mapra: C++ Teil 3. Felix Gruber, Michael Rom. IGPM, RWTH Aachen. 10. Mai 2016

WOZU VERSIONSKONTROLLE?

Versionskontrollsysteme

Software Engineering in der Praxis

Git im praktischen Einsatz

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Buildsysteme

EGit: Die effiziente Git- Integration in Eclipse

CVS. The open standard for version control. (Concurrent Versions System) Maik Zemann CVS

Versionskontrolle mit Git

Versionskontrolle mit Mercurial. Michael Gebetsroither

Git-Workshop, Teil I

Apache Subversion (SVN)

Revisionskontrollsystem GIT

Spiel, Spaß und Spannung mit Git

Versionsverwaltung GIT & SVN. Alexander aus der Fünten. Proseminar: Methoden und Werkzeuge, SS Lehrstuhl i9, Prof. Dr. T.

Software-Engineering Grundlagen des Software-Engineering 7.3 Sourcecode-Verwaltung mit Versionsmanagement-Systemen Einführung in Subversion (SVN)

Mapra: C++ Teil 5. Felix Gruber, Sven Groß. 16. Mai IGPM, RWTH Aachen. Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 5 16.

Subversion. Einstieg in die. Versionskontrolle

git verteilte Versionskontrolle

Einführung zu Git. Das Nötigste für die Studienarbeit im Modul Datenkommunikation. Ege Inanc

Git. Dezentrale Versionsverwaltung im Team - Grundlagen und Workflows. von René Preißel, Bjørn Stachmann. 2., aktualisierte und erweiterte Auflage

Verteilte Versionskontrolle mit Mercurial (DVCS)

Apache Subversion (SVN)

Versionsmanagement. Software(technik)praktikum: Vorlesung 3: Versionsmanagement

Transkript:

Git - Fast Version Control System Sebastian Harl <Sebastian.Harl@sternwarte.uni-erlangen.de> Astronomisches Institut der Universität Erlangen-Nürnberg 17. Oktober 2008

Was ist Git? VCS (Version Control System) dezentral schnell und effizient kryptographisch gesichert Toolkit design OpenSource (GPLv2)

Geschichte ursprünglich von Linus Torvalds geschrieben (2005) aktuell von Junio C. Hamano gepflegt große Entwickler-Gemeinde 14. Februar 2007: Git 1.5.0 mittlerweile weite Verbreitung (Linux Kernel, Ruby on Rails, WINE, X.org, Debian, collectd ;-))

Community Webseite: http://git.or.cz/ Mailing-Liste: git@vger.kernel.org (auch über Gmane) IRC: #git auf FreeNode

Inhalt Die Git Objekt-Datenbank Übersicht Sich Git vorstellen Bunt und in Farbe Repositories erstellen Editieren, ändern,... Änderungen und Historie betrachten Branching und Merging Arbeiten mit anderen Repositories Repository-Pflege Frontends Git Goodies

Die Git Objekt-Datenbank Die Git Objekt-Datenbank

Die Git Objekt-Datenbank It s show time! ;-)

Übersicht Übersicht >> 100 einzelne Befehle Porcelains und Plumbing Dokumentation als Manpages - git(7) git help, git <command> -h sehr nette Tab-Completion in der zsh Benutzer Handbuch: http://www.kernel.org/pub/software/scm/git/docs/user-manual.html

Sich Git vorstellen Sich Git vorstellen git config --global user.name <Dein Name> git config --global user.email <du@deine-domain.tld>

Bunt und in Farbe Bund und in Farbe git config --global color.branch auto git config --global color.diff auto git config --global color.status auto

Repositories erstellen Repositories erstellen $ mkdir project $ cd project $ git init Initialized empty Git repository in.../.git/ $ mkdir project-repo $ svnadmin create project-repo $ svn checkout \ file:// pwd /project-repo \ project Checked out revision 0. $ git clone <rep>... -

Repositories erstellen Repositories erstellen $ mkdir project $ cd project $ git init Initialized empty Git repository in.../.git/ $ mkdir project-repo $ svnadmin create project-repo $ svn checkout \ file:// pwd /project-repo \ project Checked out revision 0. $ git clone <rep>... -

Repositories erstellen Repositories erstellen $ mkdir project $ cd project $ git init Initialized empty Git repository in.../.git/ $ mkdir project-repo $ svnadmin create project-repo $ svn checkout \ file:// pwd /project-repo \ project Checked out revision 0. $ git clone <rep>... -

Repositories erstellen Repositories erstellen $ mkdir project $ cd project $ git init Initialized empty Git repository in.../.git/ $ mkdir project-repo $ svnadmin create project-repo $ svn checkout \ file:// pwd /project-repo \ project Checked out revision 0. $ git clone <rep>... -

Editieren, ändern,... Editieren, ändern,... $ vim foo bar $ git add foo bar $ vim foo bar $ svn add foo bar add, rm, mv add, delete, move $ git commit $ svn commit $ git reset --hard HEAD^ $ svn merge -r 124:123. reset, revert, checkout revert, merge

Editieren, ändern,... Editieren, ändern,... $ vim foo bar $ git add foo bar $ vim foo bar $ svn add foo bar add, rm, mv add, delete, move $ git commit $ svn commit $ git reset --hard HEAD^ $ svn merge -r 124:123. reset, revert, checkout revert, merge

Editieren, ändern,... Editieren, ändern,... $ vim foo bar $ git add foo bar $ vim foo bar $ svn add foo bar add, rm, mv add, delete, move $ git commit $ svn commit $ git reset --hard HEAD^ $ svn merge -r 124:123. reset, revert, checkout revert, merge

Editieren, ändern,... Editieren, ändern,... $ vim foo bar $ git add foo bar $ vim foo bar $ svn add foo bar add, rm, mv add, delete, move $ git commit $ svn commit $ git reset --hard HEAD^ $ svn merge -r 124:123. reset, revert, checkout revert, merge

Editieren, ändern,... Editieren, ändern,... $ vim foo bar $ git add foo bar $ vim foo bar $ svn add foo bar add, rm, mv add, delete, move $ git commit $ svn commit $ git reset --hard HEAD^ $ svn merge -r 124:123. reset, revert, checkout revert, merge

Editieren, ändern,... Editieren, ändern,... $ vim foo bar $ git add foo bar $ vim foo bar $ svn add foo bar add, rm, mv add, delete, move $ git commit $ svn commit $ git reset --hard HEAD^ $ svn merge -r 124:123. reset, revert, checkout revert, merge

Editieren, ändern,... Commit Meldungen schreiben Einzeilige, kurze (< 80, optimal < 50 Zeichen) Zusammenfassung Leerzeile Detaillierte Beschreibung nicht vorgeschrieben, aber common practice und von vielen Tools erwartet

Editieren, ändern,... git-remote: do not use user input in a printf format string git remote show substituted the remote name into a string that was later used as a printf format string. If a remote name contains a printf format specifier like this: $ git remote add foo%sbar. then the command $ git remote show foo%sbar would print garbage (if you are lucky) or crash. This fixes it.

Änderungen und Historie betrachten Änderungen und Historie betrachten $ git status $ git diff $ svn status $ svn diff less $ git log $ tig $ svn log less $ git show $ git show HEAD:foo $ svn diff -c 123 $ svn cat -r 123 foo $ git tag $ svn copy trunk tags/v123

Änderungen und Historie betrachten Änderungen und Historie betrachten $ git status $ git diff $ svn status $ svn diff less $ git log $ tig $ svn log less $ git show $ git show HEAD:foo $ svn diff -c 123 $ svn cat -r 123 foo $ git tag $ svn copy trunk tags/v123

Änderungen und Historie betrachten Änderungen und Historie betrachten $ git status $ git diff $ svn status $ svn diff less $ git log $ tig $ svn log less $ git show $ git show HEAD:foo $ svn diff -c 123 $ svn cat -r 123 foo $ git tag $ svn copy trunk tags/v123

Änderungen und Historie betrachten Änderungen und Historie betrachten $ git status $ git diff $ svn status $ svn diff less $ git log $ tig $ svn log less $ git show $ git show HEAD:foo $ svn diff -c 123 $ svn cat -r 123 foo $ git tag $ svn copy trunk tags/v123

Änderungen und Historie betrachten Änderungen und Historie betrachten $ git status $ git diff $ svn status $ svn diff less $ git log $ tig $ svn log less $ git show $ git show HEAD:foo $ svn diff -c 123 $ svn cat -r 123 foo $ git tag $ svn copy trunk tags/v123

Änderungen und Historie betrachten Änderungen und Historie betrachten $ git status $ git diff $ svn status $ svn diff less $ git log $ tig $ svn log less $ git show $ git show HEAD:foo $ svn diff -c 123 $ svn cat -r 123 foo $ git tag $ svn copy trunk tags/v123

Änderungen und Historie betrachten Änderungen und Historie betrachten $ git status $ git diff $ svn status $ svn diff less $ git log $ tig $ svn log less $ git show $ git show HEAD:foo $ svn diff -c 123 $ svn cat -r 123 foo $ git tag $ svn copy trunk tags/v123

Änderungen und Historie betrachten Änderungen und Historie betrachten $ git status $ git diff $ svn status $ svn diff less $ git log $ tig $ svn log less $ git show $ git show HEAD:foo $ svn diff -c 123 $ svn cat -r 123 foo $ git tag $ svn copy trunk tags/v123

Branching und Merging Branching und Merging $ git checkout -b new-branch $ svn copy trunk \ branches/new-branch $ git branch master * new-branch $ svn list <repo>/branches new-branch $ git merge master $ git rebase master $ svn merge <some magic> -

Branching und Merging Branching und Merging $ git checkout -b new-branch $ svn copy trunk \ branches/new-branch $ git branch master * new-branch $ svn list <repo>/branches new-branch $ git merge master $ git rebase master $ svn merge <some magic> -

Branching und Merging Branching und Merging $ git checkout -b new-branch $ svn copy trunk \ branches/new-branch $ git branch master * new-branch $ svn list <repo>/branches new-branch $ git merge master $ git rebase master $ svn merge <some magic> -

Branching und Merging Branching und Merging $ git checkout -b new-branch $ svn copy trunk \ branches/new-branch $ git branch master * new-branch $ svn list <repo>/branches new-branch $ git merge master $ git rebase master $ svn merge <some magic> -

Branching und Merging Branching und Merging $ git checkout -b new-branch $ svn copy trunk \ branches/new-branch $ git branch master * new-branch $ svn list <repo>/branches new-branch $ git merge master $ git rebase master $ svn merge <some magic> -

Branching und Merging Branching und Merging $ git checkout -b new-branch $ svn copy trunk \ branches/new-branch $ git branch master * new-branch $ svn list <repo>/branches new-branch $ git merge master $ git rebase master $ svn merge <some magic> -

Arbeiten mit anderen Repositories Arbeiten mit anderen Repositories $ git clone <rep>

Arbeiten mit anderen Repositories Arbeiten mit anderen Repositories $ git clone <rep> $ git pull $ git push git format-patch, git send-mail

Arbeiten mit anderen Repositories Arbeiten mit anderen Repositories $ git clone <rep> $ git pull $ git push git format-patch, git send-mail $ git remote add foo <rep>

Arbeiten mit anderen Repositories Unterstützte Protokolle lokal: /path/to/repository/ http: http://domain.tld/repository.git git: git://domain.tld/repository.git ssh: domain.tld:path/to/repository/

Repository-Pflege Repository-Pflege $ git gc

Frontends Frontends tig gitk git gui

Git Goodies Git Goodies

Git Goodies git reflog

Git Goodies git rebase -i

Git Goodies git commit --amend

Git Goodies git add -p

Git Goodies git stash

Git Goodies git bisect

Git Goodies git cherry

Git Goodies Fragen? History: 2006/10/01: LUSC Workshop Weekend 2006 2008/10/04: LUSC Workshop Weekend 2008 2008/10/17: fpipe Team Schulung