16. Oktober 2015
Studiengang Medieninformatik an der Fachhochschule Köln
Campus Gummersbach
Prof. Christian Noss, M.Sc. Jan Kus, Volker Schäfer
git branch
/ git checkout
/ git merge
git merge
git status
/ git log
git config
git init
git config
/ git clone
git status
/ git add
/ git commit
git push
/ git pull
master
-Branch arbeitenmaster
-Branch sollte idealerweise immer "clean" sein und deployfähig bleibenfeature_x
staging-
-Branch entwickeltrelease
-Branch werden ggf. kleinere Bugfixes durchgeführtmaster
-Branch werden ggf. Hotfixes durchgeführtgit add
fügt man Änderungen in dengit commit
versioniert man in dengit push
läd man Änderungen in ein remote Repository
Quelle: http://rogerdudler.github.io/git-guide/, Stand: 14.10.2015
git push
läd man Änderungen in dengit pull
läd man Änderungen in den
Quelle: http://rogerdudler.github.io/git-guide/, Stand: 14.10.2015
Branches are used to develop features isolated from each other. The master branch is the "default" branch when you create a repository. Use other branches for development and merge them back to the master branch upon completion.
Quelle: http://rogerdudler.github.io/git-guide/, Stand: 14.10.2015
git checkout -b feature_x
git checkout
git checkout master
git branch -d feature_x
So lange man einen Branch nicht zum remote Repository push
t ist dieser nur lokal verfügbar und kein anderer hat darauf Zugriff
git push origin feature_x
git pull feature_x
git checkout master
git merge feature_x
Git versucht alle Änderungen automatisch zusammen zu führen. Wenn dies nicht möglich ist entsteht ein so genannter Konflikt.
Dieser muss manuell gelöst werden (im Editor) und anschließend wird der Index (git add
) aktualisiert und dem lokalen Head hinzugefügt (git commit
).
Bevor man den Branch merged können mit git diff [source_branch] [target_branch]
die zu mergenden Unterschiede eingesehen werden
Das Zusammenführen von Branches soll in der Regel nur im Feature-Branch passieren
This is the most common type of conflict. It happens when two branches have changed the same part of the same file, and then those branches are merged together.
git status
# # On branch branch-b
# # You have unmerged paths.
# # (fix conflicts and run "git commit")
# #
# # Unmerged paths:
# # (use "git add ..." to mark resolution)
# #
# # both modified: planets.md
# #
# no changes added to commit (use "git add" and/or "git commit -a")
This is the most common type of conflict. It happens when two branches have changed the same part of the same file, and then those branches are merged together.
1 # planets.md
2 the number of planets are
<<<<<<< HEAD
3 nine
=======
3 eight
>>>>>>> branch-a
Im master-Branch hat jemand die Zeile 3 mit dem Wort "nine" editiert und im branch-a mit dem Wort "eight". Es entsteht ein Konflikt der mit den Markern '<<<<<<<'
, '======='
, '>>>>>>>'
ausgezeichnet ist.
Releases are based on Git tags. Tags mark a specific point in the history of your project. Releases are GitHub's way of packaging and providing software to your users. You can think of it as a replacement to using downloads to provide software.
2.4.1.beta2
[Major].[Minor].[Patch].[Additional]
git tag 1.0.0 1b2e1d63ff
Pull requests let you tell others about changes you've pushed to a GitHub repository. Once a pull request is sent, interested parties can review the set of changes, discuss potential modifications, and even push follow-up commits if necessary.
git status
git-status
- zeigt den Status des Working-Trees (Git-Orders) an
git log
git-log
- ist die einfachste Form die History anzuzeigen
git log
git log --author=bob
: Ausgabe des Logs nur mit Einträgen vom User "bob"git log --pretty=oneline
: Einzeilige Ausgabe des Logsgit log --graph --oneline --decorate --all
: Ausgabe aller Branches in einer Baumstrukturgit log --name-status
: Ausgabe des Logs mit Dateinamen die sich in der jeweiligen Version geändert habengit log --help
: Hilfe wie man git log
noch aufrufen kannGit Log Beispiel
Git Log Beispiel
Pause
16. Oktober 2015
Studiengang Medieninformatik an der Fachhochschule Köln
Campus Gummersbach
Prof. Christian Noss, M.Sc. Jan Kus, Volker Schäfer
git branch
/ git checkout
git merge
git status
/ git log
Bitte Ordner anlegen, Git-Repository initieieren und Datei erstellen, dem Index hinzufügen und ins Repository commiten
➜ code mkdir test-git-project
➜ code cd test-git-project
➜ test-git-project git init
Initialized empty Git repository in /Volumes/code/test-git-project/.git/
➜ test-git-project git:(master) echo "hello world" >> lorem.ipsum
➜ test-git-project git:(master) ✗ git add lorem.ipsum
➜ test-git-project git:(master) ✗ git commit -a -m 'Added Lorem Ipsum'
[master (root-commit) dfc6c4d] Added Lorem Ipsum
1 file changed, 1 insertion(+)
create mode 100644 lorem.ipsum
➜ test-git-project git:(master)
git branch
Bitte einen Branch erstellen mitgit branch feature_x
und in diesen Branch mitgit checkout feature_x
wechseln.
➜ test-git-project git:(master) git branch feature_x
➜ test-git-project git:(master) git checkout feature_x
Switched to branch 'feature_x'
git checkout
Mit git checkout -b feature_x
wird ein Branch erstellt und direkt ausgecheckt
➜ test-git-project git:(testbranch) git checkout -b feature_x
Switched to a new branch 'feature_x'
Mit git branch -d feature_x
wird ein Branch gelöscht
➜ test-git-project git:(testb) git checkout master
Switched to branch 'master'
➜ test-git-project git:(master) git branch -d feature_x
Deleted branch feature_x (was dfc6c4d).
➜ test-git-project git:(master)
Mit git push origin feature_x
wird ein Branch in ein remote Repository gepushed
➜ testproject git:(master) git checkout -b feature_x
Switched to a new branch 'feature_x'
➜ testproject git:(feature_x) git push origin feature_x
Total 0 (delta 0), reused 0 (delta 0)
To git@github.com:koos/testproject.git
* [new branch] feature_x -> feature_x
➜ testproject git:(feature_x)
git merge
Mit git merge feature_x
wird ein Branch in einen anderen Zusammengeführt
➜ testproject git:(master) git checkout -b feature_x
➜ testproject git:(feature_x) echo "ein file" >> test.ipsum
➜ testproject git:(feature_x) ✗ git add .
➜ testproject git:(feature_x) ✗ git commit -a -m 'added test.ipsum'
[feature_x ab9402e] added test.ipsum
1 file changed, 1 insertion(+)
create mode 100644 test.ipsum
➜ testproject git:(feature_x) git checkout master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
➜ testproject git:(master) git merge feature_x
Updating c6f9fe4..ab9402e
Fast-forward
test.ipsum | 1 +
1 file changed, 1 insertion(+)
create mode 100644 test.ipsum
➜ testproject git:(master)
➜ testproject git:(master) git checkout -b feature_x
Switched to a new branch 'feature_x'
➜ testproject git:(feature_x) echo "erste zeile" >> test.txt
➜ testproject git:(feature_x) ✗ cat test.txt
erste zeile% ➜ testproject git:(feature_x) ✗ git add .
➜ testproject git:(feature_x) ✗ git commit -a -m 'added erste zeile'
[feature_x 2a16d85] added erste zeile
1 file changed, 1 insertion(+)
create mode 100644 test.txt
➜ testproject git:(feature_x) git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
➜ testproject git:(master) git merge feature_x
Updating ab9402e..2a16d85
Fast-forward
test.txt | 1 +
1 file changed, 1 insertion(+)
create mode 100644 test.txt
➜ testproject git:(master) git checkout -b feature_y
Switched to a new branch 'feature_y'
➜ testproject git:(feature_y) subl .
➜ testproject git:(feature_y) git add .
➜ testproject git:(feature_y) ✗ git commit -a -m 'added something else to erste zeile'
[feature_y 65b5aa3] added something else to erste zeile
1 file changed, 1 insertion(+), 1 deletion(-)
➜ testproject git:(feature_y) git checkout feature_x
Switched to branch 'feature_x'
➜ testproject git:(feature_x) subl .
➜ testproject git:(feature_x) git status
On branch feature_x
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working directory)
modified: test.txt
no changes added to commit (use "git add" and/or "git commit -a")
➜ testproject git:(feature_x) ✗ git add .
➜ testproject git:(feature_x) ✗ git commit -a -m 'adedd something else to erste zeile'
[feature_x b68fd60] adedd something else to erste zeile
1 file changed, 1 insertion(+), 1 deletion(-)
➜ testproject git:(feature_x) git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 2 commits.
(use "git push" to publish your local commits)
➜ testproject git:(master) git merge feature_x
Updating 2a16d85..b68fd60
Fast-forward
test.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
➜ testproject git:(master) git merge feature_y
Auto-merging test.txt
CONFLICT (content): Merge conflict in test.txt
Automatic merge failed; fix conflicts and then commit the result.
➜ testproject git:(master) ✗ git status
On branch master
Your branch is ahead of 'origin/master' by 3 commits.
(use "git push" to publish your local commits)
You have unmerged paths.
(fix conflicts and run "git commit")
Unmerged paths:
(use "git add ..." to mark resolution)
both modified: test.txt
no changes added to commit (use "git add" and/or "git commit -a")
➜ testproject git:(master) ✗ git diff feature_x feature_y
➜ testproject git:(master) ✗ git status
On branch master
Your branch is ahead of 'origin/master' by 3 commits.
(use "git push" to publish your local commits)
You have unmerged paths.
(fix conflicts and run "git commit")
Unmerged paths:
(use "git add ..." to mark resolution)
both modified: test.txt
no changes added to commit (use "git add" and/or "git commit -a")
➜ testproject git:(master) ✗ cat test.txt
<<<<<<< HEAD
erste zeile hello world wide web
=======
erste zeile hello world
>>>>>>> feature_y
➜ testproject git:(master) ✗ git add .
➜ testproject git:(master) ✗ git commit -a -m 'resolved conflict'
[master 2dc5735] resolved conflict
➜ testproject git:(master)
➜ testproject git:(master) ✗ git diff feature_x feature_y
diff --git a/test.txt b/test.txt
index 56b8a01..484e5ce 100644
--- a/test.txt
+++ b/test.txt
@@ -1 +1 @@
-erste zeile hello world wide web
\ No newline at end of file
+erste zeile hello world
\ No newline at end of file
(END)
Mit git tag [version] [hash]
wird ein Release als solcher getagged
➜ testproject git:(master) git tag 1.1.2-rc2.1.1 2dc57356428f6576d037d706c10ceb5202a921f7
➜ testproject git:(master) git tag
1.1.2-rc2.1.1
➜ testproject git:(master)
Mit git status
zeigt den status der Working Tree an
git status
# # On branch branch-b
# # You have unmerged paths.
# # (fix conflicts and run "git commit")
# #
# # Unmerged paths:
# # (use "git add ..." to mark resolution)
# #
# # both modified: planets.md
# #
# no changes added to commit (use "git add" and/or "git commit -a")
Mit git log
kann man auf einfache Weise die History aufrufen
➜ wba1-2015 git:(gh-pages) ✗ git log --oneline
b45b548 Neuigkeiteneinträge im mi-onepager in articles überführt
7461ee5 Merge branch 'gh-pages' of https://github.com/th-koeln/wba1-2015 into gh-pages
c6d7644 Kommentar im JS-Code zum mi-onepager ergänzt
374b3a2 MK behoben
d513612 CSS weiter entwickelt.
Mit git log
kann man auf einfache Weise die History aufrufen
git log --author=bob
: Ausgabe des Logs nur mit Einträgen vom User "bob"git log --pretty=oneline
: Einzeilige Ausgabe des Logsgit log --graph --oneline --decorate --all
: Ausgabe aller Branches in einer Baumstrukturgit log --name-status
: Ausgabe des Logs mit Dateinamen die sich in der jeweiligen Version geändert habengit log --help
: Hilfe wie man git log
noch aufrufen kann
Mit git log
kann man auf einfache Weise die History aufrufen
➜ wba1-2015 git:(gh-pages) ✗ git log --graph --oneline --decorate --all
* 42974af (HEAD -> gh-pages, origin/gh-pages, origin/HEAD) Git Advanced Finished
* a2c8b1f Merge branch 'gh-pages' of github.com:th-koeln/wba1-2015 into gh-pages
|\
| * 4bc40d3 Replaced old logo with new one in presentations
| * e000ba4 Added new box as image
| * 8672d10 Moved Helpers from .css to .scss
| * c50f1a8 Aded fancy template, still WIP
| * 55240dd Merge branch 'gh-pages' of github.com:fh-koeln/wba1-2015 into gh-pages
| |\
| | * 8c879ba Fragment identifier und mailto-Link im mi-onepager korrigiert
| * | 824bb94 SVG Grafik hinzugefügt
| * | c48a27c Folie Übersicht HTML CSS JS hinzugefügt
| * | c8119f3 Link repariert
| |/
| * 2803984 Korrekturen an Slides für HTML Basics
| * 2ad1774 Merge branch 'gh-pages' of github.com:fh-koeln/wba1-2015 into gh-pages
| |\
| | * 190301a Merge branch 'gh-pages' of https://github.com/th-koeln/wba1-2015 into gh-pages
| | |\
| | * | 47f359b Formular-Validierung im mi-onepager nun per JS
| | * | 80d85a3 Formular-Buttons als solche gekennzeichnet (hover)
| * | | 9b19e2c Folien für HTML-Workshop ergänzt.
| | |/
| |/|
| * | 7795026 Workshop HTML-Basics hinzugefügt