Jestem na mistrzu i zrobiłem rebase -i <my_branch>
Mieć to:
noop
# Rebase c947bec..7e259d3 onto c947bec
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x <cmd>, exec <cmd> = Run a shell command <cmd>, and stop if it fails
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
Chciałbym wybrać nie wszystkie commity, ponieważ niektóre z nich nie są mile widziane. Jak pracujesz, gdy chcesz, aby niektóre pliki lub zmiany były zawsze „lokalne” w jakiejś gałęzi? Czy jest jakiś pomocnik .gitignore
?
HEAD~*
składni zadziałało dla mnie, ale pierwsza nie.rebase -i
bez zakresu zatwierdzeń nie wyświetli żadnych zatwierdzeń. aby zmienić bazę ostatnich, powiedzmy, 7 zatwierdzeń, użyj następującego:uważaj jednak, że to zmieni historię. nie rób tego, jeśli zatwierdzenia są już wysłane
na drugie pytanie: mieć filię ze swoimi zmianami (w zasadzie gałąź Konfiguracja) i regularnie scalić inne branże do niego. w ten sposób zmiany nie zostaną przeniesione do innych branż
źródło
Kiedy używasz
git rebase -i
, zwykle musisz określić, od którego zatwierdzenia chcesz wykonać rebase. Tak więc, jeśli na przykład chcesz usunąć niektóre zatwierdzenia z ostatnich 10 do bieżącej gałęzi, możesz zrobić:źródło
Jak wspominali inni, musisz określić zakres zatwierdzenia.
(Zakładając, że znajdujesz się w tej samej gałęzi co zatwierdzenie do edycji) -
Aby określić zatwierdzenia, możesz użyć skrótów HEAD ~ 5 lub użyć sumy kontrolnej sha (którą można uzyskać
git log
)W rzeczywistości każde zatwierdzenie będzie działać, jeśli jest przed / przodkiem zmian, które chcesz usunąć / edytować / przeredagować w drzewie. Spowoduje to wyświetlenie wszystkich zatwierdzeń od czasu edycji
<latest-commit-to-be-retained>
w edytorze (zdefiniowanych w konfiguracji git). Z listy, aby usunąć zatwierdzenie, po prostu usuń tę konkretną linię, zapisz i zamknij (vi habbits :)) plik + edytor i wykonajgit rebase --continue
Jeśli chodzi o drugą odpowiedź, zgadzam się z knittlem
źródło