Давайте возьмем это как полную проблемную область вопроса:
У меня есть одна ветвь с именем Develop. У меня есть около 20 коммитов в нем. Я хочу объединить все 1025 в один коммит и переименовать его в «Первоначальный коммит». Таким образом, в конце у ветви будет один коммит с именем «Initial commit».
Вы хотите, чтобы самые последние коммиты n были одним коммитом. Я называю это первый тип сожаления . Первый тип сожаления излечивается путем мягкого сброса и фиксации. Вот демонстрация. Во-первых, я сделаю несколько коммитов в ветке разработки:
git init
echo "one" > file
git add .
git commit -m "one"
git branch develop
git checkout develop
echo "two" >> file
git add .
git commit -m "two"
echo "three" >> file
git add .
git commit -m "three"
echo "four" >> file
git add .
git commit -m "four"
echo "five" >> file
git add .
git commit -m "five"
git log --oneline
# 2febafe (HEAD -> develop) five
# 363ca9f four
# 429b266 three
# d46e6df two
# b8bf284 (master) one
cat file
# one
# two
# three
# four
# five
Как видите, у меня есть коммиты два, три, четыре и пять при разработке. Я sh это был всего лишь один коммит. Здесь мы go:
git reset --soft b8bf284
git add .
git commit -m "unified"
Хорошо, давайте посмотрим вокруг:
git log --oneline
# 408bdd1 (HEAD -> develop) unified
# b8bf284 (master) one
cat file
# one
# two
# three
# four
# five
Да, теперь есть только один коммит на развитие после точки, где он отличается от основного, и все, что я сделал (все пять строк файла), находится в нем.