2014-06-24 10 views
7

Używam SmartGit/Hg. Edytowałem kilka plików pracujących nad dwiema oddzielnymi nowymi funkcjami. Teraz, gdy zakończyłem pracę nad Feature A, chcę zatwierdzić moją pracę, ale nie mogę po prostu zatwierdzić wszystkich moich edytowanych plików, ponieważ zawierają one zmiany w Feature B, których nie chcę teraz zatwierdzać.Jak zatwierdzać tylko określone linie za pomocą SmartGit/Hg

Odpowiedz

20

Można to osiągnąć za pomocą polecenia stage. Przede wszystkim wszystkie pliki zawierające zmiany, które mają zostać zatwierdzone. W tym przykładzie wszystkie pliki z wyjątkiem jednego o nazwie DoNotCommit.php zawierać co najmniej jedną linię chcemy popełnić: enter image description here

Dalej, musimy otworzyć Index Edytor dla wszystkich plików zawierających linie dysponująiFunkcja B. W tym przykładzie, musimy sprawdzić Main.php i NewFeatures.php: enter image description here

To otwiera Index Editor. Zobaczysz trzy karty z kodem: repozytorium (HEAD), Index, Drzewo robocza: enter image description here

Dla nas tylko repozytorium (HEAD) i kartę Index są ważne. Karta Repozytorium Repozytorium (HEAD) wyświetla już zatwierdzoną zawartość pliku. Zakładka Indeks pokazuje zmiany, które zamierzamy zatwierdzić. Powiedzmy, że chcemy tylko popełnić pierwszy blok kodu, z funkcją myNewCompletedFeature: enter image description here

Jak widać, usuwamy cały kod nie chcemy popełnić na karcie Index. To powoduje, że nie usuwa kod z drzewa roboczego , co oznacza, że ​​nie tracisz żadnych zmian. Teraz robimy to samo z naszym nowym plikiem NewFeatures.php i ponownie zapisujemy: enter image description here

W ostatnim kroku zamierzamy faktycznie zatwierdzić nową funkcję. Pamiętaj, aby wybrać Zmienione etapy w oknie zatwierdzenia!enter image description here

Wow, już skończyliśmy!

+2

Fajne wyjaśnienie z animowanymi GIFami! – deeshank

+2

Całkiem możliwe, że jest to najczystsza odpowiedź, jaką widziałem na SO. –

Powiązane problemy