Skip to main content

Изменение сообщения о фиксации

Если сообщение о фиксации содержит нечеткую, неправильную или конфиденциальную информацию, вы можете изменить ее локально и отправить новую фиксацию с новым сообщением в GitHub Enterprise Cloud. Вы также можете изменить сообщение о фиксации, чтобы добавить недостающие сведения.

Изменение последнего сообщения о фиксации

Последнее сообщение о фиксации можно изменить с помощью команды git commit --amend.

В GIT текст сообщения о фиксации является частью фиксации. Изменение сообщения фиксации изменит ИД фиксации , т. е. контрольную сумму SHA1, которая называет фиксацию. Фактически создается новая фиксация вместо старой.

Фиксация не отправлена на сайт

Если фиксация существует только в локальном репозитории и не была отправлена в GitHub.com, можно изменить сообщение фиксации git commit --amend с помощью команды.

  1. В командной строке перейдите к репозиторию, содержащему фиксацию, которую нужно изменить.
  2. Введите git commit --amend и нажмите клавишу ВВОД.
  3. В текстовом редакторе измените сообщение о фиксации и сохраните фиксацию.

Новая фиксация и сообщение будут отображаться на GitHub.com при следующем отправке.

Tip

Вы можете изменить текстовый редактор по умолчанию для GIT с помощью параметра core.editor. Дополнительные сведения см . в разделе "Базовая конфигурация клиента" в руководстве по Git.

Изменение более старых или нескольких сообщений о фиксациях

Если вы уже перенаправили фиксацию в GitHub.com, вам придется принудительная отправка фиксацию с измененным сообщением.

Warning

Мы настоятельно не рекомендуем выполнять принудительную отправку, так как это изменяет журнал репозитория. При принудительной отправке пользователям, которые уже клонировали репозиторий, придется вручную исправить свой локальный журнал. Дополнительные сведения см. в разделе "Восстановление из вышестоящей повторной базы " в руководстве по Git.

Изменение сообщения для последней отправленной фиксации

  1. Выполните описанные выше действия, чтобы изменить сообщение о фиксации.

  2. Используйте команду push --force-with-lease, чтобы принудительно отправить фиксацию вместо старой.

    git push --force-with-lease origin EXAMPLE-BRANCH
    

Изменение сообщения для старой фиксации или нескольких фиксаций

Если необходимо изменить сообщение для нескольких фиксаций или более старой фиксации, можно использовать интерактивное перемещение изменения из одной ветви в другую, а затем выполнить принудительную отправку, чтобы изменить журнал фиксаций.

  1. В командной строке перейдите к репозиторию, содержащему фиксацию, которую нужно изменить.

  2. Используйте команду git rebase -i HEAD~n, чтобы отобразить список n последних фиксаций в текстовом редакторе по умолчанию.

    # Displays a list of the last 3 commits on the current branch
    $ git rebase -i HEAD~3
    

    Список будет выглядеть примерно так:

    pick e499d89 Delete CNAME
    pick 0c39034 Better README
    pick f7fde4a Change the commit message but push the same commit.
    
    # Rebase 9fdb3bd..f7fde4a onto 9fdb3bd
    #
    # Commands:
    # p, pick = use commit
    # r, reword = use commit, but edit the commit message
    # e, edit = use commit, but stop for amending
    # s, squash = use commit, but meld into previous commit
    # f, fixup = like "squash", but discard this commit's log message
    # x, exec = run command (the rest of the line) using shell
    #
    # These lines can be re-ordered; they are executed from top to bottom.
    #
    # If you remove a line here THAT COMMIT WILL BE LOST.
    #
    # However, if you remove everything, the rebase will be aborted.
    #
    # Note that empty commits are commented out
    
  3. Замените pick на reword перед каждым сообщением о фиксации, которое нужно изменить.

    pick e499d89 Delete CNAME
    reword 0c39034 Better README
    reword f7fde4a Change the commit message but push the same commit.
    
  4. Сохраните и закройте файл со списком фиксаций.

  5. В каждом полученном файле фиксации введите новое сообщение о фиксации, сохраните файл и закройте его.

  6. Когда вы будете готовы отправить изменения в GitHub, используйте команду push --force, чтобы принудительно отправить старую фиксацию.

    git push --force origin EXAMPLE-BRANCH
    

Дополнительные сведения об интерактивной повторной базе см . в интерактивном режиме в руководстве по Git.

Note

Как и ранее, изменение сообщения о фиксации приведет к созданию новой фиксации с новым идентификатором. Однако в этом случае каждая фиксация, которая следует за измененной фиксацией, также получит новый идентификатор, так как каждая фиксация также содержит идентификатор родительского элемента.

Warning

Если в сообщение о фиксации включены конфиденциальные сведения, при принудительной отправке измененной фиксации исходная фиксация может остаться на GitHub Enterprise Cloud. Старая фиксация не будет включаться в последующие клоны; однако она по-прежнему может быть кэширована на GitHub Enterprise Cloud и доступна по идентификатору фиксации. Чтобы удалить старую фиксацию из удаленного репозитория, необходимо обратиться в и сообщить ее идентификатор.

Дополнительные материалы