Подтвердить что ты не робот

Как отменить все коммиты с самого начала

Итак, я переношу с svn (code.google.com) на git (github).

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

Я хотел бы переустановить все в единую фиксацию "первоначального импорта".

Я вытащил все на свой компьютер, и я пытаюсь это сделать. Но все, что я нашел, было: git rebase -i master, но он только уменьшает новые модификации и фиксирует.

Как очистить репозиторий github из всей истории с помощью rebase?

4b9b3361

Ответ 1

Вы можете переустанавливать и сквоивать все, если хотите (кроме начального коммита), но зачем беспокоиться? Просто удалите каталог .git, запустите git init, чтобы воссоздать его, git add все и git commit, чтобы создать новое начальное коммит.

Ответ 2

Несмотря на то, что принятый ответ - лучший способ выполнить то, что действительно хотел сделать плакат, теперь можно перезагрузить все коммиты с помощью git rebase -i --root.

Ответ 3

Ответ Jefromi будет работать, но если вы хотите сохранить свою существующую конфигурацию репо или даже оставить вокруг коммитов на всякий случай, вы можете сделать следующее:

git checkout master

git branch backup необязательно оставляйте другую ветку здесь, если вы хотите сохранить свою историю.

git reset --soft $SHA_OF_INIT_COMMIT это обновит то, что указывает HEAD, но оставьте ваш индекс и рабочий каталог в их текущем состоянии. Вы можете получить SHA с помощью git log --pretty=format:%h --reverse | head -n 1 и сделать этот шаг с помощью git reset --soft $(git log --pretty=format:%h --reverse | head -n 1)

git commit --amend измените первоначальную фиксацию, чтобы указать на текущее состояние вашего репо.

Ответ 4

Найдите хэш коммита, который вы хотите начать раздавать, скажем abcd12, а затем отмените его против этого хеша.

git rebase -i abcd12

Вы используете master для переустановки, которая выполняет rebase против вершины главной ветки.

Ответ 5

Если вы хотите сократить всю свою историю до одного фиксации "Первоначальный импорт", просто удалите каталог .git и создайте новый локальный репозиторий ( сохранение резервной копии старого), git init . && git add . && git commit -m "Initial import".

В таком новом репозитории не будет общего предка с тем, который вы нажали на GitHub, поэтому вам нужно git push --force создать недавно созданный репозиторий.