Witam.
Chciałbym uporządkować commity na swoim Git'cie. Potrzebuję edytować oraz usuwać wybrane commity ale jednocześnie nie usuwać plików. Jak to zrobić krok po kroku?
Git - edytowanie oraz usuwanie commitów
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Poznań
- Postów: 539
- Rejestracja: dni
- Ostatnio: dni
- Postów: 225
Hasła których szukasz to: squash, amend, ewentualnie push z forcem :D
Bardzo przyjemnie robi się to z poziomu IDE np. IntelliJ
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Poznań
- Postów: 539
git log --oneline
git rebase -i HEAD~10
wpisać nowy commit
:wq
git push --force
Jeżeli nie chce działać edytor po git rebase -i HEAD~10 to trzeba użyć:
git rebase --abort
Jeżeli edytor zadziała to zmieniamy "pick" na "squash" w commitach, które chcemy scalić. Potem by zatwierdzić wciskamy ESC : wq ENTER Wtedy jeszcze pushujemy git push --force. I powinno wszystko dzialać.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Kraków
- Postów: 2002
tBane napisał(a):
git log --oneline git rebase -i HEAD~10
Ogólnie robię podobnie, choć raczej z rebase względem base brancha, żeby przy okazji zachować liniową historię commitów. Ewentualnie względem commit SHA z którego wyszedłem, jeśli liniowa historia nie jest jakoś specjalnie lubiana przez zespół, a chcę sobie po coś posprzątać.
Ale w tym drugim przypadku najczęściej nie chce mi się robić tego ręcznie, po prostu po wystawieniu i zaakceptowaniu PR robię merge ze squash zamiast zwykłego, i piszę jeden commit message, lub konfiguruję repozytorium by domyślnym commit message były tytuł i opis PR.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 5226
A co z np.
git reset --soft HEAD~5
gdzie 5 to liczba commitów do tyłu?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Kraków
- Postów: 2002
WeiXiao napisał(a):
A co z np.
git reset --soft HEAD~5gdzie 5 to liczba commitów do tyłu?
No zadziała mniej więcej tak samo, jak gdyby po prostu chciał zrobić squash, przy czym musisz osobno puścić commit. No i jeśli to jednak nie ma być squash tylko interactive rebase do mniejszej liczby commitów / przepisywanie commitów, no to odpada.
Chociaż mi się jakoś nigdy nie chce mieć >1 commita po merge, więc równie dobrze....