Inhaltsverzeichnis
Git
.gitconfig
[user] name = user email = your.mail@liam.ruoy [push] default = simple [color] ui = auto [core] editor = nano pager = less -x1,5
Bash Completion
siehe hierzu bashrc
Clone ein Repo
git clone git://github.com/tanuva/pyserdisp.git
Forc a Repo from GitHub
am Beispiel von Openelec.tv
auf github einloggen/registrieren
nach https://github.com/OpenELEC/OpenELEC.tv navigieren
in der rechten oberen Ecke auf Fork klicken
git clone https://github.com/username/OpenELEC.tv
cd OpenELEC.tv
git remote -v
git remote -v
origin https://github.com/username/OpenELEC.tv (fetch) origin https://github.com/username/OpenELEC.tv (push)
git remote add upstream https://github.com/OpenELEC/OpenELEC.tv
git remote -v
git remote -v
origin https://github.com/username/OpenELEC.tv (fetch) origin https://github.com/username/OpenELEC.tv (push) upstream https://github.com/OpenELEC/OpenELEC.tv (fetch) upstream https://github.com/OpenELEC/OpenELEC.tv (push)
verfügbare Zweige (branch) anzeigen
git branch
git branch
* master
eine neuen Zweig (branch) erzeugen und in diesen Zweig wechseln
git checkout -b new_branch
git checkout -b new_branch
Zu neuem Branch 'new_branch' gewechselt
vergewissern, dass man sich im neuen Zweig new_branch
befindet
git branch
git branch
master * new_branch
den neuen Zweig new_branch
hochladen
git push origin new_branch
git push origin new_branch
Username for 'https://github.com': username Password for 'https://username@github.com': Total 0 (delta 0), reused 0 (delta 0) To https://github.com/username/OpenELEC.tv * [new branch] new_branch -> new_branch
Änderung vornehmen, z.B eine package.mk erstellen zum bauen eines benötigten Paketes
mkdir packages/sysutils/new_package
nano packages/sysutils/new_package/package.mk
nano packages/sysutils/new_package/package.mk
################################################################################ # This file is part of OpenELEC - http://www.openelec.tv # Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv) # # OpenELEC is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # OpenELEC is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with OpenELEC. If not, see <http://www.gnu.org/licenses/>. ################################################################################ PKG_NAME="" PKG_VERSION="" PKG_REV="" PKG_ARCH="any" PKG_LICENSE="GPL" PKG_SITE="" PKG_URL="" PKG_DEPENDS_HOST="" PKG_PRIORITY="optional" PKG_SECTION="" PKG_SHORTDESC="" PKG_LONGDESC="" PKG_IS_ADDON="no" PKG_AUTORECONF="yes"
Änderungen zum Hochladen vormerken
git add packages/sysutils/new_package/
Änderungen kommentieren
git commit
Änderungen in den neuen Zweig new_branch
hochladen
git push origin new_branch
git pus=== anlegen ===h origin new_branch
Username for 'https://github.com': username Password for 'https://username@github.com': Zähle Objekte: 8, Fertig. Delta compression using up to 4 threads. Komprimiere Objekte: 100% (8/8), Fertig. Schreibe Objekte: 100% (8/8), 1.29 KiB | 0 bytes/s, Fertig. Total 8 (delta 4), reused 0 (delta 0) To https://github.com/username/OpenELEC.tv 01c1f69..a1595c6 new_branch -> new_branch
Abgleich der Daten von ''upstream master'' auf die eigene branch ''mybranch''
in die lokale branch master
wechseln
git checkout master
aktuelle Daten vom upstream Projekt holen
git pull upstream master
mittels pull
wird auch gleich ein git merge
auf die branch master durchgeführt
in die branch mybranch
wechseln
git checkout mybranch
die Daten von upstream master
in die branch mybranch
mergen
git merge upstream/master
ggf. die Änderungshostorie anpssen, so das die eigenen Änderungen wieder 'oben' im Log stehen
git rebase -i upstream/master
Änderungen in die branch mybranch
im eigenen Fork hochladen
git push origin mybranch
Dateien updaten, aber vorher die die eigenen Änderungen rausnehmen
store all your uncomitted changes
git stash
update the source
git pull
re-apply your changes
git stash apply
Datei versehentlich gelöscht
Änderung verwerfen ⇒ Löschung rückgangig machen
git checkout -- path/to/the/test/file
Letzte Änderungen rückgängig machen
zum Beispiel die letzten zwei Änderungen (bezieht sich auf git log) zurücknehmen
git reset --soft HEAD~2
Diff von der branch newbranch zur branch master erzeugen
zur branch
newbranch wechseln
git checkout newbranch
Diff zur lokalen branch
master anzeigen
git diff origin/master
Diff zur lokal-verfügbaren upstream branch
master anzeigen
git diff upstream/master
vorher kann die lokal-verfügbare upstream branch
master aktualisiert werden
git fetch upstream master
Änderungen/Neue Daten hochladen
neue branch erstellen und in diese wechseln
git checkout -b newbranch
Datei erstellen/ändern
nano file.txt
Änderungen auswählen
git add file.txt
Änderungen kommentieren
git commit
Änderungen hochladen
git push origin newbranch
Tag anlegen
SHA besorgen
git log --pretty=oneline
Tag setzen
git tag -a <TAG> <SHA>
zum Beispiel git tag -a 1.1.1 00425431305a3a92b6d2446ef2794f6a787de0c4
Tag hochloaden
git push --tags
Tag löschen
Tag lokal löschen
git tag -d <TAG>
zum Beispiel git tag -d 1.1.1
Tag remote löschen
git push origin :refs/tags/<Tag>
zum Beispiel git push origin :refs/tags/1.1.1
Pull Request von upstream lokal testen
<ID> des Pull Request besorgen und in einer neuen branch einchecken
git fetch upstream pull/<ID>/head:NEW_BRANCHNAME
zum Beispiel git fetch upstream pull/158/head:pr_158
in die neue branch wechseln
git checkout pr_158
Alle Commits zu Einem zusammenführen
neue branch
squash anlegen
git checkout -b squash
aus dem log, SHA des ersten commits kopieren
git log --oneline
... 3832727 update 379e9de add files 54e3200 Initial commit
SHA 54e3200 kopieren
alle Änderungen auf den ersten commit zurücksetzen (SHA einsetzen)
git reset --soft <SHA> in unserem Fall git reset --soft 54e3200
Prüfen, dass alle im commit vorgemerkten Änderungen 'grün' sind
git status
alle anstehenden Änderungen dem ersten commit hinzufügen
git commit --amend
Prüfen, dass nur noch ein commit im log enthalten ist
git log
branch ,master
zur branch old.master
umbenennen
git branch -m master old-master
branch ,squash
zur branch master
umbenennen
git branch -m squash master
in die branch master
wechseln
git checkout master
Prüfen, dass nur ein commit im log enthalten ist
git log
hochladen
git push -f origin master