Ich benutze SmartGit/Hg. Ich habe einige Dateien bearbeitet, die an zwei separaten neuen Funktionen arbeiten. Jetzt, da ich mit der Arbeit an Funktion A fertig bin, möchte ich meine Arbeit begehen, aber ich kann nicht einfach alle meine bearbeiteten Dateien übernehmen, da sie Änderungen von Feature B enthalten, die ich jetzt nicht begehen möchte.Wie verpflichte ich nur bestimmte Linien mit SmartGit/Hg
Antwort
Das erreichen Sie mit dem Befehl stage. Zunächst einmal stage alle Dateien, die Änderungen enthalten, die festgeschrieben werden sollen. In diesem Beispiel werden alle Dateien mit Ausnahme der genannten DoNotCommit.php
enthalten mindestens eine Linie, die wir begehen wollen:
Als nächstes müssen wir den Index Editor für alle Dateien öffnen Linien Eigenschaft enthält AundMerkmal B. In diesem Beispiel müssen wir Main.php
und NewFeatures.php
überprüfen:
Dies öffnet den Index Editor. Sie sehen drei Registerkarten mit Ihrem Code: Repository (HEAD), Index, Arbeits Baum:
für uns nur das Repository (HEAD) und die Index Register sind wichtig. Die Registerkarte Repository (HEAD) zeigt den bereits festgeschriebenen Inhalt der Datei an. Die Registerkarte Index zeigt die Änderungen, die wir vornehmen werden. Sagen wir, wir wollen nur den ersten Block des Codes verpflichten, mit der myNewCompletedFeature
Funktion:
Wie Sie sehen, wir entfernen den gesamten Code wollen wir nicht aus dem Index Registerkarte zu begehen. Dies tut nicht entfernen Sie den Code aus dem Working Tree, was bedeutet, dass Sie keine Ihrer Änderungen verlieren. Jetzt machen wir dasselbe mit unserer neuen NewFeatures.php
Datei und speichern erneut:
Im letzten Schritt werden wir die neue Funktion tatsächlich festschreiben. Achten Sie darauf, Inszenierte Änderungen im Commit-Fenster zu wählen!
Wow, wir sind jetzt fertig!
Cool Erklärung mit animierten Gifs! – deeshank
Ziemlich wahrscheinlich die klarste Antwort, die ich sogar auf SO gesehen habe. –