2015-05-14 6 views
3

Мне нравятся ответы от How to squash all git commits into one?.Как выкачать все коммиты, не теряя подмодулей?

Однако я получаю, если я сливаю конфликты:

git rebase --root -i 

киркой и сквош, как предложено.

И я теряю подмодулях (у меня есть 5), когда я

rm -rf .git 
git init 
git add . 

Что является наиболее эффективным способом, чтобы раздавить всю историю и держать мои подмодулях в их текущем каталоге на текущем ша.

ответ

4

Попробуйте git reset --soft SHAOFFIRSTCOMMIT и затем git commit --amend

Первая команда сбрасывает текущую ветвь в первый коммит, но keepsmthe текущий индекс и вторая команда совершает текущий индекс в последней фиксации.

+1

Нет, 'git reset --mixed' сбрасывает индекс. (Кстати, '--mixed' является значением по умолчанию.)' --soft' - это возможность оставить индекс таким, какой он есть. – hvd

+0

, но iirc mixed также выполняет работу в этом деле, не так ли? – MrTux

+0

Нет, в общем, нет. После 'git reset --mixed' вам придется беспокоиться о повторном обновлении индекса до того, какое именно оно было, прежде чем вы выполнили' git reset', и это не обязательно тривиально. – hvd