git reset --hard example/ветка
git reset --hard
git checkout '*'
git restore '*'
git clean -d -f
Но если я создам новую ветку не запушенный коммит пропадет.
git branch feature_branch # создать новую ветку для текущего коммита
git reset origin/master # удалить коммит, он останется только в новой ветке
одной командой сказать, что бы запушил коммит не в мастер а в другую ветку, не переходя на нее
git push origin HEAD:feature_branch
Например, допустим в вашем проекте огромная история изменений и вы хотите разбить ваш репозиторий на два — один с короткой историей для новых разработчиков, а другой с более длинной историей для людей, интересующихся анализом истории. Вы можете пересадить одну историю на другую, 'заменяя' самый первый коммит в короткой истории последним коммитом в длинной истории. Это удобно, так как вам не придётся по-настоящему изменять каждый коммит в новой истории, как это вам бы потребовалось делать в случае обычного объединения историй (так как родословная коммитов влияет на SHA-1).
git config --global user.name "Имя Фамилия"
git config --global user.email user@mail.com
git config --list --show-origin
git filter-repo --mailmap my-mailmap
Correct Name <correct@email.com> <old@email.com>
# Если хочешь внести изменения во внешний репозиторий, то просто клонируй его к себе
git clone https://github.com/github-name/test.git
# Войди в рабочий каталог
cd test
# Переключись в нужную ветку
git switch additional
# Измени файл и закоммить его
git add "index.html"
git commit -m "add new sections"
# Отправь на GitHub
git push
git reset --soft HEAD^1 # откатываем локальную ветку, но не трогаем рабочую копию кода
git push --force origin HEAD # заменяем ветку во внешнем репозитории
git revert HEAD # отменяем предыдущую правку
git push # отправляем во внешний репо
git revert --no-commit HEAD # отменяем отмену, но не коммитим сразу
# дальше оформляем уже правильный коммит, без ненужных файлов.
git reset --soft master # начнём ветку заново от текущего мастера
# но все уже сделанные правки не пропадут, а останутся в индексе
git commit -m 'Это один коммит' # зафиксируем работу
git reset $(git commit-tree HEAD^{tree} -m "Новое начало истории")
git gc --prune=now --aggressive