2015-01-19 4 views
1

Недавно я начал новый проект, и я начал много экспериментов с самого начала. Теперь некоторые новые люди присоединяются, и у меня есть идея уничтожить первые коммиты от истории гитов, потому что они кажутся бессмысленными, и все, кто просматривает репо, могут запутаться.Как я могу удалить все предыдущие записи из истории git?

Возможное решение - создать новый репо с нуля, но я предпочел бы переписать историю.

Что мне нужно, это просто установить фиксацию HEAD на master, чтобы быть первым и единственным фиксатором в репо.

+3

Создать новый репозиторий git и выбросить старый? Это звучит как лучший способ получить то, что вам нравится. – Nitram

+0

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

+0

@NG, для чего потребуется изменение конфигураций на нескольких промежуточных серверах – Dan

ответ

1

Если вы хотите использовать git rebase вы можете быть interessted в Git - squash entire branch - one line squash command.

Если у вас есть история с большим количеством коммиттов, git rebease может потребоваться некоторое время. В этом случае вы можете сделать неглубокий клон

git clone --depth 1 <REPO_URL> 

чем сделать

git commit --amend 

для того, чтобы создать независимое обязательство, которое содержит самые последние изменения и чем сделать вынужденный толчок

git push -f 
0

Сквош все нежелательные фиксации в вашем локальном репозитории, а затем нажмите их в удаленный репозиторий с помощью опции --force.

0

Если вы действительно уверены, что вы делаете вы можете сделать интерактивный перебазироваться на ваш первый коммит:

git rebase --interactive --root 

и FixUp каждый коммит. Но, по крайней мере, я бы рекомендовал оформить еще одну ветку перед:

git checkout -b rebase 
0

Вы можете создать новую корневую ветвь без какого-либо родительского фиксации с использованием

git checkout --orphan new-master 

и фиксация состояния хранилища для этой новой отрасли с использованием

git add . 
git commit 

и толкать его на сервер с помощью

git push --force origin new-master:master 

Это позволит сделать старую историю недоступной на сервере, так что используйте его с забота.

Смежные вопросы