737 Stimmen

Die folgenden nicht verfolgten Arbeitsbaumdateien würden durch die Zusammenführung überschrieben werden, aber das ist mir egal

In meinem Zweig hatte ich einige Dateien in .gitignore

In einem anderen Zweig sind diese Dateien nicht vorhanden.

Ich möchte den anderen Zweig mit meinem zusammenführen, und es ist mir egal, ob diese Dateien nicht mehr ignoriert werden oder nicht.

Leider bekomme ich das:

Die folgenden nicht verfolgten Arbeitsbaumdateien würden durch die Zusammenführung überschrieben werden

Wie kann ich meinen Pull-Befehl so ändern, dass er diese Dateien überschreibt, ohne dass ich diese Dateien selbst suchen, verschieben oder löschen muss?

12voto

Zahin Punkte 307

Das Problem ist, dass Git sich beschwert, wenn wir eingehende Änderungen haben, die eine nicht verfolgte Datei zusammenführen werden. Diese Befehle haben mir geholfen:

git clean -dxf
git pull origin master

8voto

Maarten Punkte 91

Wenn Sie die Verwendung des -f können Sie es zunächst als Trockenübung durchführen. Damit Sie schon im Voraus wissen, was für eine interessante Situation auf Sie zukommt ;-P

-n 
--dry-run 
    Don’t actually remove anything, just show what would be done.

8voto

A. Davidson Punkte 397

Für diejenigen, die es nicht wissen: Git ignoriert Unterschiede zwischen Groß- und Kleinschreibung in Dateien und Ordnern. Das ist ein Albtraum, wenn man sie in genau denselben Namen mit anderer Groß- und Kleinschreibung umbenennt.

Ich bin auf dieses Problem gestoßen, als ich einen Ordner von "Petstore" in "petstore" umbenannt habe (Großbuchstaben in Kleinbuchstaben). Ich hatte meine .git/config-Datei so bearbeitet, dass die Groß-/Kleinschreibung nicht mehr ignoriert wurde, Änderungen vorgenommen, meine Übertragungen verworfen und meine Änderungen gespeichert, um sie in einen anderen Zweig zu verschieben. Ich konnte meine versteckten Änderungen nicht auf diesen anderen Zweig anwenden.

Die Lösung, die ich fand und die funktionierte, bestand darin, meine .git/config-Datei vorübergehend so zu bearbeiten, dass case wieder ignoriert wurde. Dies verursachte git stash apply zum Erfolg. Dann änderte ich ignoreCase zurück auf false . Dann fügte ich alles hinzu, bis auf die neuen Dateien im Ordner petstore, von denen git seltsamerweise behauptete, sie seien gelöscht worden, aus welchem Grund auch immer. Ich übertrug meine Änderungen und führte dann git reset --hard HEAD um diese nicht verfolgten neuen Dateien loszuwerden. Meine Übergabe erfolgte genau wie erwartet: Die Dateien im Ordner wurden umbenannt.

Ich hoffe, dass dies Ihnen hilft, den gleichen Alptraum zu vermeiden wie ich.

6voto

MMM Punkte 125

Zusätzlich zu der akzeptierten Antwort können Sie natürlich die Dateien entfernen, wenn sie nicht mehr benötigt werden, indem Sie die Datei angeben:

git clean -f '/path/to/file/'

Denken Sie daran, das Programm mit der Option -n auszuführen, wenn Sie sehen möchten, welche Dateien git clean entfernt. Beachten Sie, dass diese Dateien gelöscht werden. In meinem Fall waren sie mir ohnehin egal, daher war das für mich die bessere Lösung.

6voto

Forhadul Islam Punkte 1311

Eine Möglichkeit, dies zu tun, besteht darin, lokale Änderungen zu speichern und aus dem entfernten Repository zu ziehen. Auf diese Weise gehen Ihre lokalen Dateien nicht verloren, da sie im Stash abgelegt werden.

git add -A
git stash
git pull

Sie können Ihre lokal gespeicherten Dateien mit diesem Befehl überprüfen - git stash list

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X