Git

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