Как выполнить некоторые действия с коммитами в git?

Начинаю работать с системой управления версиями git. При работе над первым своим проектом возник вопрос, можно править уже сделанные коммиты или нет. Вот такую последовательность действий я сделал в своём проекте:
  1. создал файл index.html и .htaccess, сделал коммит
  2. создал файл action.php и изменил index.html, сделал коммит
  3. создал index.php как аналог index.html, но уже на языке PHP, включил в него также функционал из action.php (index.html и action.php стали больше не нужны), сделал коммит
  4. нашёл ошибку в index.php, отредактировал его, сделал коммит
  5. обнаружил, что у меня не закомичено удаление index.html и action.php, закомитил


Собственно, никак не могу понять как сделать 2 вещи:
комментарий к коммиту 1 я считаю неправильно информативным и хочу его переименовать. Прочитал в инете, что переименовать можно только теущий коммит, то есть сначала мне нужно сделать checkout на коммит 1, Делаю:
git checkout <хэш коммита 1>
git commit --amend -m "новый комментарий"

после данных действий при просмотре истории через "git log" я вижу, что все мои коммиты пропали кроме изменённого, а при просмотре через "git log --all" вижу, что коммитов стало уже не 5, а 6

Второй вопрос, как удалить коммиты 3 и 4, чтобы они изчезли в том числе из "git log --all", у меня по сути было 3 изменения в проекте, коммиты с 3 по 5 по сути являются шагами одного изменения и хранить в истории коммиты 3 и 4 никакой надобности нет.
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
git rebase -i <идентификатор коммита>

комментарий к коммиту 1 я считаю неправильно информативным и хочу его переименовать.

-- отметить коммит как r (reword) в списке rebase.

как удалить коммиты 3 и 4, чтобы они изчезли в том числе из "git log --all", у меня по сути было 3 изменения в проекте, коммиты с 3 по 5 по сути являются шагами одного изменения и хранить в истории коммиты 3 и 4 никакой надобности нет.

Это не "удалить", это "объединить с другими коммитами".
-- отметить все идущие подряд коммиты которые надо объединить, кроме первого, как s (squash) в списке rebase.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы