「git」におけるコミット作者変更の代替方法 (日本語)
「git」におけるコミット作者の変更方法 (日本語)
gitでは、コミット作者を単一のコミットに対して変更することが可能です。以下に、その方法を解説します。
git rebaseを使用する
git rebase
コマンドは、コミットの順番を変更したり、コミットを編集したりすることができます。- 以下のように、コミットを1つずつインタラクティブに編集するモードで
git rebase
を実行します。
git rebase -i HEAD~3
- このコマンドは、直近の3つのコミットをインタラクティブに編集するためのモードに入ります。
- エディタが起動したら、変更したいコミットの行の前に
edit
と入力します。 - エディタを保存して終了すると、指定したコミットを編集することができます。
- 編集モードで、コミットメッセージや作者情報を変更し、保存します。
git filter-branchを使用する
git filter-branch
コマンドは、複数のコミットに対して一括で変更を行うことができます。- 以下のように、コミット作者を変更するフィルタを指定して
git filter-branch
を実行します。
git filter-branch --env-filter 'if [ "$GIT_COMMITTER_NAME" = "Old Author" ]; then export GIT_COMMITTER_NAME="New Author"; export GIT_COMMITTER_EMAIL="[email protected]"; fi' --tag-name-filter 'sed -e s/Old Author/New Author/' HEAD
- このコマンドは、
Old Author
という名前のコミット作者をNew Author
に変更し、メールアドレスも更新します。 - また、タグ名も更新します。
注意:
git rebase
とgit filter-branch
は、リポジトリの履歴を変更する強力なコマンドです。- これらのコマンドを使用する前に、必ずバックアップを作成してください。
- 他の開発者と共有しているリポジトリでは、これらのコマンドを使用する前に、他の開発者と調整してください。
git rebase -i HEAD~3
git filter-branch --env-filter 'if [ "$GIT_COMMITTER_NAME" = "Old Author" ]; then export GIT_COMMITTER_NAME="New Author"; export GIT_COMMITTER_EMAIL="[email protected]"; fi' --tag-name-filter 'sed -e s/Old Author/New Author/' HEAD
git commit --amendを使用する
- 直近のコミットを修正する際に、コミット作者を変更することができます。
- 以下のように、
git commit --amend
コマンドを実行します。
git commit --amend --author="New Author <[email protected]>"
- このコマンドは、直近のコミットを編集モードで開き、コミットメッセージや作者情報を変更することができます。
git filter-branchの--commit-filterオプションを使用する
git filter-branch
コマンドの--commit-filter
オプションを使用して、コミットメッセージや作者情報を変更することができます。
git filter-branch --commit-filter 'if [ "$GIT_COMMITTER_NAME" = "Old Author" ]; then export GIT_COMMITTER_NAME="New Author"; export GIT_COMMITTER_EMAIL="[email protected]"; fi' HEAD
git git-commit