スクリプトでこれを実行できるようにしたいと思います。私は基本的にGitの一部のコードのバージョン履歴全体を再作成しています-現在、別のバージョン管理システムを使用しています。コミットの元の作成者(および日付)を保持しながら、Gitへのコミットを追加できるスクリプトが必要です。
コミットの作成者と変更が行われた日時がわかっているとすれば、これを可能にするGitコマンドはありますか?git-p4が同じようなことをするので、私はそこにあると思います。私はそれを行うための最良の方法を求めています。
スクリプトでこれを実行できるようにしたいと思います。私は基本的にGitの一部のコードのバージョン履歴全体を再作成しています-現在、別のバージョン管理システムを使用しています。コミットの元の作成者(および日付)を保持しながら、Gitへのコミットを追加できるスクリプトが必要です。
コミットの作成者と変更が行われた日時がわかっているとすれば、これを可能にするGitコマンドはありますか?git-p4が同じようなことをするので、私はそこにあると思います。私はそれを行うための最良の方法を求めています。
回答:
次の--author
オプションを確認してくださいgit commit
。
manページから:
--author=<author>
コミット作者を上書きします。標準
A U Thor <author@example.com>
形式を使用して明示的な作成者を指定します。それ以外の場合<author>
はパターンと見なされ、その作成者(つまりrev-list --all -i --author=<author>
)による既存のコミットの検索に使用されます。コミットの作成者は、最初に見つかったそのようなコミットからコピーされます。
--date
日付を上書きするオプション。
git commit -a --author="$user_details" --date="submit_date $submit_time" --file=/tmp/commit_msg
これに追加するだけです:--author
承認された回答で言及されているオプションは、作成者のみをオーバーライドし、コミットのコミッター情報はオーバーライドしません。
これはほとんどの場合正しい動作ですが、何らかの理由でコミッター情報も手動でオーバーライドする必要がある場合は、GIT_COMMITTER_NAME
およびGIT_COMMITTER_EMAIL
環境変数を使用します(a GIT_COMMITTER_DATE
もあります)。Git-Internals-Environment-Variablesを参照してください
$ GIT_COMMITTER_NAME="New Name" GIT_COMMITTER_EMAIL="name@email.com" git commit --author="New Name <name@email.com>"
これにより、指定されたユーザーによって作成およびコミットされたように見えます。
git log --pretty=fuller
〜/ .gitconfigファイルを編集し、デフォルト以外のユーザーとメールをカスタマイズできる新しいエイリアスを追加します。
[user]
name = My Name
email = default@email.com
[alias]
commit-x = -c user.name='My X Name' -c user.email='mr_x@email.com' commit
commit-y = -c user.name='My Y Name' -c user.email='mr_y@email.com' commit
commit-z = -c user.name='My Z Name' -c user.email='mr_z@email.com' commit
試して
git commit -m "Custom message with committer and author My Name <default@email.com>"
git commit-x -m "Custom message with committer and author My X Name <mr_x@email.com>"
git commit-y -m "Custom message with committer and author My Y Name <mr_y@email.com>"
git commit-z -m "Custom message with committer and author My Z Name <mr_z@email.com>"