Samstag, November 29, 2014

Ubuntu Terminal Fenster anpassen

Neulich, nach dem Update meiner Ubuntu Installation von Version 12 auf 14, öffnete sich nach drücken der Tastaturkombination ctrl+alt+t ein häßliches, kleines Terminal Fenster. Das läßt sich zum Glück ändern. Unter Systemeinstellungen->Tastatur->Tastaturkürzel->Eigene Tastaturkürzel habe ich für das Tastaturkürzel ctrl+alt+t folgenden Befehl hinterlegt:
gnome-terminal --profile=Default --geometry=95x35+250+60
Herrlich.

Freitag, November 28, 2014

GIT: Mehrere Commits zu einem Zusammenfassen

Aufgabe: Fasse mehrere Commits aus einem Branch zu einem Commit zusammen. Das kumulierte Commit landet am Ende auf dem Master-Branch. Im ersten Schritt wird auf den Master-Branch gewechselt und dieser aktualisiert:
git checkout master
git fetch origin
git pull
Die Commits werden per Merge aus dem Commit-Branch in den Master-Branch überführt.
git merge feature_branch
Und hier kommt jetzt der Trick:
git reset origin/master
Damit sind alle Änderungen im Modus 'unstaged'. Mit git add werden alle Änderungen eingesammelt und abschließend mit einem Commit versehen.
git add --all
git commit -m "bla bla bla"
Fertig.

Freitag, Mai 23, 2014

Alltags GIT

Hier eine Zusammenstellung meiner häufigsten GIT Alltagsoperationen: In der Regel geht es mit dem Clonen eines Repositories los:
git clone <url> <local_directory>
Im Anschluss fange ich mit der Arbeit an und editiere einige Dateien. Diese werden mit add und commit in das lokale Repository übernommen.
git add .
git commit -m "Sinnvoller(!) Kommentar."
Falls Dateien gelöscht wurden, dann lohnt sich der folgende Befehl. Dieser sammelt alle geänderten und gelöschten Dateien ein und fügt sie dem Änderungsindex zu.
git add -u
Nach dem commit ist im Anschluss eventuell ein push in das Remote Repository durchzuführen:
git push
Eventuell lege ich vor Arbeitsbeginn einen lokalen Branch an. Das ist vielleicht empfehlenswert, bevor man mit der Arbeit beginnt.
git branch <branch_name>
Oder das Wechseln auf einen bestimmten Branch.
git checkout <branch_name>
Beim Branch-Wechsel bleiben unter Umständen Dateien im Verzeichnisbaum liegen, die man dort nicht wünscht. Z.B. neu angelegte Dateien, die noch nicht unter Versionskontrolle stehen. Das folgende Kommando entfernt alle für GIT unbekannten Dateien und Verzeichnisse. Aber aufpassen: Die Dateien und Verzeichnisse sind dann gelöscht! GIT kann diese Dateien nicht wieder hervorholen.
git clean -f -d
Und falls die Arbeiten sich hinziehen, lohnt sich vielleicht ein Replizieren des Branchs in das Remote-Repository.
git push origin <branch_name>
Irgendwann, wenn das Arbeitsergebnis nach MASTER gemerged wurde, kann der lokale Branch gelöscht werden.
git branch -d <branch_name>
Im zweiten Schritt bietet sich vielleicht auch das Löschen des zugeordneten Remote-Branches an.
git push origin :v1.1.1_optimate
Einen Remote-Branch abholen:
git checkout -b <branch_name> origin/<branch_name>
Ein Tag vergeben (In diesem Fall mit einem sprechendem Kommentar):
git tag -a v1.2.0 -m 'Version 1.2.0'
Und im Anschluss wird das Tag, wenn gewünscht, auch Remote verfügbar gemacht:
git push origin --tags
Ein Tag kann gelöscht werden:
git tag -d v1.2.0
bzw. aus dem Remote-Repository entfernt werden:
git push origin :refs/tags/v1.2.0
Unter Windows hat sich die folgende Farbeinstellung bei mir bewährt. Die Standard-Farbe verschwimmt etwas bei einem eingestellten Zeichensatz Consolas mit Schriftgröße 12.
git config --global color.status.untracked "bold red"

UPDATE (27.11.2014 05:36 Uhr):
Falls die versionierten Dateien auf verschiedenen Plattformen editiert werden, empfiehlt sich die folgende Einstellung:
git config --global core.autocrlf true
Das ergänzt oder entfernt den passenden Zeilenumbruch.
UPDATE (20.09.2014 09:03 Uhr):
Das Umbenennen von Local- und Remote Branch:
#rename local branch
git branch -m old-branch-name new-branch-name

#delete remote branch with old name
git push origin :old-branch-name

#create remote renamed branch and setup remote branch tracking (-u flag)
git push -u origin new-branch-name

UPDATE (22.05.2014 21:18 Uhr):
Unter Github habe ich mir ein kleines Shell Skript zusammen gestellt. Den Command Line Prompt habe ich um den GIT Status erweitert. Weitere Highlights sind die Funktionen 'git_remove_missing_files', 'git_stats' und 'git_info'.

Dienstag, Dezember 17, 2013

git push and current branch

Bei der Ausführung von git push versucht GIT alle lokalen Branches auf das Remote-Repository zu schieben. Diese Funktion lässt sich abschalten oder besser begrenzen. Mit
git config --global push.default current
schiebt GIT nur die Änderungen des aktuellen Branches auf das Remote-Repository. Ab GIT 2.0 wird diese Einstellung der Standard sein.

Oracle VirtualBox Update Ärger

Oracles VM VirtualBox Manager wollte aktualisiert werden. Kein Problem. Download gestartet. Installer gestartet.... Der Versuch, die alten VM Installationen zu starten, schlug mit einer Fehlermeldung fehl.
VT-x is disabled in the BIOS. (VERR_VMX_MSR_VMXON_DISABLED)
Ein ähnliches Problem hatte ich vor einiger Zeit. Damals half es, die Benutzerrechte für die VMs neu zu setzen. Das hatte diesmal keine Wirkung. Im Netz bin ich auf die folgende Lösung gestossen: Zunächst muss die VBoxManage.exe im Dateipfad liegen. Ist das gegeben, kann man den folgenden Kommandozeilen Befehl ausführen:
VBoxManage list vms
Das liefert eine Liste aller registrierten VMs. Bei mir sieht das so aus:
"Oracle Developer Days" {de67fcab-5dce-4e21-bc4b-17e176dce2c3}
"ubuntu-laptop" {5c6e9005-4a1d-4163-833d-ede800a71f06}
"betoffice-server" {96319b3a-88b4-46ad-8e87-41e1d1d10ca1}
Für alle VMs habe ich dann das folgende Kommando ausgeführt:
VBoxManage modifyvm "Oracle Developer Days" --longmode off
VBoxManage modifyvm "ubuntu-laptop" --longmode off
VBoxManage modifyvm "betoffice-server" --longmode off
Und schon lassen sich die VMs wieder starten.