2010-03-03 7 views
20

Ich habe eine Datei mit folgenden Änderungen bekam:Untangle zwei Zeilen mit `git add -p`

# Manual hunk edit mode -- see bottom for a quick guide 
@@ -280,6 +281,7 @@ 
if(foo) 
{ 
    bla(); 
- test(true); 
+ removeThis(); 
+ test(false); 
} 
else 

Wie kann ich die Änderung für test() nur begehen, und vermeiden Sie begehen removethis()? Jedes Mal, wenn ich versuche, das Hunk manuell zu bearbeiten, sagt Git mir, dass es nicht sauber anwendet.

Antwort

24

Wie kann ich die Änderung nur für test() festschreiben und removeThis() vermeiden?

Das ist einfach.

  1. add -i Modus eingeben, dann 5: [p]atch auswählen, indem pGeben Sie drücken.

  2. Wählen Sie Ihre Datei aus, indem Sie ihre Nummer eingeben, und drücken Sie Geben Sie ein, um mit der Bearbeitung der Patches zu beginnen.

  3. Presse e Ihr großes Stück zu bearbeiten (Sie scheinen hier erfolgreich erreicht zu haben, indem Sie git add -p statt).

  4. die Zeile mit removeThis() Löschen vollständig, mit + Zeichen an als auch den Anfang. Fassen Sie nichts anderes an! Der resultierende Text sollte wie ein Patch für die Änderung aussehen, die Sie vornehmen.

  5. Speichern die Datei und Ausfahrt der Herausgeber.

Der Patch wird gut angewendet. Ich habe es gerade überprüft. Überprüfen Sie noch einmal - vielleicht ist es ein anderes Stück, das nicht zutrifft?

Abgesehen davon, Ihre , Symbole in der Nähe der +/- aussehen verdächtig. Vielleicht sind Ihre patch und diff Programme irgendwie nicht synchron? Versuchen Sie, die , s aus dem Stück zu entfernen.

+2

Danke! Ich fand auch heraus, dass mein Editor ('notepad2') die Datei in LF-Zeilenendungen speicherte. Speichern sie in LRLF Endungen behoben das endgültige Problem. – vdboor

+0

FYI, das Komma vor den Zeilen sind Tippfehler, die den Post hier eingeben, sie sind nicht in der Quelle. Ich habe es repariert. – vdboor

+0

@vdboor Nur neugierig, warum die LF-zu-CRLF löst? Bist du auf einer Windows-Plattform? – RayLuo