Ответ 1
Не делайте ни одного из предыдущих! Просто объедините 2 фиксации, используя интерфейс. Помните, что вы не комбинируете коммиты уже в режиме общего репо.
Видеть:
Невозможно получить, как выполнить rebash для squash для текущей ветки. Команда консоли будет
git rebase -i HEAD~2
а затем сквош как обычно. Но как сделать то же самое в TGit?
Script, чтобы инициализировать случай
git init .
touch 1
git add 1
git commit -m "1"
touch 2
git add 2
git commit -m "2"
touch 3
git add 3
git commit -m "3"
В результате после раздачи мы будем иметь 1 фиксацию с 3 файлами.
Любые предложения?
Не делайте ни одного из предыдущих! Просто объедините 2 фиксации, используя интерфейс. Помните, что вы не комбинируете коммиты уже в режиме общего репо.
Видеть:
Это работает для меня, используя TortoiseGit 1.7.12:
TortoiseGit
→ Show log
в контекстном меню.Rebase master onto this...
в контекстном меню.Force Rebase
, а затем щелкните правой кнопкой мыши фиксацию, чтобы выбрать между Pick
, Squash
и т.д., или отметьте флажок Squash ALL
в вашем случае.Start Rebase
, которая при успешном завершении превратится в кнопку Commit
, а затем в кнопку Done
. Нажмите все.Обратите внимание, что в вашем примере script вы должны скворовать/исправлять корневую фиксацию, которая является специальным случаем, и не работает, как описано выше, потому что корень commit не имеет родителя, который вы могли бы выбрать на шаге 2.
Здесь я использовал Tortoise Git и сохранил репо на Assembla (что, по-видимому, похоже на GitHub).
Я решил, что хочу эффективно удалить всю историю транзакций и начать репо с нуля. Я мог бы удалить локальную папку Git и соответствующее репо в Assembla, а затем воссоздал ее, но подумал, что лучше понять, как это сделать "правильно".
Итак, вот как я это достиг:
1) Используя Tortoise Git, отобразите журнал репозитория. Выделите все коммиты, щелкните их правой кнопкой мыши и выберите "объединить в одну фиксацию".
2) В появившемся диалоговом окне удалите комментарий фиксации (который становится комбинацией всех предыдущих комментариев) и замените его одним комментарием, например. Перебазироваться. Затем инициируйте фиксацию. Местное репо будет эффективно начато с нуля (со всеми файлами, добавленными к нему, конечно) без необходимости его удаления и воссоздания.
3) К сожалению, вы не можете просто нажать на Assembla. Он отвергнет это, настаивая на том, что ваша "голова" находится за удаленной ветвью. Итак, чтобы решить эту проблему, перейдите на страницу "Настройки" для репо в Ассембле. Включить "Разрешить-принудительное нажатие".
4) Теперь выполните "принудительный толчок". Я не знаю, есть ли у Tortoise Git опция gui, но это легко сделать с помощью командной строки:
cd [your repo folder]
git push -f origin
Готово!
UPDATE:
Чтобы "принудительно нажать" с TortoiseGit, в диалоговом окне нажмите флажки, чтобы заставить "известные изменения" и "неизвестные изменения". Я не уверен, в чем разница, но они оба приводят к использованию переключателя Git --force. Попробуйте "известные изменения" для начала.
Один из способов: перейдите в диалог журнала и выберите "rebase on *", а затем установите флажок "Force" и отметьте фиксации для "squash" (например, набрав "q" ).