Skip to main content
Мы публикуем частые обновления нашей документации, и перевод этой страницы может все еще выполняться. Актуальные сведения см. в документации на английском языке.

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

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

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

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

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

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

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

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

Новая фиксация и сообщение появятся в экземпляр GitHub Enterprise Server при следующей отправке.

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

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

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

Мы настоятельно не рекомендуем выполнять принудительную отправку, так как это изменяет журнал репозитория. При принудительной отправке пользователям, которые уже клонировали репозиторий, придется вручную исправить свой локальный журнал. Дополнительные сведения см. в разделе Восстановление после вышестоящего перемещения изменения из одной ветви в другую в руководстве по 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.

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

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

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