Как вернуть первоначальный коммит в git'е?
я совершаю в репозиторий git в первый раз; затем я сожалею о фиксации и хочу вернуть ее. Я стараюсь
# git reset --hard HEAD~1
Я получаю это сообщение:
fatal: ambiguous argument 'HEAD~1': unknown revision or path not in the working tree.
эта фиксация является первой фиксацией репозитория. Есть идеи, как отменить начальную фиксацию git?
7 ответов:
вам просто нужно удалить ветку, на которой вы находитесь. Вы не можете использовать
git branch -Dтак как это имеет проверку безопасности против этого. Вы можете использоватьupdate-refдля этого.git update-ref -d HEADDo не использовать
rm -rf .gitили что-нибудь подобное, так как это полностью уничтожит весь ваш репозиторий, включая все другие ветви, а также ветку, которую вы пытаетесь сбросить.
вы можете удалить HEAD и восстановить свой репозиторий в новое состояние, где вы можете создать новую начальную фиксацию:
git update-ref -d HEADпосле создания новой фиксации, если вы уже нажали на remote, вам нужно будет заставить его удаленно перезаписать предыдущую начальную фиксацию:
git push --force origin
этот вопрос был связан с этот блог и было предложено альтернативное решение для более новых версий Git:
git branch -m master old_master git checkout --orphan master git branch -D old_masterданное решение предполагает, что:
- у вас есть только один коммит на
masterфилиала- нет никакой ветви под названием
old_masterТак что я могу использовать это имяон переименует существующую ветку в
old_masterи создать новую, сирым, филиалmaster(как это создано для новых репозиториев) после чего вы можете свободно удалитьold_master... или нет. Вам решать.Примечание: перемещение или копирование сохраняет свою ветку в Git reflog (см. код) при удалении, а затем создании новой ветви уничтожает его. Поскольку вы хотите вернуться в исходное состояние без истории, вы, вероятно, захотите удалить ветку, но другие могут захотеть рассмотреть эту небольшую заметку.
самый простой способ такой:
rm -fr .gitиз каталога, где вы сделали
git init.У вас нет ничего, что вы хотите сохранить, так что вы ничего не теряете. Однако это безопасно только в том случае, если у вас нет ничего другого в вашем репозитории вообще. При обстоятельствах, описанных в вопросе "совершить репозиторий в первый раз-потом пожалеть об этом", это безопасно. Очень часто, однако, это не безопасно.
сброс git --жесткий внесите изменения, затем сделайтеgit add -A git commit --amend --no-editили
git add -A git commit --amend -m "commit_message"а то
git push origin master --force--force перепишет тот коммит, который вы сбросили на первом шаге.
Не делайте этого, потому что вы собираетесь пойти против всей идеи систем VCS и git в частности. Единственный хороший способ-создать новую и удалить ненужную ветку. Смотрите
git help branchдля сведения.
все, что вам нужно сделать, это отменить совершал.
git revert {commit_id}'затем нажмите его
git push origin -f
Comments