Подтвердить что ты не робот

Как я могу переустановить фиксацию, сделанную другим автором, не добавляя себя как коммиттер?

Обычно, когда вы переустанавливаете другой авторский код с помощью git, git добавляет заголовок Commit: с вашим именем и адресом электронной почты. У меня есть ситуация, когда я не хочу, чтобы это произошло. Я хочу, чтобы rebased commit закончил с тем же SHA1, каким он был бы, если бы оригинальный автор выполнил эквивалентную перезагрузку. Возможно ли это?

4b9b3361

Ответ 1

Все git commites имеют поле коммиттера внутри; вы можете увидеть это, набрав git cat-file commit HEAD сразу после совершения чего-либо. Таким образом, вы не можете его стереть; вы можете сделать его равным полю автора.

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

git filter-branch --commit-filter 'export GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"; export GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"; export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"; git commit-tree "[email protected]"' -- basecommit..HEAD

Это изменит коммиты после basecommit в истории HEAD (включая HEAD, не включая basecommit), делая поля коммиттера идентичными полям автора во всех отношениях. Если оригинальный автор соглашается сделать то же самое, тогда вы можете получить согласованный SHA1.

Ответ 2

Попробуйте установить переменную среды GIT_COMMITTER_NAME и GIT_COMMITTER_EMAIL при перезагрузке (возможно, также GIT_COMMITTER_DATE). (Это будет влиять на все фиксации, созданные сейчас.)