#git #egit #git-amend
#git #egit #git-изменить
Вопрос:
У меня есть следующий журнал Git.:
Я использовал функцию EGit «Изменить предыдущую фиксацию», чтобы изменить сообщение о фиксации на фиксацию с сообщением «Удалить неиспользуемую функцию addSubinterval раньше», которое я уже отправил на сервер Git для «Удаления неиспользуемой функции addSubinterval».
После этого я понял, что у меня есть код обратно в моем файле, который я удалил и отправил на сервер. Это был коммит с сообщением: «Удалить неиспользуемую функцию setDocumentTextAndInfoColor()». Я не знаю, вернулся ли только контент из этого коммита.
Я проверил фиксацию с сообщением: «Удалите «nextrefid» и «nextrefid_nr» для продолжения …». Этот коммит не восстановлен в моем локальном файле.
Это желаемое поведение для «Изменить предыдущую фиксацию»?
Я думаю, это ошибка, но, может быть, я что-то пропустил?
Ответ №1:
Изменение заменяет ваш последний локальный коммит измененным. Но в вашем случае вы уже отправили исходный коммит на свой сервер. В этом случае EGit даже предупреждает вас:
Я подозреваю, что то, что вы сделали позже, было «Вытащить». Это объединяет удаленную ветку origin/master
с вашей локальной веткой master
. В вашем случае это означает, что исходная фиксация была объединена обратно в вашу локальную ветку, поэтому вы все еще видите ее в истории.
Если вы действительно хотите удалить исходный коммит с сервера, вам придется использовать то, что называется «принудительным нажатием». Он вызывается так, потому что то, что вы эффективно делаете, — это перезапись / удаление данных на сервере. Если у других людей уже есть исходный коммит (они были извлечены после того, как вы нажали), вам также нужно будет согласовать с этими людьми, чтобы они также могли удалить коммит из своего локального репозитория.
По этим причинам не рекомендуется вносить изменения в коммиты после их отправки (за исключением специальных рабочих процессов, таких как Gerrit, или если вы знаете, что делаете).