web-dev-qa-db-ja.com

別のユーザーとしてどのようにコードをコミットしますか?

スクリプトでこれを実行できるようにしたいです。基本的に、Gitの一部のコードのバージョン履歴全体を再作成しています。現在、異なるバージョン管理システムを使用しています。コミットの元の作成者(および日付)を保持しながら、Gitにコミットを追加できるスクリプトが必要です。

コミットの作成者と変更が行われた日時を知っていると仮定すると、これを行うことができるGitコマンドはありますか? git-p4は似たようなことをするので、私はそこにいると仮定しています。私はそれを行うための最良の方法を求めています。

104
Carl

--authorgit commitオプションを確認してください。

manページ から:

--author=<author>

コミットの作成者をオーバーライドします。標準のA U Thor <[email protected]>形式を使用して明示的な作成者を指定します。それ以外の場合、<author>はパターンと見なされ、その作成者による既存のコミットの検索に使用されます(つまり、rev-list --all -i --author=<author>)。コミットの作成者は、最初に見つかったコミットからコピーされます。

136
Tim Henigan

これに追加するだけです。受け入れられた回答で言及されている--authorオプションは、committerコミットの情報ではなく、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]>"

これにより、指定されたユーザーによってコミットされたandコミットのようになります。

92
friederbluemle