2015-06-17 2 views
6

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

Есть ли способ удалить фиксацию из истории? Изменить: я не хочу добавлять файл в gitignore, потому что нам нужен этот файл.

Благодаря

+0

Итак, основное предложение: всегда проверяйте свои фиксации один за другим, прежде чем нажимать их. ВСЕГДА. – ckruczek

+0

Возможный дубликат [Удалить конфиденциальные файлы и их фиксации из истории Git] (http: // stackoverflow.com/questions/872565/remove-sensitive-files-and-their-commits-from-git-history) –

ответ

0

Нет, Git только добавить изменения в истории. Прочтите статью this за дополнительной информацией.

+4

Это не совсем правильно. Вы можете удалить фиксации, но это приведет к перезаписи истории. – ckruczek

5

Как только вы нажимаете на репо, вы действительно не хотите менять историю. Однако, если вы абсолютно уверены, что, что никто не вытащил/не взял из репо с вашего оскорбительного коммита, у вас есть 2 варианта.

Если вы хотите полностью удалить фиксацию (и каждое совершение, которое появилось после этого), выполните git reset --hard ABC~ (при условии, что хеш фиксации равен ABC). Затем сделайте git push -f.

Если вы просто хотите отредактировать эту фиксацию и сохранить сделанные после нее коммиты, сделайте git rebase -i ABC~. Это запустит ваш редактор, показывая список ваших коммитов, начиная с оскорбительного. Измените флаг «pick» на «e», сохраните файл и закройте редактор. Затем внесите необходимые изменения в файлы и сделайте git commit -a --amend, затем выполните git rebase --continue. Следуйте за этим до git push -f.

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

1

Если это только на локальном компьютере (или никто не проверил изменения):

1) Использование:

мерзавец войти

найти коммит вы хотите удалить , Копировать хеш (длинная sqeuence вроде: e8348ebe553102018c ...).

2) Использование:

мерзавец перебазироваться -i your_commit_hash_code_comes_here

Просто удалите коммита вам не нужно и сохранить файл.

Интерактивная перестановка git может позволить вам также исправить сломанную фиксацию - нет необходимости ее удалять.

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