Відповіді:
git reset --hard HEAD~1
git push -f <remote> <branch>
(Приклад натиснути: git push -f origin bugfix/bug123
)
Це скасує останню фіксацію та відсуне оновлену історію на віддалений. Вам потрібно пройти це, -f
оскільки ви замінюєте історію вище за течією на віддалений.
git log --decorate --oneline
щоб дізнатись, куди вказує ваша СЕКЦІЯ.
git reset HEAD~1
якщо ви не хочете, щоб ваші зміни пройшли (нестандартні зміни). Змініть, git push -f [origin] [branch]
Як правило, зробіть "обернену" команду, використовуючи:
git revert 364705c
потім надішліть його в пульт як зазвичай:
git push
Це не призведе до видалення комітету: воно робить додатковий фіксатор, який скасовує все, що було зроблено першим. Все інше, не дуже безпечне, особливо коли зміни вже розповсюджені.
git reset
приймається лише в тому випадку, якщо ви все ще не натиснули зміни на сервер.
Перш за все, розслабтесь.
"Нічого не під нашим контролем. Наш контроль є простою ілюзією", "Помилятися - це людина".
Я розумію, що ви ненавмисно підштовхнули свій код remote-master
. ЦЕ буде добре.
1. Спочатку отримайте SHA-1
значення комітету, який ви намагаєтеся повернути, наприклад, виконувати команду для управління гілкою. запустіть це:
git log
ви побачите купу 'f650a9e398ad9ca606b25513bd4af9fe ...', як рядки разом із кожним із комітетів. скопіюйте цей номер з комітету, який потрібно повернути назад .
2. Тепер введіть команду нижче:
git reset --hard your_that_copied_string_but_without_quote_mark
ви повинні побачити повідомлення типу "HEAD зараз у". вам зрозуміло. Що тільки що зробили - це відобразити цю зміну на місцях.
3. Тепер введіть команду нижче:
git push -f
ви повинні бачити, як
"попередження: push.default не встановлено; його неявне значення змінилось у ..... ... Всього 0 (дельта 0), повторно використане 0 (дельта 0) ... ... ваше_бран__назва -> головне (примусове оновлення) . "
Тепер вам все зрозуміло. Повторіть перевірку майстра з "git log", ваш fix_destination_commit має бути вгорі списку.
Вас вітають (заздалегідь;))
ОНОВЛЕННЯ:
Тепер змін, які ви внесли до того, як все це почалося, тепер уже немає. Якщо ви хочете повернути ці наполегливі дії знову, можливо. Завдяки git reflog та git cherry-pick командам .
Для цього я б запропонував, будь ласка, слідкуйте за цим блогом чи цим дописом .
Ви можете зробити інтерактивну базу даних:
git rebase -i <commit>
Це відкриє ваш редактор за замовчуванням. Просто видаліть рядок, що містить коміт, який ви хочете видалити, щоб видалити це зобов'язання.
Звичайно, вам знадобиться доступ до віддаленого сховища, щоб застосувати цю зміну і там.
Дивіться це запитання: Git: видалення вибраних комісій із сховища
Спробуйте використовувати
git reset --hard <commit id>
Зверніть увагу: тут ідентифікатор фіксації буде ідентифікатором комісії, на який ви хочете перейти, але не ідентифікатором, який ви хочете скинути. це був єдиний момент, де я також застряг.
потім натиснути
git push -f <remote> <branch>
git reset --hard <the-sha-you-want-to-return-to>
.