Изменение истории
Если это самый последний коммит, вы можете просто сделать это:
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 по умолчанию. Если заданная по умолчанию настройка push - «match», вы можете уничтожить изменения в нескольких ветвях одновременно.
Вытащить / извлечь потом
Любой, кто уже вытащил, теперь получит сообщение об ошибке, и ему нужно будет обновить (при условии, что они не вносят никаких изменений самостоятельно), выполнив что-то вроде этого:
git fetch origin
git reset --hard origin/master # Loses local commits
Будьте осторожны при использовании reset --hard
. Если у вас есть изменения в ветке, эти изменения будут уничтожены.
Примечание об изменении истории
Уничтоженные данные - это просто старое сообщение о коммите, но они --force
этого не знают и с удовольствием удалят и другие данные. Поэтому подумайте: --force
«Я хочу уничтожить данные, и я точно знаю, какие данные уничтожаются». Но когда уничтоженные данные фиксируются, вы часто можете восстановить старые коммиты из журнала изменений - данные фактически осиротели, а не уничтожены (хотя осиротевшие коммиты периодически удаляются).
Если вы не думаете, что уничтожаете данные, тогда держитесь подальше от --force
... могут случиться плохие вещи .
Вот почему --force-with-lease
несколько безопаснее.