Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
|
developer:github [2015/02/03 11:17] hofer [Branch auf Commandline anzeigen] |
developer:github [2019/08/13 13:48] (aktuell) |
||
|---|---|---|---|
| Zeile 31: | Zeile 31: | ||
| Damit man mit den lokalen Änderungen nicht durcheinander, kommt sollte vorher alles lokale **commited** werden. | Damit man mit den lokalen Änderungen nicht durcheinander, kommt sollte vorher alles lokale **commited** werden. | ||
| + | |||
| + | Falls bereits lokale Änderungen im Master vorhanden sind wird automatisch ein Merge Commit erzeugt. Um das zu verhindern kann <code>git pull --rebase</code> verwendet werden. | ||
| ===== Alternative zu merge commit: git rebase ===== | ===== Alternative zu merge commit: git rebase ===== | ||
| Zeile 79: | Zeile 81: | ||
| <code> | <code> | ||
| - | git branch -d mein-feature-branch | + | git branch -D mein-feature-branch |
| </code> | </code> | ||
| + | |||
| + | Soll ein neuer lokaler Branch für alle zur Verfügung stehen, kann dieser mit folgendem Befehl auf Github gepusht werden | ||
| + | <code> | ||
| + | git push origin mein-feature-branch | ||
| + | </code> | ||
| + | |||
| + | Damit danach ein status/pull/push korrekt funktioniert muss noch folgender Befehl ausgeführt werden | ||
| + | <code> | ||
| + | git branch --set-upstream-to=origin/mein-feature-branch mein-feature-branch | ||
| + | </code> | ||
| + | |||
| ===== git checkout (-b) nameDesBranches ===== | ===== git checkout (-b) nameDesBranches ===== | ||
| Zeile 144: | Zeile 157: | ||
| Vom hash reichen also auch die ersten 7 Stellen aus. | Vom hash reichen also auch die ersten 7 Stellen aus. | ||
| + | ===== Working Copy zurücksetzen ===== | ||
| + | Wenn bereits lokale Commits vorhanden sind die verworfen werden sollen kann der aktuelle stand des Remote repositorys geholt werden mit: | ||
| + | <code> | ||
| + | Auf Branch ci | ||
| + | Ihr Branch ist vor 'origin/ci' um 30 Commits. | ||
| + | (benutzen Sie "git push", um lokale Commits zu publizieren) | ||
| + | nichts zu committen, Arbeitsverzeichnis unverändert | ||
| + | </code> | ||
| + | Diese können mit folgenden Befehl verworfen werden: | ||
| + | <code> | ||
| + | git reset --hard origin/ci | ||
| + | </code> | ||
| + | wobei ci der name des Remote Branch ist. | ||
| + | |||
| + | ===== Branch Merge ===== | ||
| + | Wenn die Entwicklung in einem eigenen Branch stattfindet können die Änderungen vom Master in den Branch übernommen werden damit der Branch wieder am aktuellen Stand ist.\\ | ||
| + | 1. Schritt: Master aktualisieren | ||
| + | <code> | ||
| + | git checkout master | ||
| + | git pull | ||
| + | </code> | ||
| + | 2. Schritt: Branch aktualisieren | ||
| + | <code> | ||
| + | git checkout ci | ||
| + | git pull | ||
| + | </code> | ||
| + | 3. Schritt: Änderungen vom Master in den Branch mergen | ||
| + | (Man muss sich im Branch befinden) | ||
| + | <code> | ||
| + | git merge master | ||
| + | </code> | ||
| + | |||
| + | Wenn es zu Konflikten kommt müssen diese aufgelöst werden. | ||
| + | Mit 'git status' bekommt man eine Übersicht über den aktuellen Stand. | ||
| + | \\ | ||
| + | Soll bei einem Konflikt die Version des Branches übernommen werden kann das mit folgendem Befehl gemacht werden: | ||
| + | <code> | ||
| + | git checkout --ours datei.php | ||
| + | </code> | ||
| + | Soll stattdessen die Version aus dem Master übernommen werden: | ||
| + | <code> | ||
| + | git checkout --theirs datei.php | ||
| + | </code> | ||
| + | Anschließend wird die korrigierte Datei hinzugefügt: | ||
| + | <code> | ||
| + | git add datei.php | ||
| + | </code> | ||
| + | Wenn alle Konflikte behoben sind werden die Änderungen commited: | ||
| + | <code> | ||
| + | git commit | ||
| + | </code> | ||
| + | Und nach dem testen gepusht: | ||
| + | <code> | ||
| + | git push | ||
| + | </code> | ||
| ===== Andere interessante Befehle ===== | ===== Andere interessante Befehle ===== | ||
| Zeile 150: | Zeile 218: | ||
| git rm index.php</code> | git rm index.php</code> | ||
| - | === Branch auf Commandline anzeigen === | + | ===== 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: | Um den aktuellen Branch direkt im Prompt auf der Commandline anzuzeigen kann die Variable %%$(__git_ps1)%% in der Datei ~/.bashrc gesetzt werden: | ||
| <code> | <code> | ||
| Zeile 175: | Zeile 243: | ||
| 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. | 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. | ||
| + | |||
| + | ===== Aktuelle git Version installieren ===== | ||
| + | |||
| + | Für debian gibt es nur relativ alte git Versionen (max. 1.9 über backport). Aktuell sind sie aber bei 2.3.0. Die Version muss man selbst kompilieren. Und zwar so: | ||
| + | |||
| + | <code> | ||
| + | sudo apt-get install autoconf libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev | ||
| + | sudo apt-get remove git | ||
| + | wget https://www.kernel.org/pub/software/scm/git/git-X.Y.Z.tar.gz | ||
| + | tar -zxf git-X.Y.Z.tar.gz | ||
| + | cd git-X.Y.Z | ||
| + | make configure | ||
| + | ./configure --prefix=/usr | ||
| + | make all doc info | ||
| + | sudo make install install-doc install-html install-info | ||
| + | cd .. | ||
| + | rm -r git-X.Y.Z | ||
| + | </code> | ||
| + | |||
| + | Siehe auch [[http://git-scm.com/book/en/v2/Getting-Started-Installing-Git|Installing Git]] | ||
| + | |||
| + | ===== git url alias ===== | ||
| + | |||
| + | Um zum Beispiel https URLs auf ssh URLs umzuschreiben kann man in ''~/.gitconfig'' folgenden Eintrag machen: | ||
| + | |||
| + | <code> | ||
| + | [url "git://git@github.com:"] | ||
| + | insteadOf = https://github.com/ | ||
| + | </code> | ||
| + | |||
| + | ''<nowiki>https://github.com/</nowiki>'' wird jetzt immer durch ''<nowiki>git://git@github.com:</nowiki>'' ersetzt. | ||
| + | |||
| + | Damit dieses Alias bei ''git submodule'' greift, müssen vorher in ''.git/config'' die submodule gelöscht werden. Beispiel: | ||
| + | |||
| + | <code> | ||
| + | [submodule "submodules/tablesorter"] | ||
| + | url = git@github.com:christianbach/tablesorter.git | ||
| + | </code> | ||
| + | |||
| + | Diesen Eintrag entfernen. Den Ordner samt submodule (sicherheitshalber) löschen. Und dann | ||
| + | |||
| + | <code> | ||
| + | git submodule init | ||
| + | git submodule update | ||
| + | </code> | ||
| + | |||
| + | ''.git/config'' kontrollieren, hier sollten jetzt die ssh URLs eingetragen sein. | ||