Podczas pracy nad poprawką lub funkcją czasami natknęłam się na inne drobne problemy, które można poprawić w locie w ciągu kilku sekund. Kiedy robię je natychmiast, a następnie zatwierdzam gotową funkcję / poprawkę, zatwierdzenie zawiera więcej niż jedną rzecz. Na przykład "add feature X and code clean up"
lub "fix bug X and improved logging"
. Lepiej byłoby podzielić to na dwa commity. W przypadku gdy dwie zmiany nastąpiły w tym samym pliku, nie mogę po prostu dodać jednego pliku, zatwierdzić, dodać drugi, a następnie ponownie zatwierdzić. Widzę więc następujące trzy opcje:
Celowo pomijaj niepowiązane rzeczy podczas pracy nad czymś.
Skopiuj plik z dwiema zmianami, przywróć go, dołącz jedną zmianę, zatwierdź, dołącz drugą zmianę, zatwierdź ponownie.
Nie zmieniaj małych niepowiązanych rzeczy, ale dodaj je do listy rzeczy do zrobienia i zrób to później.
Nie bardzo lubię wszystkie trzy opcje z następujących powodów:
Jakość kodu może ucierpieć, jeśli nie rozwiąże się drobnych problemów. I czuję się źle, jeśli świadomie tracę szansę na poprawę bez większego wysiłku.
Zwiększa to pracę ręczną i jest podatne na błędy.
Jest to dobre w przypadku niezbyt małych todos, ale dodawanie drobnego elementu do listy todo i odwiedzanie go później często trwa znacznie dłużej niż natychmiastowe naprawianie.
Jak radzisz sobie z takimi sytuacjami?
git add -p
dużo, co pozwala mi interaktywnie wybierać części plików, które chcę zatwierdzić. Jeśli czyszczenie jest wystarczająco oddzielne, łatwo to zrobić. Jeśli separacja jest trudniejsza, zatwierdzam stan w gałęzi tymczasowej, a następnie ręcznie dodam zmiany do mojej faktycznej gałęzi, dopóki nie będzie żadnych różnic w gałęzi tymczasowej. Wymaga to dużo więcej pracy, ale pozwala mi sprawdzić, czy każde zatwierdzenie działa samodzielnie.