Как убрать коммиты от слова совсем?
Вот такая ситуация. Примерная история коммитов с комментариями.
- Нормальный коммит, запушен на github
- Нормальный коммит
- Коммит, в который случайно попал новый файл на 200 мегабайт
- Очередной коммит.
- Коммит, в котором замечена неприятность, файл удален через git rm
- Еще один коммит
Но теперь если пушить все это на github, то получается неприятность: большой файл там не принимается, и хотя его вроде бы и нет в коммите 5 и далее, но он есть в коммитах 3 и 4, и хотя он не нужен в принципе, пуш его все равно пытается залить.
Как корректно поступить в такой ситуации? Конечно, как вариант - откат к коммиту 2, и добавление все наново руками, что было в коммитах 3 и 4. Но не кажется хорошим решением. А как поступить лучше всего?
Вот что делаю, по шагам.
Создал тестовый репозиторий на github. Создал у себя репозиторий из одного файла version
с цифрой 0 внутри.
- Выполнил
Commit 0
.
Запустил прописанные на github
git remote add origin https://github.com/mikhajlo/Test.git
git branch -M main
git push -u origin main
Меняю цифру в
version
на 1, делаюCommit 1
(git commit -a
иgit push
).Добавляю большой файл, меняю цифру в
version
на 2, делаюCommit 2
(git add large.rar
иgit commit -a
).Меняю цифру в
version
на 3, делаюCommit 3
(git commit -a
).Удаляю большой файл (
git rm -f large.rar
), меняю цифру вversion
на 4, делаюCommit 4
(git commit -a
).Меняю цифру в
version
на 5, делаюCommit 5
(git commit -a
).
При попытке запушить получаю ошибку большого файла.
git log
говорит
commit aecd9dd79cd79607b7440b013c72f3e02c7acbe6 (HEAD -> main)
Commit 5
commit 874eb211adc6706f0626ff66db4d1092cdc3b72c
Commit 4
commit a5c5801888b877962dfa6d6be18443723ea280a3
Commit 3
commit 1813bf5e873ae3a7fc0ccb2f96cc7b0547f7b759
Commit 2
commit c776ffc36977b52f8e497e90f03c9591b98c6ac3 (origin/main)
Commit 1
commit 0fa879ac87277db8def7a43ea10323627f9ceb46
Commit 0
Вот теперь тот же вопрос, что и раньше, только, пожалуйста, со всеми командами от и до, чтоб не было никаких разночтений и непоняток...
P.S. Просьба не гнать читать учебники — Pro Git от Scott Chacon & Ben Straub прочел. Очень уж запутанно и непонятно... Если можете предложить что-то понятное (реально понятное, а не как в этой книжке...) и на русском (чтоб не мучиться сначала с переводом, потом с пониманием) - буду признателен.
P.P.S. Более непонятной системы с более непонятной идеологией и документацией не встречал, разве что Linux...