【git】うっかりauthorを間違ってもcommitし直せるんです
投稿日: 2023/05/12
git
こんにちは、今回はgitのコミット履歴変更について、初心者の方でも分かるように解説します。gitのコミット履歴を変更することで、過去のコミットに誤りがあった場合に修正することができます。また、author(コミット者)を変更することで、誤って間違ったアカウントでコミットしてしまった場合にも対応することができます。本記事を読んで、gitのコミット履歴変更について理解しましょう。
gitのコミット履歴変更とは
gitのコミット履歴変更とは、過去のコミットを修正することです。例えば、誤ったファイルをコミットしてしまった場合、不要なファイルをコミットしてしまった場合など、コミット履歴を修正することができます。また、author(コミット者)を変更することもできます。これは、誤って間違ったアカウントでコミットしてしまった場合に役立ちます。
変更前に知っておきたいこと
authorとcommiterの違い
gitにはauthor(コミット者)とcommiter(コミットを実行した人)が存在します。authorは、コードを書いた人であり、commiterは、実際にコミットを実行した人です。つまり、authorとcommiterが同一人物であるとは限りません。gitのコミット履歴を変更する場合、どちらを変更するかによって結果が異なるため、注意が必要です。
間違ったコミットをしても大丈夫な理由
gitでは、コミット履歴を変更することができますが、そのためには強制的にコミット履歴を上書きする必要があります。つまり、コミット履歴を変更すると、過去のコミット履歴が消えてしまいます。ただし、これはローカルリポジトリでの操作であり、リモートリポジトリには変更履歴が残ります。そのため、間違った操作をしてしまった場合でも、リモートリポジトリに変更を反映する前に修正すれば、問題ありません。
直前のコミットを修正する方法(amend)
直前のコミットを修正する方法として、amendコマンドを使用します。以下の手順で修正を行います。
1. 修正したいファイルを編集する
2. コミットする前に、修正したいファイルをステージングエリアに追加する
$ git add <修正したいファイル>
3. 直前のコミットを修正する
$ git commit --amend
4. テキストエディタが開き、変更履歴を編集できるので、必要に応じて編集する
5. テキストエディタを閉じると、コミットが修正されます
この方法では、直前のコミットを修正することができますが、それ以前のコミットについては修正できません。それを行いたい場合は、別の方法を使用する必要があります。
過去のコミットを修正する方法
コミット履歴を変更する方法としては、以下の方法があります。
1. filter-branchコマンドを使用して、コミット履歴を修正する
$ git filter-branch --commit-filter 'if [ "$GIT_AUTHOR_EMAIL" = "<誤ったアカウントのメールアドレス>" ];
then export GIT_AUTHOR_EMAIL="<正しいアカウントのメールアドレス>" && export GIT_COMMITTER_EMAIL="<正しいアカウントのメールアドレス>"; fi && git commit-tree "$@"'
$ git filter-branch -f --env-filter "GIT_AUTHOR_NAME='<正しいアカウント名>'; GIT_AUTHOR_EMAIL='<正しいアカウントのメールアドレス>'; GIT_COMMITTER_NAME='<正しいアカウント名>'; GIT_COMMITTER_EMAIL='<正しいアカウントのメールアドレス>';" HEAD
2. filter-branchコマンドを実行すると、コミット履歴が修正されます
この方法では、過去の全てのコミット履歴を修正することができますが、リモートリポジトリに既にプッシュしている場合、リモートリポジトリにも修正内容が反映されるため、注意が必要です。
まとめと注意点
以上、gitのコミット履歴を変更する方法について紹介しました。
リモートリポジトリに既にプッシュしている場合、修正内容が反映されるため、注意が必要です。また、コミット履歴を修正する場合は、他の人と共同開発している場合は、事前に相談することが望ましいです。