Как вернуть первоначальный git commit?
Я впервые передаю репозиторий git; Затем я сожалею о коммите и хочу его вернуть. Я пытаюсь
# git reset --hard HEAD~1
Я получаю это сообщение:
fatal: ambiguous argument 'HEAD~1': unknown revision or path not in the working tree.
Это коммит является первым фиксатором репозитория. Любая идея как отменить git initial commit?
Ответы
Ответ 1
Вам просто нужно удалить ветку, в которой вы находитесь. Вы не можете использовать git branch -D
, поскольку у этого есть проверка безопасности против этого. Вы можете использовать update-ref
для этого.
git update-ref -d HEAD
Не используйте rm -rf .git
или что-то вроде этого, так как это полностью уничтожит весь ваш репозиторий, включая все другие ветки, а также ветку, которую вы пытаетесь выполнить reset.
Ответ 2
Вы можете удалить HEAD и восстановить репозиторий в новое состояние, где вы можете создать новый первоначальный коммит:
git update-ref -d HEAD
После того, как вы создадите новый коммит, если вы уже нажали на удаленный компьютер, вам нужно будет принудительно перенаправить его на удаленный компьютер, чтобы перезаписать предыдущую начальную фиксацию:
git push --force origin
Ответ 3
Самый простой способ:
rm -fr .git
из каталога, в котором вы выполнили git init
.
Ты ничего не хочешь сохранить, поэтому ты ничего не теряешь. Тем не менее, это безопасно, только если у вас нет ничего другого в вашем репозитории. В условиях, описанных в вопросе "Первичный репозиторий commit first time — то пожалеете", это безопасно. Очень часто, однако, это не безопасно.
Ответ 4
Этот вопрос был связан с этим сообщением в блоге, и было предложено альтернативное решение для более новых версий Git:
git branch -m master old_master
git checkout --orphan master
git branch -D old_master
Это решение предполагает, что:
- У вас есть только одна фиксация на ветке
master
- Нет ветки с именем
old_master
, поэтому я могу использовать это имя
Он переименует существующую ветвь в old_master
и создаст новую, потерянную, ветку master
(например, создан для новых репозиториев), после которой вы можете свободно удалять old_master
... или нет. До вас.
Ответ 5
Вы не можете. Итак:
rm -rf .git/
git init
git add -A
git commit -m 'Your new commit message'
Ответ 6
git reset --hard
внести изменения, затем выполните
git add -A
git commit --amend --no-edit
или
git add -A
git commit --amend -m "commit_message"
а затем
git push origin master --force
- сила перепишет это обязательство, которое вы сбросили на первом шаге.
Не делайте этого, потому что вы собираетесь идти против всей идеи систем VCS и git в частности. Единственный хороший метод - создать новую и удалить ненужную ветку. См. git help branch
для информации.