Случайно изпълних командата срещу грешен клон в моето хранилище - има ли начин да отменя тази промяна?
Има ли някакъв начин да се отменят ефектите от git revert head?
Отговори (4)
git revert
просто създава нов ангажимент -- можете да го "премахнете" с git reset --hard HEAD^
(все пак бъдете по-внимателни с него!)
git reset --hard HEAD^
, тъй като ще премахне всички незавършени промени.
- person Jeremen; 07.02.2016
git stash
преди git reset --hard HEAD^
, можете да запазите незавършените си промени. След git reset --hard HEAD^
направете git stash pop
, за да презаредите некоммитираните промени в текущия клон.
- person kukko; 28.11.2016
Командата git revert
просто създава ангажимент, който отменя друг. Трябва да можете да стартирате git revert HEAD
отново и той ще отмени предишното ви отмяна и ще добави друг ангажимент за това. Или можете да направите git reset --hard HEAD~
. Но внимавайте с последното, тъй като изтрива данни.
HEAD~
означава ангажиментът преди текущия HEAD
git reflog
(f.ex.). Той ще бъде събран за боклук след два месеца (конфигурация по подразбиране), но можете да изключите автоматичното събиране на боклука и след това всеки един ангажимент, който някога сте направили, ще съществува завинаги в това хранилище. Те просто не са достъпни чрез клонове. Но винаги можете да ги намерите с помощта на git fsck
и аз публикувах рецепта за разглеждане на всички ангажименти, които използват това.
- person Aristotle Pagaltzis; 08.09.2010
Какво ще кажете за връщане на връщането?
Вижте git log и вземете хеш маркера на лошото връщане:
git log -5
След това обърнете самото връщане:
git revert
Ако сте били достатъчно далновидни, за да направите това: revert --no-commit master
, можете да прекъснете това с: git revert --abort
според git status
съвета:
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
You are currently reverting commit dcc7c46.
(all conflicts fixed: run "git revert --continue")
(use "git revert --abort" to cancel the revert operation)