Basiskonfiguration git
Es bietet sich an in seinem Home Verzeichnis (Linux: /home/<username>) eine Datei '.gitconfig' anzulegen. Meine Datei sieht wie folgt aus:
[user] name = <mein_name> email = <mein_name>@gmx.de [diff] color = auto [page] color = true [status] color = auto [core] editor = kate [merge] tool = kdiff3 [color] ui = auto
[push]
default = matching
Rebase als 'pull strategy'
Hat man aus bitbucket.org zum ersten mal ausgecheckt, dann hat man zwar alle 'remote Branches' (git branch -r), aber nur einen lokalen 'tracking branch' (git branch), nämlich den der 'remotes/origin/master' folgt: 'heads/master' oder kurz 'master'.
Die anderen 'tracking branches' müssen also noch erstellt werden! In eclipse/sts geht das wie folgt:
Project Explorer -> nuclos (Hauptprojekt) -> rechte Maustaste -> Team -> Switch to -> New branch ...
Hier wird also der richtige 'remote branch' gewählt. Eclipse/STS schlägt dann automatisch einen Namen für den lokalen 'tracking branch' vor. Alternativ funktioniert's auch auf der Kommandozeile mit 'git branch -l -t 3.8 origin/3.8'.
Sehr wichtig ist es, als 'Pull stategy' Rebase auszuwählen (wie im Screenshot geschehen), da so unnötige 'Merges' durch Pull vermieden werden! Genauere Informationen hierzu finden sich unter [http://git-scm.com/book/de/Git-Branching-Rebasing] und [http://www.jarrodspillers.com/2009/08/19/git-merge-vs-git-rebase-avoiding-rebase-hell/] (beides Pflichtlektüre für Entwickler!).
Diese Erstellung des 'tracking branch' muss nur einmal durchgeführt werden. Danach finden man die schon erstellten 'tracking branches' in Eclipse/STS direkt im 'Switch to' Menü:
Git intern fügt die Erstellung eines 'tracking branch' einen Abschnitt ähnlich dem folgenden in die Datei '<repository>/.git/config' ein:
[branch "3.8"]
remote = origin
merge = refs/heads/3.8
rebase = true
Der entscheidene Grund für diese Mail ist, dass die letzte Zeile 'rebase = true' für den Branch 'master' nicht gesetzt ist, aber gesetzt sein sollte. Bitte fügt daher alle diese Zeile in der Datei <repository>/.git/config hinzu. Der Abschnitt sollte dann insgesamt wie folgt aussehen:
[branch "master"]
remote = origin
merge = refs/heads/master
rebase = true
Weitere Informationen in [http://stackoverflow.com/questions/11955305/what-is-the-meaning-of-pull-strategy-when-creating-a-branch-with-egit].
Rebase als Standard 'pull strategy'
Es ist auch möglich (und eine Überlegung wert), für alle 'tracking branches' rebase als Standard zu benutzen! Dazu muss man folgende Kommandozeile benutzen:
cd <repository> git config branch.autosetuprebase always
Weitere Informationen liefert [http://alblue.bandlem.com/2011/06/git-tip-of-week-pulling-and-rebasing.html].