19. Oktober 2017
Studiengang Medieninformatik an der Technischen Hochschule Köln
Campus Gummersbach
Sascha Lemke B.Sc.
Basierend auf den Folien von Jan Kus M.Sc.
Wer weiss was ein Versionierungssystem ist?
Wer kennt Git?
Wer kennt github?
Wer kennt andere Versionierungssysteme?
Was ist Versionierung und ein Versionierungssystem?
[...] is the management of changes to documents, computer programs, large web sites, and other collections of information. Changes are usually identified by a number or letter code, termed the "revision number," "revision level," or simply "revision."
Ein Beispiel für Versionierung ist z.B.: Time Machine auf dem Mac oder z.B. Reinigungsprotokolle auf Toiletten die im nachhinein archiviert werden
Quelle: https://en.wikipedia.org/wiki/Version_control, Stand: 18.10.2017
A version control system is a piece of software that helps the developers on a software team work together and also archives a complete history of their work.
Quelle: Version Control by Example, Eric Sink, Stand: 18.10.2017
Git ist ein verteiltes Versions-Kontrollsystem mit dem Hauptaugenmerkmal auf Geschwindigkeit, Daten Integrität und der Unterstützung von verteilten und nicht-linearen Versionierungsvorgängen.
Charakteristiken von Git:
Quelle: Pro Git, Scott Chacon & Ben Straub, Second Edition, 2015
Eine weitere wichtige Eigenschaft ist, dass Git, als ein dezentrales Versionierungssystem direkt sowohl einen Client als auch einen Server bereitstellt. Somit kann der Code zwischen den einzelnen Team-Mitgliedern weitergegeben werden ohne ihn auf eine zentrale Instanz zu besitzen. Jedoch können Git-Server Implementierungen nützlich sein um z.B.: erweiterte Zugriffskontrollen, Anzeige von Inhalt und das Verwalten von mehreren Repositories anzubieten.
Was ist Github?
GitHub is a website where you can upload a copy of your Git repository. It is a Git repository hosting web service, which offers all of the distributed revision control functionality of Git as well as adding its own features. Unlike Git, which is strictly a command-line tool, GitHub provides a web-based graphical interface and desktop as well as mobile integration. It also provides access control and several collaboration features such as wikis, task management, and bug tracking and feature that can be helpful for projects.
GitHub ist NICHT Git - GitHub benutzt Git
Bitte merken!
Quelle: GitHub For Beginners: Don't Get Scared, Get Started, 18.10.2017
https://th-koeln.sciebo.de/index.php/s/QsZDomtF9OnjwsT
Wie erstelle ich ein Repository auf Github?
Bitte https://github.com/new
besuchen und wir gehen diese Schritte gemeinsam durch.
git init
oder git clone
: Initieeren eines lokalen git-Repository oder das kopieren eines Remote-Repository in ein lokales Verzeichnis (z.B.: ein Github Repository)[Änderungen am Code vornehmen]
git add
: das Bekanntmachen der Veränderungen oder neuen Dateien an git. Ein so genanntes Snapshot. Es ist noch nicht fester Bestandteil der Repository.
git commit
: Hinzufügen der Snapshots in die Repository.
git push
: Eine Kopie der Repository an das Remote-Repository laden. Nur im Falle das ein existiert (wie z.B.: Github)
git config:
Short for “configure,” this is most useful when you’re setting up Git for the first time.
git help:
Forgot a command? Type this into the command line to bring up the 21 most common git commands. You can also be more specific and type “git help init” or another term to figure out how to use and configure a specific git command.
git status:
Check the status of your repository. See which files are inside it, which changes still need to be committed, and which branch of the repository you’re currently working on.
git init:
Initializes a new Git repository. Until you run this command inside a repository or directory, it’s just a regular folder. Only after you input this does it accept further Git commands.
git clone:
Importing a Git repository using the command line
git add:
This does not add new files to your repository. Instead, it brings new files to Git’s attention. After you add files, they’re included in Git’s “snapshots” of the repository.
git commit:
Git’s most important command. After you make any sort of change, you input this in order to take a “snapshot” of the repository. Usually it goes git commit -m "Message here."" The -m indicates that the following section of the command should be read as a message.
git push:
If you’re working on your local computer, and want your commits to be visible online on GitHub as well, you “push” the changes up to GitHub with this command.
git pull:
If you’re working on your local computer and want the most up-to-date version of your repository to work with, you “pull” the changes down from GitHub with this command.
git branch:
Working with multiple collaborators and want to make changes on your own? This command will let you build a new branch, or timeline of commits, of changes and file additions that are completely your own. Your title goes after the command. If you wanted a new branch called "cats" you’d type git branch cats
git merge:
When you’re done working on a branch, you can merge your changes back to the master branch, which is visible to all collaborators. git merge cats
would take all the changes you made to the "cats" branch and add them to the master.
git checkout:
Literally allows you to "check out" a repository that you are not currently inside. This is a navigational command that lets you move to the repository you want to check. You can use this command as git checkout master
to look at the master branch, or git checkout cats
to look at another branch.
One More Thing: Git Commit Messages
Wenn man im verteilten Team arbeitet, dann ist es sehr wichtig mit aussagekräftigen Commit Messages zu arbeiten. Ein unlesbares Beispiel:
$ git log --oneline -5 --author cbeams"
e5f4b49 Re-adding ConfigurationPostProcessorTests after its brief removal in r814. @Ignore-ing the testCglibClassesAreLoadedJustInTimeForEnhancement() method as it turns out this was one of the culprits in the recent build breakage. The classloader hacking causes subtle downstream effects, breaking unrelated tests. The test method is still useful, but should only be run on a manual basis to ensure CGLIB is not prematurely classloaded, and should not be run as part of the automated build.
22b25e0 Consolidated Util and MutableAnnotationUtils classes into existing AsmUtils
Wenn man im verteilten Team arbeitet, dann ist es sehr wichtig mit aussagekräftigen Commit Messages zu arbeiten. Ein lesbares Beispiel:
$ git log --oneline -5 --author pwebb
5ba3db6 Fix failing CompositePropertySourceTests
84564a0 Rework @PropertySource early parsing logic
e142fd1 Add tests for ImportSelector meta-data
887815f Update docbook dependency and generate epub
ac8326d Polish mockito usage