User Tools

Site Tools


git

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
git [2022/11/15 16:04] – [Links] kalaschnikowgit [2023/02/09 16:35] (current) – kalaschnikow
Line 1: Line 1:
 +====== 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:
 +<code bash>
 +git checkout -b bugfix master
 +</code>
 +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:
 +
 +<code bash>
 +git add .
 +git commit -m "Fixes bug xy"
 +</code>
 +Falls ihr euren Branch auch anderen Entwicklern auf dem Server bereitstellen wollt, könnt ihr optional ein
 +
 +<code bash>
 +git push -u origin bugfix
 +</code>
 +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:
 +
 +<code bash>
 +git checkout master
 +</code>
 +… und die Änderungen aus eurem bugfix-Branch werden darauf angewendet:
 +
 +<code bash>
 +git merge bugfix
 +</code>
 +Zum Schluss noch ein
 +
 +<code bash>
 +git push
 +</code>
 +… um den aktualisierten master-Branch auf dem Server zu aktualisieren. Euer bugfix-Branch wird nun nicht mehr benötigt und kann gelöscht werden:
 +
 +<code bash>
 +git branch -d bugfix
 +</code>
 +
 +=== 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:
 +<code bash>
 +cd myworkspace
 +git init
 +</code>
 +
 +Init remote (bare) repo
 +<code bash>
 +cd repos # change to whichever directory you like
 +git init --bare myrepo.git
 +</code>
 +
 +Add remote origin to local repo
 +<code bash>
 +cd myworkspace # go back to local workspace
 +git remote add origin /path/to/repos/myrepo.git
 +</code>
 +
 +Neue Repo auf der Diskstation anlegen:
 +<code bash>
 +ssh admin@diskstation
 +cd /volume1/share/git_repos/
 +git init --bare --shared myrepo.git
 +</code>
 +or (check first the first!)
 +<code bash>
 +ssh admin@diskstation
 +cd /volume1/share/git_repos/
 +mkdir myrepo.git
 +cd myrepo.git
 +git init --bare --shared
 +</code>
 +
 +=== Copy local repo to server as bare repo ===
 +
 +<code bash>
 +git clone --bare myprojectrepo myprojectrepo.git
 +cp -R myprojectrepo /media/diskstation/git_repos
 +</code>
 +
 +==== 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