Etapowanie jest krokiem przed procesem zatwierdzania w git. Oznacza to, że zatwierdzenie w git odbywa się w dwóch etapach: pomostowym i rzeczywistym.
Tak długo, jak zestaw zmian znajduje się w obszarze przemieszczania, git pozwala edytować go tak, jak chcesz (zamieniać pliki przemieszczania na inne wersje plików przemieszczania, usuwać zmiany ze przemieszczania itp.).
Przerwany czas metafory:
Rozważ scenariusz, w którym dzwonisz do osób przeprowadzających, aby przenieść swoje rzeczy ze starego mieszkania do nowego. Zanim to zrobisz, przejrzysz swoje rzeczy, zdecydujesz, co zabierzesz ze sobą i co wyrzucisz, zapakujesz w torby i zostawisz w głównym korytarzu. Po prostu przyjeżdżają, zabierają (już spakowane) torby z korytarza i transportują je. W tym przykładzie wszystko się dzieje, dopóki ruchowcy nie zdobędą twoich rzeczy, jest inscenizowany: sam decydujesz, co się dzieje, jak je spakować i tak dalej (np. Możesz zdecydować, że połowa twoich rzeczy zostanie wyrzucona, zanim ludzie się tam dostaną - to część inscenizacji).
Z technicznego punktu widzenia etapowanie obsługuje również transakcyjne zatwierdzenia, dzieląc wszystkie operacje na to, co może zawieść (etapowanie) i co nie może zawieść (zatwierdzenie):
Zatwierdzenie w git jest implementowane transakcyjnie po pomyślnym przemieszczeniu. Kilka etapów przemieszczania może się nie powieść (na przykład musisz zatwierdzić, ale twój dysk twardy jest w 99,9999% zapełniony, a git nie ma miejsca na wykonanie zatwierdzenia). To nie powiedzie się w procesie przemieszczania (twoje repozytorium nie zostanie uszkodzone przez częściowe zatwierdzenie), a proces przemieszczania nie wpłynie na historię zmian (nie uszkodzi twojego repozytorium w przypadku błędu).