Зміна історії
Якщо це остання фіксація, ви можете просто зробити це:
git commit --amend
Це відкриває редактору останнє повідомлення про фіксацію і дозволяє вам редагувати повідомлення. (Ви можете використовувати, -m
якщо хочете стерти старе повідомлення та скористатися новим.)
Натискання
А потім, коли ви натискаєте, зробіть це:
git push --force-with-lease <repository> <branch>
Або ви можете використовувати "+":
git push <repository> +<branch>
Або ви можете використовувати --force
:
git push --force <repository> <branch>
Будьте обережні, використовуючи ці команди.
Якщо хтось інший підштовхнув зміни до тієї ж гілки, ви, ймовірно, хочете уникнути знищення цих змін. Цей --force-with-lease
варіант є найбезпечнішим, оскільки він перерве, якщо будуть якісь зміни вгору (
Якщо чітко не вказати гілку, Git буде використовувати налаштування push за замовчуванням. Якщо налаштування натискання за замовчуванням "відповідає", ви можете знищити зміни на декількох гілках одночасно.
Потягнення / витягнення після цього
Кожен, хто вже звернувся, отримає повідомлення про помилку, і їм потрібно буде оновити (припустимо, що вони самі не вносять жодних змін), зробивши щось подібне:
git fetch origin
git reset --hard origin/master # Loses local commits
Будьте обережні при використанні reset --hard
. Якщо у вас зміниться галузь, ці зміни будуть знищені.
Примітка про зміну історії
Знищені дані - це лише старе повідомлення про фіксацію, але --force
цього не знають, і вони також щасливо видалять інші дані. Тож подумайте --force
як "я хочу знищити дані, і я точно знаю, які дані знищуються". Але коли знищені дані здійснені, ви можете часто відновити старі комісії з рефлогу - дані насправді є сиротами, а не знищеними (хоча осиротілі комісії періодично видаляються).
Якщо ви не думаєте, що ви знищуєте дані, тоді тримайтеся подалі від --force
... поганих речей можуть статися .
Ось чому --force-with-lease
дещо безпечніше.