Как изменить автора коммита git
Перейти к содержимому

Как изменить автора коммита git

  • автор:

Как изменить автора коммита git

Запись: and-semakin/mytetra_data/master/base/15734842867a3am6pqez/text.html на raw.githubusercontent.com

Допустим, случайно закоммитили не неправильно настроенными именем и адресом электронной почты. Чтобы исправить можно сделать следующее:

git commit —amend —author=»John Doe «

  • Изменить удаленный репозиторий для подмодуля Git
  • Скачать данные (git pull) с перезаписью локального репозитория в Git
  • Meld — diff/merge GUI tool
  • tig — псевдографический Git-клиент
  • Исправить состояние «оторванной башни» (detached head) в Git
  • Склонировать репозиторий с подмодулями (рекурсивно) в Git
  • Сменить отслеживаемый источник для ветки в Git
  • Изменить URL удаленного репозитория в Git
  • Отладка .gitignore в Git
  • Добавить пустую папку в репозиторий Git, игнорировать содержимое
  • Скачать данные с перебазированием (pull with rebase) в Git
  • Добавить алиасы команд в Git
  • Скачать удаленную ветку в Git
  • Сравнить две ветки в Git
  • Отменить последний коммит в Git
  • Удалить ветку в Git
  • Спрятать (stash) изменения в рабочей директории в Git
  • Отменить (обратить) коммиты в Git
  • Переименовать ветку в Git
  • Добавить пустой коммит в Git
  • Скачать только одну ветку в Git
  • Сплющить несколько коммитов в один при слиянии веток в Git
  • Просмотреть изменения, касающиеся определенной строки/строк в Git
  • Перенести последний коммит(ы) в другую ветку в Git
  • Поставить метку (тег) в Git
  • Переместить метку (тег) на другой коммит в Git
  • Создать пустую ветку в Git
  • Настроить Git для работы с форком в GitHub
  • Закоммитить все изменения шелл-скриптом без учета кода выхода в Git
  • Скопировать файл с сохранением истории в Git
  • Хуки Git для установки зависимостей при смене ветки
  • Игнорировать файл локально в Git (без изменения .gitignore)
  • Использовать несколько GitHub аккаунтов на одной машине
  • Изменить автора предыдущего коммита в Git
  • Изменить автора на один коммит в Git
  • Сплющить (squash) коммиты в текущей ветке в Git
  • Узнать на какой коммит указывает тэг в Git
  • Показать список тэгов в Git
  • Удалить тэг на удаленном сервере в Git
  • Проверить, что ветки могут быть слиты без конфликтов в Git
  • Ошибка «Could not read from remote repository» в git
  • Получить только название текущей ветки в Git
  • Получить имя ветки, к которой принадлежит коммит в Git
  • Сменить SSH-ключи для определенного репозитория
  • Восстановить утраченный коммит в Git

Как поменять автора у коммита

Иногда требуется поменять автора у последнего коммита, сделать это очень просто, достаточно ввести команду:

git commit --amend --author="Your Name your@email.ru"Code language: Bash (bash)
git commit --amend --author="Denis Pershin "Code language: Bash (bash)

Автор

Denis Pershin

Добавить комментарий

Cancel reply

Читать далее

JDK MIssion Control на Mac

Отказываемся от Docker Desktop на Mac OS

Как посчитать размер массива в mongodb

Как изменить редактор для git по умолчанию

We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept All”, you consent to the use of ALL the cookies. However, you may visit «Cookie Settings» to provide a controlled consent.

Manage consent

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.

Always Enabled
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.

Cookie Duration Description
cookielawinfo-checkbox-analytics 11 months This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category «Analytics».
cookielawinfo-checkbox-functional 11 months The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category «Functional».
cookielawinfo-checkbox-necessary 11 months This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category «Necessary».
cookielawinfo-checkbox-others 11 months This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category «Other.
cookielawinfo-checkbox-performance 11 months This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category «Performance».
viewed_cookie_policy 11 months The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.

Functional

Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.

Performance

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.

Advertisement

Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.

Other uncategorized cookies are those that are being analyzed and have not been classified into a category as yet.

Как изменить автора коммита git

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

Исправить можно, но такие изменения ломают всю историю коммитов и желательно это всё проделывать до отправки набора изменений на другой git-сервер. Итак, последовательность действий.

Сначала в локальном (или глобальном) репозитории выставляем имя пользователя и емейл.

Сначала делаем git rebase -i , в редакторе помечаем нужный для изменения коммит как edit , закрываем редактор.

Делаем git commit —amend —reset-author , затем git rebase —continue . И так повторяем, пока не кончатся коммиты для редактирования.

Чтобы изменить самый первый коммит, используем команду git rebase -i —root

Комментарии

Гость: SAD | 2018-02-28 в 18:20

А как же блин автора то в итоге менять. ((((((((((((

Поменять у автора и коммитера емейл и имя во всех коммитах

Я обнаружил, что в моём репозитории некоторые коммиты были сделаны под пользователем root. Можно ли как-то исправить имя автора и емейл во всех «неправильных» коммитах?

Отслеживать
задан 25 дек 2017 в 16:00
28.6k 19 19 золотых знаков 58 58 серебряных знаков 136 136 бронзовых знаков
ассоциация: stackoverflow.com/q/750172/5752652
25 дек 2017 в 16:01

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Чтобы изменить автора (или коммитера) вам понадобится переписать всю историю репозитория, начиная с первого коммита этого автора.

Если вы согласны с этим (во многих командах избегают переписывания истории), то вы можете поправить историю при помощи git filter-branch.

Страницы описания включают несколько примеров с которых вы можете начать.

Конкретно, вы можете поправить неправильные имена авторов и их емейлы для всех веток и всех тегов при помощи данной команды (источник: GitHub help):

#!/bin/sh git filter-branch --env-filter ' OLD_EMAIL /cdn-cgi/l/email-protection" data-cfemail="ed9482989fc0828189c088808c8481ad88958c809d8188c38e8280">[email protected]" CORRECT_NAME="Your Correct Name" CORRECT_EMAIL /cdn-cgi/l/email-protection" data-cfemail="d3aabca6a1feb0bca1a1b6b0a7feb6beb2babf93b6abb2bea3bfb6fdb0bcbe">[email protected]" if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ] then export GIT_COMMITTER_NAME="$CORRECT_NAME" export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL" fi if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ] then export GIT_AUTHOR_NAME="$CORRECT_NAME" export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL" fi ' --tag-name-filter cat -- --branches --tags 

Обратите внимание: хотя скрипт написан на sh, но его можно выполнить и под windows в случае если у вас установлен git. Для этого сначала в папке репозитория выберите git bash here , а потом запустите скрипт командой sh .

Также если вам необходимо полностью удалить старые данные, то вы можете воспользоваться информацией из этого вопроса: Как реально удалить в git формально удаленные данные?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *