« zurück
14.
December 2014
11:14

Random Git Tricks

In Git entdecke ich immer wieder faszinierende Funktionen, mit denen man tolle Dinge machen kann. Es ist schon erstaunlich, wie viele Anwendungsfälle von diesem Tool abgedeckt werden. Bei der Fülle von Funktionen nutzt man aber nur eine Hand voll regelmäßig, sodass selten genutzte, aber sehr praktische Funktionen leicht in Vergessenheit geraden.

Damit ich nicht jedes Mal wieder von neuem auf die Suche gehen muss, sammle ich in diesem Artikel einige nette Dinge zu Git, die man vielleicht mal wieder brauchen könnte.

Submodules verwalten und aktualisieren

Submodule erstmalig initialisieren oder aktualisieren:

$ git submodule update --init

Alle Submodule auf den aktuellen origin/master setzen. Das setzt natürlich voraus, dass man origin/master verwenden möchte.

$ git submodule foreach git pull origin master

Update: Inzwischen ist das ganze deutlich einfacher, denn es gibt nun den Befehl

$ git submodule update --remote

Repository teilweise clonen

Hat einen eigenen Artikel bekommen.

Absolut leeren Branch erzeugen

Ganz praktisch, wenn man in einem Repository mehrere unabhängige Projekte sammelt. Macht nicht immer Sinn. Beispielsweise nutzt es GitHub für die Pages oder ich bei den Skripten für die Uni (alte und neue Version in getrennten Branches).

$ git checkout --orphan NEWBRANCH

Der nächste Commit wird dann keinen Parent haben. Der Index enthält aber bereits die Dateien vom vorherigen (bzw. angegebenen) Commit. Das sollte man ggf. bereinigen:

$ git rm -rf .

Merge ohne Änderungen

Manchmal (selten) möchte man einen Branch mergen, ohne die Änderungen zu übernehmen. Der einzige Zweck ist es, um zu symbolisieren, dass der Branch berücksichtigt wurde (durch mehrere Parents). Das lässt sich mit der ours Merge-Strategie machen:

$ git merge -s ours MERGE_BRANCH

This resolves any number of heads, but the resulting tree of the merge is always that of the current branch head, effectively ignoring all changes from all other branches. It is meant to be used to supersede old development history of side branches. (…)

Kommentare

Powered by BetaBlog
Login | RSS Beiträge RSS Kommentare Impressum