Как вы выполняете код как другой пользователь?

Я хочу иметь возможность сделать это для script. Я по существу пересоздал всю историю версий некоторого кода в Git - в настоящее время он использует другую систему управления версиями. Мне нужно script, чтобы иметь возможность добавлять в commits к Git, сохраняя исходный автор (и дату).

Предполагая, что я знаю автора фиксации и дату/время изменения, была ли команда Git, которая позволяет мне это делать? Я предполагаю, что есть, потому что git -p4 делает что-то подобное. Я просто прошу лучшего способа сделать это.

Ответ 1

Проверьте --author параметр git commit:

На странице :

--author=<author>

Заменить автора фиксации. Укажите явного автора используя стандартный формат A U Thor <[email protected]>. В противном случае <author> считается образцом и используется для поиска существующего совершить этот автор (т.е. rev-list --all -i --author=<author>); автор фиксации затем копируется из первая такая фиксация найдена.

Ответ 2

Просто добавьте к этому: Опция --author, упомянутая в принятом ответе, только переопределит автора, а не коммиттерную информацию о фиксации.

В большинстве случаев это правильное поведение, но если по какой-то причине вам необходимо вручную переопределить информацию <коммандера , используйте переменные среды GIT_COMMITTER_NAME и GIT_COMMITTER_EMAIL (есть GIT_COMMITTER_DATE). См. Git-Internals-Environment-Variables

$ GIT_COMMITTER_NAME="New Name" GIT_COMMITTER_EMAIL="[email protected]" git commit --author="New Name <[email protected]>"

Это заставит коммит выглядеть так, как будто он был автором и, совершенным указанным пользователем.