Как вернуть первоначальный коммит в git'е?



я совершаю в репозиторий git в первый раз; затем я сожалею о фиксации и хочу вернуть ее. Я стараюсь



# git reset --hard HEAD~1


Я получаю это сообщение:



fatal: ambiguous argument 'HEAD~1': unknown revision or path not in the working tree.


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

435   7  
git

7 ответов:

вам просто нужно удалить ветку, на которой вы находитесь. Вы не можете использовать git branch -D так как это имеет проверку безопасности против этого. Вы можете использовать update-ref для этого.

git update-ref -d HEAD

Do не использовать 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

данное решение предполагает, что:

  1. у вас есть только один коммит на master филиала
  2. нет никакой ветви под названием old_master Так что я могу использовать это имя

он переименует существующую ветку в old_master и создать новую, сирым, филиал master(как это создано для новых репозиториев) после чего вы можете свободно удалить old_master... или нет. Вам решать.

Примечание: перемещение или копирование сохраняет свою ветку в Git reflog (см. код) при удалении, а затем создании новой ветви уничтожает его. Поскольку вы хотите вернуться в исходное состояние без истории, вы, вероятно, захотите удалить ветку, но другие могут захотеть рассмотреть эту небольшую заметку.

самый простой способ такой:

rm -fr .git

из каталога, где вы сделали git init.

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

вы не можете. Так:

rm -rf .git/
git init
git add -A
git commit -m 'Your new commit message'

сброс 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

    Ничего не найдено.