Sicheres Entfernen/Überschreiben nur störender Dateien
Wenn Sie merge
:
git checkout -f donor-branch # replace bothersome files with tracked versions
git checkout receiving-branch # tracked bothersome files disappear
git merge donor-branch # merge works
Wenn Sie pull
:
git fetch
git checkout -f origin/mybranch # replace bothersome files with tracked versions
git checkout mybranch # tracked bothersome files disappear
git pull origin/mybranch # pull works
Das ist alles, was Sie wissen müssen, um es zu benutzen. Im Folgenden finden Sie eine Erklärung.
Ausführliche Erklärung
Die lästigen Dateien, die wir entfernen werden:
- in der Spenderbranche existieren (für
git pull
: der Upstream-Zweig),
- in der empfangenden Zweigstelle nicht vorhanden sind,
- und blockieren die Zusammenführung, weil sie in Ihrem Arbeitsverzeichnis vorhanden sind und nicht verfolgt werden.
git merge -f
y git pull -f
nicht existieren, sondern git checkout -f
tut.
Wir werden die git checkout -f
+ git checkout
um die störenden Dateien aufzuspüren und zu entfernen, und dann kann Ihre Zusammenführung normal fortgesetzt werden.
Schritt 1. Dieser Schritt ersetzt zwangsweise nicht verfolgte störende Dateien durch verfolgte Versionen des Spenderzweigs (er checkt auch den Spenderzweig aus und aktualisiert den Rest des Arbeitsverzeichnisses).
git checkout -f donor-branch
Schritt 2. Dieser Schritt entfernt die störenden Dateien, da sie in unserem aktuellen (Spender-)Zweig verfolgt werden und in der receiving-branch
wechseln wir zu.
git checkout receiving-branch
Schritt 3. Da die störenden Dateien nun nicht mehr vorhanden sind, werden beim Zusammenführen im Spenderzweig keine nicht verfolgten Dateien überschrieben, so dass keine Fehler auftreten.
git merge donor-branch