Benutzer-Werkzeuge

Webseiten-Werkzeuge


developer:github

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

developer:github [2015/02/03 11:17]
hofer [Andere interessante Befehle]
developer:github [2019/08/13 13:48]
Zeile 1: Zeile 1:
-====== GitHub ====== 
  
-===== Wichtige Commands ===== 
- 
-<​code>​ 
-svn checkout: git clone linkZuRepo 
-svn commit: git commit (-a) 
-svn up: git pull (zuerst alles commiten!) 
-svn switch: git checkout (-b) nameDesBranches 
-svn status: git status (-s) 
-svn info: git show 
-</​code>​ 
- 
-===== Aller Anfang ===== 
- 
-Damit man nicht immer user/pass eingeben muss, kann man [[https://​help.github.com/​articles/​generating-ssh-keys/​|bei github einen public key eintragen]] und [[https://​help.github.com/​articles/​about-two-factor-authentication/​|2 factor auth zu aktivieren]] schadet auch nicht :-) 
- 
-Damit commits als github User aufscheinen muss man die Mailadresse ([[https://​help.github.com/​articles/​adding-an-email-address-to-your-github-account/​|die auch github wissen muss]]) so lokal konfigurieren:​ <​code>​git config --global user.email "​XYZ@technikum-wien.at"</​code>​ 
- 
-===== git commit (-a) ===== 
- 
-Um etwas zu commiten muss es zum "git index" geaddet werden (''​git add''​). Diese Dateien in der aktuellen Version sind dann im index ("​staged for commit"​). Ändert man noch etwas bei einer dieser Dateien muss man sie **nochmal** adden. 
- 
-''​git commit''​ commited alle Änderungen die im index ("​staged"​) sind. 
- 
-''​-a''​ erspart das adden. Es staged und commited alle Dateien die schon mal im repository vorhanden waren. 
- 
-===== git pull ===== 
- 
-Holt sich die Änderungen (''​git fetch''​) von den remotes (github) und merged (''​git merge''​) es ins lokale repository in den aktuellen branch. D.h. wenn es Änderungen gibt, ist ''​git pull''​ auch automatisch gleich ein commit. 
- 
-Damit man mit den lokalen Änderungen nicht durcheinander,​ kommt sollte vorher alles lokale **commited** werden. 
- 
-===== Alternative zu merge commit: git rebase ===== 
- 
-[[http://​matthew-brett.github.io/​pydagogue/​rebase_without_tears.html|Rebase without tears]] 
- 
-Hintergrund:​ Man arbeitet lokal an einem Fix/​Feature,​ hat bereits eine history (ein paar commits) und benötigt jetzt eine Änderung die irgendjemand gepusht hat. rebasing erzeugt eine sauberere history als ständige merge commits. 
- 
-Hab es gerade so ausprobiert und geschafft \o/: 
- 
-Wechsel auf den Branch. Hol die letzten Änderungen von github vom Branch "​master"​ und rebase deine Änderungen darauf. 
- 
-<​code>​ 
-# Zuerst master updaten 
-git checkout master 
-git pull 
- 
-# Jetzt den branch rebasen 
-git checkout mein-feature-branch 
-git rebase master 
-</​code>​ 
- 
-Merge (Fast Forward) die Änderungen vom Branch. Push. 
- 
-<​code>​ 
-git checkout master 
-git merge mein-feature-branch 
-git push 
-</​code>​ 
- 
-In diesem Fall wird die gesamte history (alle commits) vom branch in den master mitgenommen. Wenn das nicht gewollt ist, kann man dem merge-Befehl noch den Parameter ''​%%--%%squash''​ mitgeben. Muss dann aber noch einen extra commit durchführen. Git befüllt in diesem Fall die commit message bereits mit allen möglichen Infos. 
- 
-<​code>​ 
-git checkout master 
-git merge --squash mein-feature-branch 
-git commit -a 
-git push 
-</​code>​ 
- 
-Wenn man danach mit dem branch noch weiter arbeiten möchte, muss man den Startpunkt ändern (wo zweigt der branch ab). 
- 
-<​code>​ 
-git checkout master 
-git branch -f mein-feature-branch <​letzterCommit>​ 
-</​code>​ 
- 
-Oder branch einfach löschen. 
- 
-<​code>​ 
-git branch -d mein-feature-branch 
-</​code>​ 
-===== git checkout (-b) nameDesBranches ===== 
- 
-''​git checkout nameDesBranches''​ wechselt auf einen bestehenden branch mit Namen "​nameDesBranches"​. 
- 
-Wenn man einen neuen branch anfangen will kann man ihn mit ''​-b''​ erstellen und direkt hin switchen. 
- 
-===== git status (-s) ===== 
- 
-Ist sehr detailliert. ''​-s''​ kürzt es ab. 
- 
-===== git tag -a nameDesTags ===== 
- 
-Markiert eine bestimmte Version/​Revision. Hilfreich zB wenn man festhalten will welche Version aktuell auf Produktion ist. Ermöglicht dann auch einen einfachen Rollback bei Fehlern zu vorigen Versionen. 
- 
-===== git stash ===== 
- 
-Will man zB auf einen anderen branch wechseln ohne die aktuellen Änderungen zu commiten oder zu verwerfen kann man sie "​stashen"​. Nach ''​git stash''​ hat man einen sauberen directory tree und kann branch wechseln, commiten, testen usw. 
- 
-Um die Änderungen wieder auf den aktuellen branch anzuwenden gibts folgende Befehle: 
- 
-<​code>​ 
-git stash apply 
-git stash pop 
-git stash apply --index 
-git stash pop --index 
-</​code>​ 
- 
-  * ''​apply''​ wendet die Änderungen nur an 
-  * ''​pop''​ wendet die Änderungen an und löscht den Eintrag vom stash. 
-  * Der Parameter ''​%%--%%index''​ stellt dann auch die "​staging area" genauso wieder her wie sie vorher war. 
- 
-===== commit rückgängig machen ===== 
- 
-Jeder commit hat einen Hash (vergleichbar mit Revisionsnummer). Sehen kann man diese hashes über ''​git log''​. 
- 
-<​code>​ 
-commit 1ece8a2f6be4429b3b9ddc934da5030389f7ecb1 
-Author: Robert Hofer <​robert.hofer@technikum-wien.at>​ 
-Date:   Tue Jan 20 10:34:08 2015 +0100 
- 
-    erster commit 
-</​code>​ 
- 
-Um zu einem vorigen commit zu springen benötigt man diesen: 
- 
-<​code>​ 
-git checkout 1ece8a2f6be4429b3b9ddc934da5030389f7ecb1 
-</​code>​ 
- 
-Das Ganze geht auch kürzer: 
- 
-<​code>​ 
-$ git log --oneline 
-8d9a142 Squashed commit of the following: 
-6121e0e acht 
-08d267d Squashed commit of the following: 
-37fa721 drei 
-274478b zwei 
-1ece8a2 erster commit 
-$ git checkout 1ece8a2 
-</​code>​ 
- 
-Vom hash reichen also auch die ersten 7 Stellen aus. 
-===== Andere interessante Befehle ===== 
- 
-<​code>​git reset: zB git reset HEAD index.php 
-git mv config.server1.php config.server2.php 
-git rm index.php</​code>​ 
- 
-===== Branch auf Commandline anzeigen ===== 
-Um den aktuellen Branch direkt im Prompt auf der Commandline anzuzeigen kann die Variable %%$(__git_ps1)%% in der Datei ~/.bashrc gesetzt werden: 
-<​code>​ 
-PS1='​${debian_chroot:​+($debian_chroot)}\u@\h:​\w\[\033[0;​32m\]$(__git_ps1)\[\033[0m\]\$ ' 
-</​code>​ 
-Um zusätzlich anzuzeigen ob es dort Änderungen gibt kann folgende Zeile hinzugefügt werden: 
-<​code>​ 
-export GIT_PS1_SHOWDIRTYSTATE=1 
-</​code>​ 
- 
-==== Alias ==== 
-In der Datei ~/​.gitconfig können Alias Befehle gesetzt werden um zB formatierte Logeinträge leichter anzuzeigen: 
-<​code>​ 
-[alias] 
-    ci = commit 
-    lc = log ORIG_HEAD.. --stat --no-merges 
-    st = status 
-    co = checkout 
-    lg = log --graph --pretty=format:'​%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<​%an>​%Creset'​ --abbrev-commit --date=relative 
-</​code>​ 
-===== Workflow ===== 
- 
-Um in einem Projekt zu arbeiten ist der normale Workflow: klonen, branch erstellen (passiert nur lokal), developen/​commiten bis es passt, in den master mergen, master pushen 
- 
-Die Grafiken in der [[http://​git-scm.com/​book/​en/​v2/​Git-Branching-Basic-Branching-and-Merging|git doku]] sagen mehr als 1000 Worte. Und [[https://​guides.github.com/​introduction/​flow/​index.html|der Guide]] schaut auch übersichtlich aus. 
/var/www/wiki/data/pages/developer/github.txt · Zuletzt geändert: 2019/08/13 13:48 (Externe Bearbeitung)