Если мы уже отправили свои изменения в удаленный репозиторий, то должны обратить внимание на то, что нельзя изменять историю коммитов используя такие команды, как rebase, reset, amend
и т.д. Наши коллеги, возможно, уже стянули эти изменения, поэтому, это приведет к конфликтам слияния, если мы изменим историю git. В таких случаях есть несколько более безопасных команд для их отмены.
Например: выполнив git log
мы можем увидеть, что уже синхронизированы с удаленным репозиторием через git push
.
* 4411a19 - (HEAD -> master, origin/master) add fix (4 minutes ago) <Oleksii Myzgin>
Если такая ситуация возникает и мы хотим отменить, например, последний наш коммит add fix
, то должны обратить внимание на то, чтобы не применять команды git, которые фактически меняют идентификаторы коммитов, такие как git reset
или git amend
и т. д.
Мы можем отменить коммит безопасным способом, использовав команду git revert
. Ему нужно указать идентификатор коммита, который мы хотим вернуть.
git revert 4411a19
Нам сразу откроется режим редактирования и попросят указать сообщение коммита для этого изменения. Мы можем либо оставить так как есть, либо изменить.
Выполнив git log
снова, мы можем увидеть, что был создан новый коммит, который является полной противоположностью коммита который мы указали.
Так как мы создали новое сообщение коммита, мы можем сохранить его, отправив в удаленный репозиторий.