Wie bekomme ich git apply --index
nicht komplett abzubrechen, nur weil ein einzelner Brocken ausfällt? Ich habe einen 100K+ Patch mit Dutzenden von gelöschten und hinzugefügten Dateien, es wäre mühsam, das zu tun patch -p1
, git add
, git rm
manuell tanzen.
Bearbeiten: git apply --reject --index
scheint zwei Drittel der Arbeit zu erledigen: Der Patch wird angewendet und entfernte Dateien werden zum Löschen bereitgestellt, aber neue Dateien werden nicht hinzugefügt.
Seit Git-Version 1.7.12, git apply
hat ein --3way
(oder -3
) Möglichkeit welches wird:
- Wenden Sie alle Änderungen an, die es herausfinden kann, und stellen Sie sie bereit (dh: fügen Sie sie dem Arbeitsbaum und dem Index hinzu).
- Fügen Sie alle neuen Dateien hinzu und stellen Sie sie bereit (dh: fügen Sie sie der Arbeitsstruktur und dem Index hinzu) und,
-
Wenn es auf einen Zusammenführungskonflikt stößt, wird es für jeden widersprüchlichen Hunk:
- Fügen Sie den Code aus dem Zweig ein, zwischen dem Sie patchen
<<<<<<< ours
und =======
Markierungen und
- Fügen Sie den Code aus der Patch-Datei dazwischen
=======
und >>>>>>> theirs
Markierungen.
… Dateien mit Konflikten werden nicht bereitgestellt: Sie müssen sie manuell beheben und git add
sie danach.
Versuchen git apply --reject <patchfile>
Das ist was ich mache,
Zuerst durchführen git apply --reject
. Dann renne git add -p
und interaktiv Hunks auswählen. Anstatt von add -p
Sie können auch andere Git-GUIs verwenden. Um neue Dateien hinzuzufügen, fügen Sie sie manuell hinzu, wenn sie nicht hinzugefügt wurden.
tut das
--apply
Flagge in Kombination mit--reject
überhaupt helfen?– Steve Buzonas
3. April 2013 um 20:04 Uhr
Ich frage mich nur, ob es möglich ist, es zu verwenden
git am --interactive
mit diesem Patch?– Standardruf
24. Januar 2014 um 19:54 Uhr