Вопрос: Как удалить фиксацию на GitHub?


Я «случайно» нажал на GitHub.

Можно ли удалить эту фиксацию?

Я хочу вернуть репозиторий GitHub, как это было до этого коммита.


1383


источник


Ответы:


Заметка: см. альтернативу git rebase -iв комментариях ниже -

git reset --soft HEAD^

Сначала удалите фиксацию в локальном репозитории. Вы можете сделать это, используя git rebase -i, Например, если это ваша последняя фиксация, вы можете сделать git rebase -i HEAD~2и удалите вторую строку в появившемся окне редактора.

Затем принудительно нажмите на GitHub, используя git push origin +branchName

Видеть Git Magic Глава 5: Уроки истории - и затем некоторые для получения дополнительной информации (т. е. если вы хотите удалить старые коммиты).

О, и если ваше рабочее дерево грязно, вы должны сделать git stashсначала, а затем git stash applyпосле.


1003



git push -f origin HEAD^:master

Это должно «отменить» толчок.


844



Для простого возврата, если это просто ошибка (возможно, вы разветвили репо, а затем перешли к оригиналу, а не к новой), вот еще одна возможность:

git reset --hard 71c27777543ccfcb0376dcdd8f6777df055ef479

Очевидно, поменяйте этот номер на число фиксации, на которую вы хотите вернуться.

Все с тех пор будет удалено, как только вы снова нажмете. Для этого следующим шагом будет:

git push --force

286



  1. git logдля выяснения комманды, которую вы хотите вернуть

  2. git push origin +7f6d03:masterв то время как 7f6d03 является фиксацией перед ошибочным нажатием фиксации. +для force push

Вот и все.

Вот является очень хорошим руководством, которое решает вашу проблему, легко и просто!


68



Вам нужно будет очистить свой кеш, чтобы полностью стереть его. эта страница справки из git поможет вам. (это помогло мне) http://help.github.com/remove-sensitive-data/


34



Если вы хотите сохранить изменения фиксации после удаления:

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


1 - Скопируйте ссылку фиксации, которую вы хотели бы вернуться из журнала:

git log

2 - Сброс git в ссылку фиксации:

 git reset <commit_ref>

3 - Скрыть / сохранить локальные изменения от неправильной фиксации, чтобы использовать ее после нажатия на пульте дистанционного управления:

 git stash

4 - Нажмите изменения в удаленном репозитории, (-f или --force):

git push -f

5 - вернуть сохраненные изменения в локальный репозиторий:

git stash apply

7 - Если у вас есть исправленные / новые файлы в изменениях, вы должны добавить их в git до совершения:

git add .

6 - Добавьте все необходимые изменения, затем скопируйте необходимые файлы (или используйте точку «.» Вместо указания имени каждого файла, чтобы зафиксировать все файлы в локальном репозитории:

git commit -m "<new_commit_message>" <file1> <file2> ...

или

git commit -m "<new_commit_message>" .

28



Use git revert for reverting your push.

git-revert - Revert some existing commits

git revert [--edit | --no-edit] [-n] [-m parent-number] [-s] <commit>...
git revert --continue
git revert --quit
git revert --abort

Revert the changes that the related patches introduce, and record some new commits that record them. This requires your working tree to be clean (no modifications from the HEAD commit).


24



1. git reset HEAD^ --hard
2. git push origin -f

This work for me.


18



To delete the commit from the remote repository:

 git push -f origin last_known_good_commit:branch_name

In order delete the commit from your local repository:

git reset --hard HEAD~1

link


12



Find the ref spec of the commit you want to be the head of your branch on Github and use the following command:

git push origin +[ref]:[branchName]

In your case, if you just want to go back one commit, find the beginning of the ref for that commit, say for example it is 7f6d03, and the name of the branch you want to change, say for example it is master, and do the following:

git push origin +7f6d03:master

The plus character is interpreted as --force, which will be necessary since you are rewriting history.

Note that any time you --force a commit you could potentially rewrite other peoples' history who merge your branch. However, if you catch the problem quickly (before anyone else merges your branch), you won't have any issues.


9



You need to know your commit hash from the commit you want to revert to. You can get it from a GitHub URL like: https://github.com/your-organization/your-project/commits/master

Let's say the hash from the commit (where you want to go back to) is "99fb454" (long version "99fb45413eb9ca4b3063e07b40402b136a8cf264"), then all you have to do is:

git reset --hard 99fb45413eb9ca4b3063e07b40402b136a8cf264
git push --force

8



Delete the most recent commit, keeping the work you've done:

git reset --soft HEAD~1

Delete the most recent commit, destroying the work you've done:

git reset --hard HEAD~1

8