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
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ć:
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
:
To otwiera Index Editor. Zobaczysz trzy karty z kodem: repozytorium (HEAD), Index, Drzewo robocza:
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
:
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:
W ostatnim kroku zamierzamy faktycznie zatwierdzić nową funkcję. Pamiętaj, aby wybrać Zmienione etapy w oknie zatwierdzenia!
Wow, już skończyliśmy!
Fajne wyjaśnienie z animowanymi GIFami! – deeshank
Całkiem możliwe, że jest to najczystsza odpowiedź, jaką widziałem na SO. –