Мне интересно узнать, какой из двух пользователей внес изменения файла, когда github перечисляет оба. Однако запись git содержит только UserA.
Что означает UserA с UserB 13 дней назад в github?
Ответ 1
UserA - тот, кто действительно внес изменения. UserB - тот, кто внес эти изменения в эту ветку. Если UserA фиксирует свои изменения в ветке1, приходит UserB, совершает пару изменений в branch2, переставляет ветвь 1 с помощью ветки2. Теперь самая верхняя фиксация в ветке 1 покажет, что UserA совершил эти изменения с помощью UserB.
Изменить: Это происходит главным образом во время переустановки и сбора вишни, поскольку авторы и коммиттеры могут быть разными в этих процессах.
Ответ 2
Ответ@venkatKA точный и описательный, но я подумал, что добавлю несколько деталей.
git cat-file -p HEAD
может использоваться для печати информации о фиксации
tree d85ed3c3a055c95445898a5119ea0a532459fdsf
parent 0b6ed951b2c04b4134c91ffa053b4330edfdffc1
author AuthA <[email protected]> 1487356245 +0000
committer AutbB <[email protected]> 1487356245 +0000
Если вы хотите исправить исторические коммиттеры (например, если вы меняете свою личность), вы можете использовать:
git filter-branch -f --tree-filter "GIT_COMMITTER_NAME='New Author'; GIT_COMMITTER_EMAIL='New Author'"
Стандартные комментарии об ошибках, которые ломают историю и почему ревизионизм - плохая идея.
Ответ 3
Другой возможной причиной этого является использование переменных $GIT_AUTHOR_NAME
и $GIT_AUTHOR_EMAIL
env.
Когда эти переменные установлены, они переопределяют часть автора каждого последующего коммита независимо от того, какие значения конфигурации user.name
и user.email
установлены локально. В этом случае, когда вы нажимаете git cat-file -p HEAD
, автор показывает значение $GIT_AUTHOR_NAME
, а коммиттер показывает значение локальной конфигурации user.name
.
Поэтому вам нужно удалить строки, которые экспортируют эти переменные в .bashrc
или .zshrc
, или если вы хотите сохранить эти строки, но просто не хотите, чтобы это произошло, вставьте unset GIT_AUTHOR_NAME && unset GIT_AUTHOR_EMAIL
перед запуском git commit.