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
git [2023/02/09 15:44] – [Git GUI Clients] 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