Якщо припустити, що ваша філія називається master
і тут, і віддалено, і що ви називається ваш віддалений, origin
ви могли б зробити:
git reset --hard <commit-hash>
git push -f origin master
Однак вам слід уникати цього, якщо хтось інший працює з вашим віддаленим сховищем і вніс зміни. У такому випадку було б краще повернути зобов’язання, які ви не хочете, а потім натисніть як звичайно.
Оновлення. Ви нижче пояснили, що інші люди застосували зміни, які ви натиснули, тому краще створити нову комісію, яка скасовує всі ці зміни . У вашій відповіді Якуба Нарбського є приємне пояснення ваших варіантів цього зробити . Який із них найзручніший, залежить від того, скільки комісій ви хочете відновити, і який метод має для вас найбільш сенс
Оскільки з вашого запитання видно, що ви вже використовували git reset --hard
для скидання своєї master
філії, можливо, вам доведеться почати, git reset --hard ORIG_HEAD
щоб перенести свою гілку назад, куди вона була раніше. (Як завжди git reset --hard
, переконайтеся, що git status
це чисто, що ви знаходитесь на правій гілці, і що ви знаєте, git reflog
як інструмент для відновлення, очевидно, втрачених зобов'язань.) Ви також повинні перевірити, що ORIG_HEAD
вказує на правильну фіксацію, с git show ORIG_HEAD
.
Вирішення проблем:
Якщо ви отримаєте повідомлення типу " ! [Віддалений відхилений] a60f7d85 -> master (попередній прийом гачок відхилений) "
тоді ви повинні дозволити переписання історії філій для конкретної гілки. Наприклад, у BitBucket сказано, що "Перезапис історії гілок заборонено". Існує прапорець під назвою, Allow rewriting branch history
який потрібно перевірити.
origin/master
не потягнули та не підштовхнули інші користувачі? Зміна історії публічного (тобто нелокального) сховища - це те, чого ви хочете уникати у будь-який час.