Uczę się git i zauważyłem, że ma on dwuetapowy proces zatwierdzania:
git add <files>
git commit
Pierwszy krok polega na wprowadzeniu poprawek do tak zwanego „obszaru przejściowego” lub „indeksu”.
Interesuje mnie, dlaczego podjęto tę decyzję projektową i jakie są jej zalety?
Jako użytkownik git robisz to, czy po prostu używasz git commit -a
?
Pytam o to, ponieważ pochodzę z bzr (Bazaar), który nie ma tej funkcji.
version-control
git
workflows
thomasrutter
źródło
źródło
git add -p
, możesz wybrać zatwierdzenie jednego fragmentu pliku bez popełniania kolejnego fragmentu tego samego pliku .git status
i prawdopodobniegit push
.Odpowiedzi:
Podziel pracę na osobne zatwierdzenia. Prawdopodobnie wiele razy otworzyłeś plik, aby napisać poprawkę jednowierszową, ale jednocześnie zauważyłeś, że formatowanie było niepoprawne, część dokumentacji można ulepszyć lub inną niepowiązaną poprawkę. W przypadku innych RCS musisz to zapisać lub zapisać w pamięci, dokończyć poprawkę, którą przyszedłeś, zatwierdzić, a następnie powrócić, aby naprawić inne rzeczy (lub stworzyć zatwierdzenie typu ball-of-mud z niepowiązanymi rzeczami) . Dzięki Git naprawiasz to wszystko naraz, a etap + zatwierdzasz pojedynczą linię osobno za pomocą
git add -i
lubgit-gui
.Nie psuj wersji. Pracujesz nad skomplikowaną modyfikacją. Więc próbujesz różnych rzeczy, z których niektóre działają lepiej niż inne, inne, które psują. Za pomocą Git możesz robić rzeczy, gdy modyfikacja poprawia sytuację, i
checkout
(lub poprawiać trochę więcej), gdy modyfikacja nie działa. Nie będziesz musiał polegać na funkcji cofania edytora, możeszcheckout
całe repo zamiast po prostu plik po pliku i wszelkie błędy na poziomie pliku (takie jak usunięcie pliku, który nie został zatwierdzony lub zapisanie + zamknięcie po zła modyfikacja) nie prowadzi do utraty dużej ilości pracy.źródło
git add -i
z zatwierdzeniem na jednym etapie? Wystarczy wybrać kilka plików (lub wierszy w plikach) związanych z pojedynczą funkcją i wykonać zatwierdzenie. Potem wrócisz i zrobisz drugie zatwierdzenie związane z inną funkcją ..git-branch
sposób typowy ( jovicailic.org/2017/04/vim-persistent-undo ). Ponadto historia cofania jest automatycznie śledzona za każdym razem, gdy przejdziesz do trybu normalnego. Zmniejsza to więc twoje psychiczne obciążenie związane z tworzeniem „ręcznych punktów cofania”. Dlaczego używanie edytorów „cofania” buforów nie jest tak metodyczne?Jedną z korzyści dla mnie jest możliwość stopniowego „dodawania” plików. Przed zatwierdzeniem sprawdzam każdy plik. Po przejrzeniu pliku dodaję go. Kiedy ja
git status
lubgit diff
, git pokazuje mi tylko te pliki, które zostały zmodyfikowane i nie zostały jeszcze dodane. Po przejrzeniu wszystkich plików i dodaniu ich mogę zatwierdzić.Więc tak, uważam, że miejsce postoju jest bardzo pomocne.
I nie, nigdy nie używam
git commit -a
. Jednak często używamgit add -u
. W ten sposób mogę nadal wizualizować, co należy popełnić.źródło
Korzyści są dość proste: daje pełną kontrolę nad tym, które pliki chcesz zatwierdzić. W tym przypadku możesz użyć,
git add -p
aby kontrolować, które wiersze chcesz zatwierdzić.źródło
.gitignorelines
, abyś mógł wprowadzić lokalne zmiany w poszczególnych liniach, które mogłyby przetrwać zatwierdzenia i pozostać nienaruszone.app.conf
który zawiera rzeczy, które chcesz udostępnić, a następnie ten,db.conf
który właśnie umieściłeś na liście .gitignore. Problem rozwiązany. Jeśli używasz czegoś zastrzeżonego, powinieneś naprawdę spróbować uzyskać coś tak prostego. Lub przeprowadź go przez preprocesor w zdarzeniu przed kompilacją. Wiele rozwiązań.Jedną z korzyści, które lubię, jest możliwość dokonania części zmiany. Tj. Za pomocą git add -e. Nie wykonuję tak często, jak powinienem, a polecenie git add -e pozwala mi w pewnym stopniu rozwikłać moje zmiany.
źródło