Відповіді:
Ви можете використовувати git revert <commit>…для всіх російських комісій, а потім натискати як завжди, зберігаючи історію незмінною.
Або ви можете "відкатати" за допомогою git reset --hard HEAD~n. Якщо ви надаєте доступ до загальнодоступного або спільного сховища, ви можете розходитись і порушувати інші роботи на основі вашої оригінальної гілки. Git заважатиме вам це робити, але ви можете використовувати git push -fдля примусового оновлення.
revertфункцій призведе до того, що ваші гілки функцій будуть розглядатися як "вже" об'єднані. Це тому , що ці галузі будуть фактично об'єднані. Але зміни були відмінені. Рішення: Виберіть вишню або скасуйте комісію повернення .
reset --hardтакож спричиняє, що гілки функцій трактуються як уже об'єднані? Моє припущення, це не було б (куди revertб).
elmarco вірно ... його пропозиція найкраща для спільних / публічних сховищ (або, принаймні, для публічних відділень). Якщо це не було поділено (або ви готові порушити інших), ви також можете надіслати певну інформацію:
git push origin old_master:master
Або, якщо є певна фіксація SHA1 (скажімо, 1e4f99e у скороченому вигляді), ви хочете повернутися до:
git push origin 1e4f99e:master
На щастя, я був у змозі використати рішення Пат Ноца, яке повністю усунуло небажані дії. Однак спочатку я отримав помилку
error: failed to push some refs to 'ssh://git@gitrepo.git'
To prevent you from losing history, non-fast-forward updates were rejected*
Але додавання параметра force ( -f) замінить цю помилку
git push -f origin 52e36b294e:master
Якщо у вас є прямий доступ до віддаленого репо, ви завжди можете використовувати:
git reset --soft <sha1>
Це працює, оскільки немає спроби змінити неіснуючий робочий каталог. Для отримання більш детальної інформації див. Оригінальну відповідь:
git reset --hard [sha1]де sha1 - ідентифікатор хеш-файлів.