MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und...

97
1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0 vom 01.08.2016

Transcript of MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und...

Page 1: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

1 . 1

MIT GITHUB PUSH & PULL

Git und GitHub, wie spielt das zusammen und

wie nutze ich das.Glen Langer

Contao Stammtisch Berlin (24.07.2016)

Version: 1.2.0 vom 01.08.2016

Page 2: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

2 . 1

QuellenOnline Doku von Git / GitHubErfahrung durch AusprobierenBücher (die Dinger aus Papier)

Lizenz

Dieses Werk ist lizenziert unter einer

.

Creative CommonsNamensnennung - Weitergabe unter gleichen Bedingungen

3.0 Deutschland Lizenz

Page 3: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

3 . 1

ÜBER MICHContao seit 2.5.8PHP ZCEForum: BugBusterhttp://contao.ninja/

Page 4: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

4 . 1

WORUM GEHT ES?Die Arbeit mit Git und Github, Branches erstellen, Pull

Requests erzeugen, Versionierung, Push und Pull und einigesmehr.

"Stash mal deinen Working-Tree, sonst gibt's einen Conict,wenn du den Dev-Branch pullst."

Page 5: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

5 . 1

UNTERSCHIEDE SVN <-> GITEs gibt Unterschiede die man als Umsteiger von SVN nach Git

vielleicht wissen sollte.

Page 6: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

5 . 2

Subversion hat ein zentrales Repository

Page 7: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

5 . 3

Git lokale Arbeitskopien sind selbst RepositoriesEinigung auf ein zentrales „upstream“ Repository

Page 8: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

5 . 4

Subversion Leere Verzeichnisse werden vollständig aufgezeichnet.

Git Zeichnet nur Inhalte auf, wodurch leere Verzeichnisse

verloren gehen.

Page 9: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

5 . 4

6 . 1

GIT INSTALLATION⇓

Page 10: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

6 . 2

Git für Windows

Installiert die Kommandozeilenversion (inklusive eines SSHClients) als auch die Standard GUISSH Key entweder über Git Bash, Homeverzeichnis, mkdir.ssh ; ...., oder über Git Gui - Hilfe - SSH Schlüssel anzeigen,dort kann auch einer generiert werden. Wird später fürGitHub benötigt bzw. Git Server über SSH

http://msysgit.github.com/

Page 11: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

6 . 3

Git für MacAb Mavericks (10.9) einfach im Terminal "git" eintippen,falls nicht installiert erfolgt die Frage zur InstallationAlternative: http://git-scm.com/download/mac

Page 12: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

6 . 4

Git für Linux$ sudo apt­get install git­all

Alternative: SSH Key für Git Server über SSH / GitHub:

http://git-scm.com/download/linux

$ ssh­keygen ­t rsa ­b 4096

Page 13: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

7 . 1

GIT KONFIGURATION⇓

Page 14: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

7 . 2

Deine Identität$ git config ­­global user.name "Max Mustermann"

$ git config ­­global user.email [email protected]

Ohne '--global' gelten die Angaben nur für das aktuelleProjekt.

Page 15: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

7 . 3

Dein EditorNormalerweise verwendet Git den Standard-Texteditor

deines Systems

$ git config ­­global core.editor emacs

$ git config ­­global core.editor "'C:/Program Files (x86)/Notepad++/notepad++.exe' ­multiInst ­nosession"

Page 16: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

7 . 4

FormatierungenHier geht es um das Zeilenende Kennzeichen, im Besonderenwenn mit Windows und Linux/Mac gemeinsam gearbeitetwird. Git kann hier automatisch eingreifen.

$ git config ­­global core.autocrlf true

konvertiert bei Commit CRLF in LF, und von LF zurück zuCRLF bei einem Checkout (für Windows Nutzer)

$ git config ­­global core.autocrlf input

konvertiert bei Commit CRLF in LF, aber nicht in die andereRichtung bei einem Checkout (für Linux/Mac Nutzer)

Page 17: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

7 . 5

Etwas FarbeUm die Lesbarkeit zu erhöhen, werden die Ausgaben

eingefärbt

$ git config ­­global color.diff "auto" $ git config ­­global color.status "auto" $ git config ­­global color.branch "auto" $ git config ­­global color.interactive "auto" $ git config ­­global color.ui "true"

Page 18: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

7 . 6

Git AliaseLange Befehle abkürzen? Kein Problem

$ git config ­­global alias.co checkout $ git config ­­global alias.br branch $ git config ­­global alias.ci commit $ git config ­­global alias.st status

Nutzung dann beispielsweise für 'git status':git st

Page 19: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

7 . 7

Git AliaseAuch eigene Befehle bauen ist möglich

$ git config ­­global alias.unstage 'reset HEAD ­­' $ git config ­­global alias.last 'log ­1 HEAD' $ git config ­­global alias.visual '!gitk'

Statt 'git log -1 HEAD' kann nun ausgeführt werden:

$ git last

Page 20: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

7 . 8

ProzessorkerneFür Computer mit mehreren Prozessorkernen (optional)

$ git config ­­global pack.threads "0"

Git nimmt dann soviele Threads wie im System zur Verfügungstehen. Achtung: Eventuell Speicherprobleme [1], Git RAMVerbrauch:

(pack.deltaCacheSize + pack.windowMemory) × pack.threads

Notbremse (z.B. bei Shared Hoster):

$ git config ­­global pack.windowMemory "100m" $ git config ­­global pack.packSizeLimit "100m" $ git config ­­global pack.threads "1"

[1]: Ist dem Autor noch nie passiert, aber gut zu Wissen.

Page 21: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

7 . 9

Einstellungen überprüfenAlle Einstellungen anzeigen, die Git an dieser Stelle (z.B.

innerhalb eines Projektes) bekannt sind:

$ git config ­­list

oder mal schauen in der Datei:

~/.gitconfig

Page 22: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

8

JETZT SEID IHR DRANZeit zur Installation und Konguration von Git.

Page 23: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

9 . 1

GIT REPOSITORY ANLEGEN(es gibt mehrere Möglichkeiten, es folgen zwei)

Page 24: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

9 . 2

Verzeichnis als Git Repository initialisierenIn das zu versionierende Verzeichnis wechseln und eingeben:

$ git init

Ein Unterverzeichnis .git wird erzeugt, darin sind allerelevanten Git Repository Daten, also ein Git RepositoryGrundgerüst.

Zu diesem Zeitpunkt sind noch keine Dateien versioniert.Wie das durchgeführt wird, folgt in den nächsten Folien.

Page 25: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

9 . 3

Existierendes Repository klonenUm das (fremde) GitHub Repository "Spielwiese" von"BugBuster1701" zu klonen, führst Du den folgenden Befehlaus:

$ git clone https://github.com/BugBuster1701/spielwiese.git

Es wird ein Verzeichnis "spielwiese" angelegt und eineArbeitskopie der letzten Version abgelegt. (checkout)

Soll beim Klonen ein anderes Verzeichnis angelegt werden,kann dies als Parameter mit angegeben werden:

$ git clone https://github.com/BugBuster1701/spielwiese.git meinewiese

Page 26: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

9 . 4

Existierendes Repository klonenAuf eigene Repositories kann über SSH zugegriffen werden,ein klonen sähe dann so aus:

$ git clone [email protected]:BugBuster1701/spielwiese.git

Entsprechende Kongurationen für den SSH Zugang sindvorher nötig. (Stichwort: Public Key)

Sollte kein SSH Zugang möglich sein, aber ein Proxy existiert,wäre das auch möglich: (Passwort wird benötigt)

$ git clone https://[email protected]/BugBuster1701/spielwiese.git

Page 27: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

10 . 1

LEBENSZYKLUS DER DATEIENBevor nun mit dem Repository gearbeitet wird, eine kleineLehre über die Zustände die eine Datei haben kann, auchLebenszyklus genannt.

Page 28: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

10 . 2

LEBENSZYKLUS DER DATEIEN

Es gibt dann noch "deleted", Datei wurde dabei ohne GitBefehl gelöscht.

Page 29: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

10 . 3

LEBENSZYKLUS WORKING DIR -REMOTE REPOSITORY

Page 30: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

11 . 1

DIE WICHTIGSTEN BEFEHLE(BEGINNER)

git status, git add, git commit, git tag

git log, git diff, git rm, git mv

Page 31: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

11 . 2

git statusGibt den Zustand der Dateien im Working Dir aus:

$ git status On branch master Your branch is ahead of 'origin/master' by 2 commits. (use "git push" to publish your local commits)

Changes to be committed: (use "git reset HEAD ..." to unstage)

new file: stage

Untracked files: (use "git add ..." to include in what will be committed)

neu.txt

Page 32: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

11 . 3

git addEine neue Datei zur Versionskontrolle hinzufügen bzw. einegeänderte Datei für den nächsten Commit vormerken (Stage)

$ git add . $ git add ­­all $ git add dir/ $ git add <file>

Page 33: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

11 . 4

git commitErzeugt einen Änderungseintrag in einem Branch allerDateien aus dem Stage inklusive Beschreibung.

$ git commit <­­ Editor geht auf für die Beschreibung $ git commit ­m "Beschreibung für diesen Commit" $ git commit ­a ­m "Beschreibung für diesen Commit"

Letzteres überspringt die Stage Area und übernimmt alleÄnderungen direkt in den Commit.

Page 34: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

11 . 5

git tagVorhandene Tags anzeigen oder Tags anlegen, um z.B. eineRelease Version zu markieren (z.B. 1.0.0).

$ git tag $ git tag 1.0.0 $ git tag ­a 1.0.0 ­m "Version 1.0.0" $ git tag ­a 0.5.3 ­m "Version 0.5.3 beta" 9fceb02

alle Tags anzeigenneuen einfachen Tag anlegenneuen kommentierten Tag anlegennachträglich neuen kommentierten Tag anlegen fürCommit Hash

Page 35: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

11 . 6

git logZeigt die letzten Änderungen (Commits) an. Hier einigewenige Varianten:

$ git log$ git log ­p ­2$ git log ­4 ­­oneline $ git log ­4 ­­pretty=format:"%h ­ %an, %ar : %s" $ git log ­­all ­­grep='Hotfix #33'

"git log" ist sehr sehr mächtig, hat haufenweise Optionen.Hilfe mit "git help log" zeigt Manual mit 1300 Zeilen!

Der Output im Einzelnen:

Page 36: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

11 . 7

Ausgabe: git logcommit 5bca2e5d64275f13c63def522b2909d7547024b8 Author: Glen <[email protected]> Date: Thu Jun 23 23:41:43 2016 +0200

im stage

commit 2768012ecfd142a385bea8e11203476a775d6c5f Author: Glen <[email protected]> Date: Sun Sep 27 00:03:03 2015 +0200

Test

Hash, Datum, Commit Beschreibung ist hier zu sehen, nichtjedoch welche Dateien es betraf.

Page 37: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

11 . 8

Ausgabe: git log -p -2commit 5bca2e5d64275f13c63def522b2909d7547024b8 Author: Glen <[email protected]> Date: Thu Jun 23 23:41:43 2016 +0200

im stage

diff ­­git a/commi b/commi new file mode 100644 index 0000000..e69de29

commit 2768012ecfd142a385bea8e11203476a775d6c5f Author: Glen <[email protected]> Date: Sun Sep 27 00:03:03 2015 +0200

Test

diff ­­git a/.gitignore b/.gitignore new file mode 100644

Option "-p" bedeutet Patch Format, "-2" die letzten zweiCommits.

Page 38: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

11 . 9

Ausgabe: git log -4 --oneline5bca2e5 im stage 2768012 Testc4e3d80 composer angepasst 41e2e78 extra in composer.json

Kurzer Hash und Commit Nachricht

Page 39: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

11 . 10

Ausgabe: git log -4 --pretty=format...$ git log ­4 ­­pretty=format:"%h ­ %an, %ar : %s" 5bca2e5 ­ Glen , 2 hours ago : im stage 2768012 ­ Glen , 9 months ago : Test c4e3d80 ­ Glen , 2 years, 8 months ago : composer angepasst 41e2e78 ­ Glen , 2 years, 8 months ago : extra in composer.json

Kurzer Hash, Autor Name, relatives Autor Datum undCommit Nachricht

Page 40: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

11 . 11

Ausgabe: git log --all --grep...$ git log ­­all ­­grep='Hotfix #33' commit fc9e6dc4963ae22f6b645b202ade9729800c9375 Author: Glen <[email protected]> Date: Tue Jul 5 11:42:24 2016 +0200

Hotfix #33, update composer.json

Sucht in allen (--all) Branches in den commit-Nachrichtennach dem Text 'Hotx #33' und gibt das vollständige Log aus

Page 41: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

11 . 12

git diffZeigt die Unterschiede in der Patch Notation an zwischenzwei Commits. Hier einige Varianten:

$ git diff <­­ alle Änderungen, die nicht im Stage sind $ git diff ­­cached <­­ alle Änderungen die im Stage sind *1 $ git diff ­­staged <­­ alle Änderungen zw. Stage und lokalem Repo *1 $ git diff <hash> <hash/tag/HEAD> <­­ Änderungen zwischen zwei Commits $ git diff <hash>/HEAD! <file> <­­ Unterschied zum Vorgänger $ git diff <tag> HEAD >local.patch <­­ Patch erzeugen *2

*1: In der Demo testen wo da der Unterschied ist. (Ergebnis: --staged ist ein Synonym für --cached)

*2: Einspielen mit:

$ git apply local.patch; git commit ­m "applied patch"

Page 42: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

11 . 13

git rmLöscht eine Datei aus dem Repository (beim nächstenCommit) und im Normalfall auch gleich aus dem Working Dir

$ git rm <file> <­­ entfernt Datei aus dem Repo und Working Dir $ git rm ­f <file> <­­ Force wenn Datei geändert im Stage liegt $ git rm ­­cached <file> <­­ entfernt Datei aus dem Repository, bleibt im Working Dir vorhanden

Page 43: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

11 . 14

git mvDatei verschieben oder umbenennen (mit Commitbestätigen)

$ git mv <file_from> <file_to>

Kurzform für:

$ mv file_from file_to $ git rm file_from $ git add file_to

Verschiebung / Umbenennung verfolgen:

$ git log ­­summary ­M90% | grep ­e " rename"

Page 44: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

12 . 1

TIPP: .GITIGNORENicht alles muss versioniert werden im Projektverzeichnis.Dateien und Verzeichnisse können davon ausgenommenwerden.

Dazu wird eine Datei angelegt .gitignore

Page 45: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

12 . 2

Tipp: .gitignore# Transifex /.tx/#for development in vbox /vendor/ composer.lock #IDE.buildpath .project .settings/ #Cachesrc/cache/largebrowscap_*/largebrowscap.iniparts.* src/cache/largebrowscap_*/largebrowscap.patterns.*

Page 46: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

12 . 3

Tipp: .gitignoreGit ignoriert leere Verzeichnisse, kann aber überredetwerden mit einer .gitignore Datei in das entsprechendeVerzeichnis:

# Dummy file to make Git create the folder *!.gitignore

Page 47: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

13 . 1

DEMOAusprobieren der gezeigten Befehle.

git status, git add, git commit, git tag git log, git diff, git rm, git mv

Page 48: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

14 . 1

DIE WICHTIGSTEN BEFEHLE(FORTGESCHRITTENE)

git branch, git checkout, git merge

git remote, git push, git fetch, git pull

Page 49: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

14 . 2

git branchIn Git ist ein Branch ein Zeiger auf einen der Commits. Der

Standardname eines Git-Branches lautet "master".

$ git branch develop

Legt ein Branch an mit Namen "develop", bzw. erzeugt einenneuen Zeiger mit Namen "develop" der auf den aktuellen

Commit zeigt.

Page 50: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

14 . 3

git branch

Im Bild sind drei Commits zu sehen, zeitlich von links nachrechts. Die Pfeile der Commits zeigen auf den jeweiligenVorgänger.

Page 51: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

14 . 4

git branchÜber den Zeiger "HEAD" weiß Git, welchen Branch Du

momentan verwendest.

Page 52: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

14 . 5

git checkoutIn einen anderen Branch wechseln, hier nach "develop"

$ git checkout develop $ git checkout ­b develop master <­­ Branch anlegen und wechseln

Dadurch zeigt HEAD nun auf den Branch "develop".

Page 53: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

14 . 6

git checkoutNach einer Dateiänderung mit Commit verschieben sich danndie Zeiger.

Page 54: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

14 . 7

git checkoutWechsel zurück nach Master und Änderung committen,bewirkt ein auseinander laufen der Historie.

Page 55: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

14 . 8

git mergeZusammenführen von Branches, beide haben Änderungen

$ git checkout master $ git merge develop

Page 56: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

14 . 9

git merge (fast forward)Zusammenführen von Branches, master ohne Änderung

$ git checkout master $ git merge develop

Page 57: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

14 . 10

git merge --no-ffZusammenführen von Branches, master ohne Änderung

$ git checkout master $ git merge ­­no­ff develop <­­ kein fast forward bitte!

Page 58: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

14 . 11

git merge: Konflikt :-(Hat man an der selben Datei an der selben Stelle in denbeiden Branches was geändert, ist der Merge nichtkoniktfrei möglich.

$ git checkout master $ git merge develop Auto­merging README CONFLICT (content): Merge conflict in README Automatic merge failed; fix conflicts and then commit the result.

Git hat hier keinen 'merge commit' erstellt. Der Prozesswurde gestoppt. In so einen Fall schauen wir uns die Datei

mal an:

Page 59: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

14 . 12

git merge: Konflikt :-)<<<<<<< HEAD Hello World =======Hallo Welt >>>>>>> develop

Für eine Version entscheiden oder mixen, je nach Bedarf. DieAbschnittszeilen mit löschen und speichern.

Anschließend mit 'git add' die Änderung als bereinigtmarkieren und falls nötig die nächste Koniktdatei

bearbeiten. Zum Schluss dann mit 'git commit' den "mergecommit" abschließen.

Page 60: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

14 . 13

git merge: Konflikte mit mergetoolEs ist möglich, die Konikte auch mit graphischen Tools zu

lösen. Dafür gibt es das "mergetool" welches man denierenkann. Ist es nicht deniert sieht das so aus:

$ git mergetool

This message is displayed because 'merge.tool' is not configured. See 'git mergetool ­­tool­help' or 'git help config' for more details. 'git mergetool' will now attempt to use one of the following tools: meld opendiff kdiff3 tkdiff xxdiff tortoisemerge gvimdiff diffuse diffmerge ecmerge p4merge araxis bc3 codecompare emerge vimdiff

Wird das 'merge' Werkzeug beendet, fragt Git nach, ob derKonikt gelöst wurde. Bei Antwort 'Ja' wird das Skript diese

Datei als gelöst markieren.

Page 61: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

14 . 14

git remoteVorhandene Remote Repositories anzeigen oder RemoteRepositories anlegen

$ git remote $ git remote ­v $ git remote add [shortname] [url] $ git remote add forkedfrom git://github.com/BugBuster1701/visitors.git $ git remote rm [shortname]

alle Remote Repositories anzeigen, nur Kurzformebenso, "-v" Kurzform und hinterlegte URLRemote Repository hinzufügenRemote Repository hinzufügen, BeispielRemote Repository (Verknüpfung) löschen

Page 62: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

14 . 15

git pushÄnderungen in ein Remote Repository veröffentlichen, einnicht existierender Branch wird angelegt

$ git push [remote­name] [branch­name] $ git push origin master $ git push ­­tags origin master $ git push ­­tags

SyntaxBeispiel, Änderungen vom lokalen Branch "master"veröffentlichenebenso, aber "Tags" mit veröffentlichennur "Tags" veröffentlichen

Page 63: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

14 . 16

git push defaultHat man mehrere Branches im lokalen Repository und derpush-Befehl soll nur den aktiven Branch übertragen, ohne dasman Branch-Parameter angibt, kann man die push.defaultOption setzen:

$ git config push.default upstream

Bei dem Standardwert matching würden alle lokalenBranches übertragen werden, die einen gleichnamigenRemote Branch besitzen.

Page 64: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

14 . 17

git fetchImportiert Commits vom Remote-Repository in das lokaleRepository als Remote-Branches

$ git fetch [remote­name] $ git fetch [remote­name] [branch­name]

Fetchen aller Branches aus dem RepositoryFetchen nur den Branch [branch-name]

Änderungen in origin/master gegenüber dem lokalen master:

$ git log ­­oneline master..origin/master

Manuell mergen:

$ git merge origin/master

Page 65: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

14 . 18

git pullFetchen der spezizierten Remote-Kopie des aktuellenBranches und mergen direkt in die lokale Kopie.

$ git pull [remote­name]

Entspricht:$ git fetch [remote­name]; git merge [remote­name]/[current­branch]

Nur ein speziellen Branch fetchen und mergen:

$ git pull [remote­name] [remote­branch]

Page 66: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

14 . 19

git pull (Beispiel)$ git checkout master

$ git pull origin

Fetched alle 'origin' Branches und merged den 'master'Branch. Entspricht also:

$ git fetch origin; git merge origin/master

Page 67: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

14 . 20

git pullDie Option '--rebase' kann genutzt werden, um eine lineareHistory sicherzustellen, indem unnötige Merge-Commitsvermieden werden.

$ git pull ­­rebase [remote­name]

Statt 'git merge' für die Integration des Remote-Branchs mit dem lokalen Branch zu nutzen, wird 'gitrebase' angewendet.

Page 68: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

15 . 1

WORKFLOWArbeiten mit lokalen und externen Branches die permanentbzw. temporär sind. Git ist im Prinzip ein Baukasten. Es kannjeder selber festlegen, wie das Git Ökosystem seinesProjektes auszusehen hat.

Page 69: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

15 . 2

Workflow BranchesEin Beispiel wie es in den meisten Fällen ausreichend undauch empfohlen wird.

Permanente origin Branchesorigin/masterorigin/develop

Permanente lokale Branchesmasterdevelop

Temporäre lokale Brancheshotxfeature

Page 70: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

15 . 3

Worflow Übersicht

Page 72: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

16 . 1

EIGENER GIT SERVEREin eigener Git Server der über SSH zu erreichen ist, kannganz einfach eingerichtet werden.

In den nachfolgenden Folien wird davon ausgegangen, dassein Linux PC dafür zur Verfügung steht und öffentliche SSH-Schlüssel der Entwickler für den Login verwendet werden.

Page 73: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

16 . 2

Nutzer anlegen für den Git Server$ sudo adduser git $ su git $ cd $ mkdir .ssh $ touch .ssh/authorized_keys $ chmod 700 .ssh

In das Unterverzeichnis legen wir nun die öffentlichen SSH-Schlüssel ab von den Entwicklern.

$ cat /tmp/id_rsa.kevin.pub >> ~/.ssh/authorized_keys $ cat /tmp/id_rsa.helen.pub >> ~/.ssh/authorized_keys $ cat /tmp/id_rsa.james.pub >> ~/.ssh/authorized_keys

Page 74: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

16 . 3

Ein Repository anlegen$ cd /opt/git <­ ggf. vorher anlegen, einmalig $ mkdir project.git $ cd project.git $ git ­­bare init

Damit wird ein Repository ohne ein Arbeitsverzeichniserzeugt. Das muss dann für jedes neue Projekt auf dieseWeise angelegt werden.

Page 75: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

16 . 4

Erster Entwickler legt los"gitserver" sei der Hostname des Servers auf dem wir geradedas Bare-Repository angelegt haben.

# Kevin Jones Computer $ cd myproject $ git init $ vim README $ git add . $ git commit ­m 'initial commit' $ git remote add origin git@gitserver:/opt/git/project.git $ git push origin master

Page 76: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

16 . 5

Zweiter Entwickler legt losHier kann bereits durch klonen begonnen werden

# Helen Lewis Computer $ git clone git@gitserver:/opt/git/project.git myfirstproject $ cd myfirstproject $ vi README $ git add . $ git commit ­m 'fix a typo' $ git push origin master

Page 77: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

16 . 6

Eigenen Git Server absichernDen angelegten Nutzer "git" sollte man einschränken, damitdieser nur für das Repository genutzt werden kann. Dazubekommt dieser eine eigene Shell von Git:

$ sudo chsh ­s /usr/bin/git­shell git

Damit versteht der Nutzer "git" nur noch Git Befehle undbietet keine normale Shell mehr an.

Page 78: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

17 . 1

WEITERE BEFEHLE (1)git reset ... <-- lokale Änderungen rückgängig machen,

"merge" abbrechen

git stash [pop] ... <-- lokale Änderungen zwischenspeichernund zurückholen

git rebase <branch> <--Historie glätten, Branch verschieben

Page 79: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

17 . 2

WEITERE BEFEHLE (2)git blame <le> <-- wer hat was geändert

git archive ... <-- Projektinhalt als Archiv anlegen

git cherry-pick <hash> <-- einzelnen Commit übernehmen

git reog <-- Historie der Commits der Branch-Referenzen

Page 80: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

17 . 3

WEITERE BEFEHLE (3)git submodule ... <-- In einem Projekt ein weiteres Projekt

darin einbinden

git subtree... <-- In einem Projekt ein weiteres Projektimportieren

.... vieles mehr, z.B. "Hooks"

Page 81: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

18 . 1

Git GUIsFür Git gibt es sowohl GUIs die Git selber mitbringt als auchvon externen Anbietern welche.

Diese gibt es als freie und kostenpichtige für Windows, Macund Linux.

Manche davon sind reine Anzeige Tools, andere können auchGit Befehle absetzen.

Page 82: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

18 . 2

Git interne GUIsgitk (only browsing)git gui (for comitting, too)

Diese GUIs benötigen unter Linux eine X WindowsUmgebung bzw. eine gesetzte $DISPLAY EnvironmentVariable.

Hinweis: Unter Ubuntu ist "git gui" ein extra Paket,installierbar mit:

sudo apt­get install git­gui

Page 83: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

18 . 3

Git externe GUIs: ein text-mode (ncurses) Interface für Git

(Win/Mac) (Win/Max/Linux)

(Win/Mac)Weitere

tig SourceTreeGitKrakenGitHub Desktop

Git-GUI Clients

Page 84: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

19 . 1

PRAXISAusprobieren der GUIs mit dem Bare-Server?

Oder später mit GitHub?

Page 85: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

20 . 1

GITHUB

Web-Interface, Wiki und Support-System für Entwickler

Page 86: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

20 . 2

GitHubHostet kostenlos öffentliche OpenSource-Projekte

Private Projekte kosten, siehe Preismodell

Reichert den Funktionsumfang von Git zusätzlich an ( Web 2.0 Features wie "Folgen" , "Beobachten" und "Stars",Fork, Pull Request (per Mausklick), Wiki , Issue Tracker, ...)

Page 87: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

20 . 3

GitHub ForkJeder kann von den öffentlichen Git-Projekten einen eigenenAbleger eines Repositories, einen "Fork", starten. Dort kannjeder privat das Projekt weiter entwickeln. Anschließend istes möglich diese Weiterentwicklung dem ursprünglichenProjekt zurück zuführen (Pull Request einreichen) – oder alseigenständige Variante zu veröffentlichen.

Page 88: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

20 . 4

GitHub Pull RequestMöchte ein Entwickler die Weiterentwicklung in dasursprüngliche Projekt einießen lassen, kann ein "PullRequest" eingereicht werden an den Administrator desjeweiligen Projektes. Dieser sieht sich die Änderungen an undentscheidet, den Pull durchzuführen, oder nicht.

Beachte: Follow-up-Commits

Page 89: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

20 . 5

GitHub und SSHAnmelden auf GitHub, dann:

Settings -> SSH and GPG Keys oderAufruf der URL: neuen SSH Key anlegen

https://github.com/settings/ssh

Page 90: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

20 . 6

GitHub Commit SecretGitHub reagiert auf Schlüsselwörter gefolgt von der TicketNummer in der Commit Nachricht. (erste Zeile)

Schlüsselwörter sind: fix/fixes/fixed, close/closes/closedoder resolve/resolves/resolved

$ git commit ­m "Fixed #42, CSS korrigiert"

Schließt das Ticket sobald dieser Commit sich im masterBranch bendet.

Page 91: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

21 . 1

PRAXISGitHub anschauen und ausprobieren.

Page 92: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

22 . 1

GITHUB ALTERNATIVENNeben GitHub gibt es noch , ursprünglich fürMercurial entwickelt wurde es später um Git Funktionalitäterweitert und gehört zu Atlassian.

Bitbucket

Es gibt auch Alternativen zum selber installieren mit mehroder weniger identischen Funktionen.

Nachfolgend sind einige aufgelistet, es gibt sicherlich nochmehr davon.

Page 93: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

22 . 2

GitHub Alternativen zum Installieren (CE), Ubuntu, Debian, CentOS,

Raspbian, Java8 (gitbucket.war), LDAP

- Go Git Service; Go; Windows, Linux, Mac, Docker,Vagrant, Binary

GitLab Community Edition

GitBucketGogs

Page 94: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

23 . 1

Literatur- Linkliste - OfflineBuch:

(3., aktualisierte und erweiterte Auage (29. Oktober2015)) Blog dazu:

- Tower (PDF als ZIP-Download mitverschiedenen Designs)

Git: Dezentrale Versionsverwaltung im Team -Grundlagen und Workows

https://kapitel26.github.io/archiveGit Cheat Sheet

Page 95: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

23 . 2

Literatur- Linkliste - OnlineOnline Buch: , 1st Edition 2009Online Buch: , 2nd Edition 2014Git online interaktiv über Browser: (en)

- Lerne Git Commit für CommitYoutube: - Tobias Günther (de, 1h), sehr guter und verständlicher Einstieg

ProGIT deutschProGIT englisch

TryGitgit ready

Git Crash-Kurs

Page 96: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

24 . 1

FRAGEN?Tipp:

Repository Spielwiese / Playground anlegen und einfach allesausprobieren.

Bonus:GitHub -> Packagist.org (Composer) Verknüpfung

(wenn noch Zeit ist)

Page 97: MIT GITHUB PUSH & PULL · 1.1 MIT GITHUB PUSH & PULL Git und GitHub, wie spielt das zusammen und wie nutze ich das. Glen Langer Contao Stammtisch Berlin (24.07.2016) Version: 1.2.0

25 . 1

FERTICH!

Diese Präsentation wurde erstellt mit

reveal.js-for-Contao

Danke an den Contao-Stammtisch München.