Wie man mit Git einen „pull –force“ erzwingen kann um lokale Dateien zu überschreiben

404MEDIA. Svn, Git und Co.

Bei der täglichen Arbeit mit Git kommt es immer mal wieder vor, dass man auf einem Server, eine oder mehrere Dateien in der Arbeitskopie hat, die aus diversen Gründen Änderungen beinhalten, welche man gern mit einem Git Pull überschreiben bzw. reverten möchte. Ein git pull –force oder ähnlich wäre hier wünschenwert. Nachfolgender Tipp erlaubt ein solches Verhalten, über einen kleinen Umweg.

Startet man jedoch mit git pull vom Master oder Develop Branch das Update, so erscheint folgende Fehlermeldung:

error: Untracked working tree file '/data/file.php' would be overwritten by merge.

Möchte man nun die vorgenommen Änderungen an der lokalen Arbeitskopie ohne einen manuellen Merge oder  Nutzung der Stash-Funktionalität rückgängig machen, lässt sich dies am Einfachsten mit einem Fetch bzw. Hard-Reset realisieren.

Hierfür sind 2 Schritte erforderlich:

git fetch --all
git reset --hard origin/master 
# oder ggfs. spezifisch nach Branch
git reset --hard origin/<branch_name>

Im ersten Schritt laden wir mit git fetch –all den aktuellen Stand aus dem Repository.
Im Anschluß führen für einen s.g. hard-reset durch der dazu führt, dass sämtliche Dateien in der aktuellen Arbeitskopie nun wieder 1:1 dem origin/master bzw. dem gewählten Branch entsprechen.

Über den Author

Stefan Pingel: Ist Gründer & Geschäftsführer der Agentur 404MEDIA. Er studierte Medieninformatik sowie Web Applications Development und betreut seit über 15 Jahren Unternehmen jeder Branche und Größe im Hinblick auf die Entwicklung webgestützter Anwendungssoftware, SEO, E-Commerce sowie Marketing.