====== Git ======
Some information about git.
===== Some useful commands =====
==== Working with branches ====
[[https://thomas-leister.de/git-fuer-einsteiger/|Die wichtigsten Git-Kommandos für Einsteiger]] Good (and short) description by Thomas Leister
The following is a short citation from it.
Nehmen wir an, ein Fehler wurde gemeldet und ihr wollt diesen Beheben. Ihr erstellt euch für euren Bugfix zuerst einen neuen, lokalen Branch „bugfix“, der aus dem master-Zweig (aktuelle, fertige Version) auszweigt:
git checkout -b bugfix master
Wenn ihr jetzt „git“ Status aufruft, wird euch angezeigt, dass ihr euch auf dem „bugfix“-Versionszweig befindet. Ihr könnt jetzt eure Änderungen am Code durchführen, geänderte und hinzugefügte Dateien stagen und einen Commit erstellen:
git add .
git commit -m "Fixes bug xy"
Falls ihr euren Branch auch anderen Entwicklern auf dem Server bereitstellen wollt, könnt ihr optional ein
git push -u origin bugfix
ausführen. Wenn ihr alleine an dem Bugfix arbeitet, ist das aber nicht nötig. In dem Fall bleibt euer Branch
lokal auf dem Rechner. Der Commit auf dem bugfix-Branch ist erstellt – jetzt wird wieder in den master-Branch gewechselt:
git checkout master
… und die Änderungen aus eurem bugfix-Branch werden darauf angewendet:
git merge bugfix
Zum Schluss noch ein
git push
… um den aktualisierten master-Branch auf dem Server zu aktualisieren. Euer bugfix-Branch wird nun nicht mehr benötigt und kann gelöscht werden:
git branch -d bugfix
=== Allgemeiner Workflow ===
Während der Entwicklungsarbeit wird euer Workflow meistens in etwa so aussehen:
1. Aktuellen master-Branch vom Server downloaden (vorher mit git status sicherstellen, dass man sich auf dem master-Branch befindet. Wenn nicht: git checkout master):\\
**git pull**
2. Einen neuen Branch für das kommende Feature anlegen:\\
**git checkout -b meinfeature master**
3. Änderungen am Code durchführen
4. Geänderte und neue Dateien stagen:\\
**git add .**
5. Änderungen committen:\\
**git commit -m „Changes xyz“**
6. Jetzt den Branch auf den Server laden, wenn gewünscht:\\
**git push -u origin meinfeature**
7. … oder direkt in dem master wechseln:\\
**git checkout master**
8. (nochmals aktuellen Code ziehen – zur Sicherheit)\\
**git pull**
9. Eigenen Code mit master zusammenführen:\\
**git merge meinfeature**
10. Nicht mehr benötigten Branch löschen:\\
**git branch -d meinfeature**
11. Aktualisierten master auf den Server pushen:\\
**git push**
12. Fertig :)
==== Host remote repository on local file system ====
Create local repository:
cd myworkspace
git init
Init remote (bare) repo
cd repos # change to whichever directory you like
git init --bare myrepo.git
Add remote origin to local repo
cd myworkspace # go back to local workspace
git remote add origin /path/to/repos/myrepo.git
Neue Repo auf der Diskstation anlegen:
ssh admin@diskstation
cd /volume1/share/git_repos/
git init --bare --shared myrepo.git
or (check first the first!)
ssh admin@diskstation
cd /volume1/share/git_repos/
mkdir myrepo.git
cd myrepo.git
git init --bare --shared
=== Copy local repo to server as bare repo ===
git clone --bare myprojectrepo myprojectrepo.git
cp -R myprojectrepo /media/diskstation/git_repos
==== Merging vs. Rebasing ====
A short summary of [[https://www.atlassian.com/git/tutorials/merging-vs-rebasing|an article from Atlassian Tutorial]].
===== Git GUI Clients =====
https://git-scm.com/download/gui/windows
https://blog.devart.com/best-git-gui-clients-for-windows.html
==== GitHub Desktop ====
https://github.com/desktop/desktop
==== Eclipse integration EGit ====
https://wiki.eclipse.org/EGit/User_Guide
===== Links =====
[[https://rogerdudler.github.io/git-guide/index.de.html|Very short intro by Roger Dudler]]
http://nfarina.com/post/9868516270/git-is-simpler - relatively short intro. I'm stopped at [[http://nfarina.com/post/9868516270/git-is-simpler#objects|The So-Called "Object Database"]]
[[http://www-cs-students.stanford.edu/~blynn/gitmagic/|Git Magic]] - big "book"
[[https://ohmygit.org/|Oh my Git!]] - an online game to learn Git
[[https://www.atlassian.com/git|Getting Git Right: Learn Git with Tutorials, News and Tips]] - an intro (or a link collection?) by Atlassian
==== Workflows ====
[[http://nvie.com/posts/a-successful-git-branching-model/|A successful Git Branching Model]] by Vincent Driessen -> an article about "Gitflow"\\
[[https://www.atlassian.com/git/tutorials/comparing-workflows| Comparing Workflows]] tutorial by Atlassian\\
[[http://blog.endpoint.com/2014/05/git-workflows-that-work.html|Git Workflows That Work]] by Spencer Christensen\\
[[https://t3n.de/news/git-workflows-zusammenarbeit-1095433/|Git-Workflows einfach erklärt]]\\
===== Link lists =====
http://think-like-a-git.net/resources.html
====== My Repos ======
===== AvrilServer on kalaschnikow2017 (Web application) =====
origin
ssh:/ /kalaschnikow@diskstation/volume1/share/git_repos/AvrilServer.git (remove blank between slashes)
===== avril on kalaschnikow2017 (Android app) =====
origin
ssh:/ /kalaschnikow@diskstation:22/volume1/share/git_repos/avril.git (remove blank between slashes)
===== jrserver on kalaschnikow2017 =====
origin
http://gitlab.wialon-consulting.de:8080/root/jrserver