0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Gitコミットの著者情報を修正する方法

Last updated at Posted at 2024-09-22

問題

プライベートリポジトリへのコミットで、誤って関係ない情報のGit設定で作業してしまい、著者情報が間違ってしまいましたので、修正の過程をまとめてた内容です。

commit abc123def456ghi789jkl101112mnop131415qr (HEAD -> main, origin/main)
Author: incorrect_user <incorrect_email@example.com>
Date: Mon Sep 22 11:03:45 2024 +0900
push 3
commit stu161718vwx192021yz222324abc252627de
Author: incorrect_user <incorrect_email@example.com>
Date: Mon Sep 22 10:56:36 2024 +0900
push 2
commit fgh282930ijk313233lmn343536opq373839rs
Author: user_id <private_email@example.com>
Date: Mon Sep 22 09:57:09 2024 +0900
Initial commit

注意:commitやユーザー情報はマスク済みです。

解決方法

1. 最新のコミットの修正

  1. 対話的なrebaseを開始:

    git rebase -i fgh282930ijk313233lmn343536opq373839rs
    
  2. エディタで最新のコミットをeditに変更:

    edit abc123d push 3
    pick stu1617 push 2
    
  3. 著者情報を修正:

    git commit --amend --author="user_id <hogehoge_email@example.com>" --no-edit
    
  4. rebaseを続行:

    git rebase --continue
    

2. 2番目のコミットの修正

  1. 再度対話的なrebaseを開始:

    git rebase -i fgh282930ijk313233lmn343536opq373839rs
    
  2. エディタで2番目のコミットをeditに変更:

    pick tuv4041 push 3
    edit stu1617 push 2
    
  3. 著者情報を修正:

    git commit --amend --author="user_id <hogehoge_email@example.com>" --no-edit
    
  4. rebaseを続行:

    git rebase --continue
    

3. 変更の確認

git rebase --continue

4. リモートリポジトリへの反映

git push --force origin main

結果

全てのコミットの著者情報が正しく修正されました。

commit tuv404142wxy434445zab464748cde495051fg (HEAD -> main)
Author: user_id <hogehoge_email@example.com>
Date: Mon Sep 22 11:03:45 2024 +0900
push 3
commit hij525354klm555657nop585960qrs616263tu
Author: user_id <hogehoge_email@example.com>
Date: Mon Sep 22 10:56:36 2024 +0900
push 2
commit fgh282930ijk313233lmn343536opq373839rs
Author: user_id <hogehoge_email@example.com>
Date: Mon Sep 22 09:57:09 2024 +0900
Initial commit

注意点

  • 強制プッシュ(git push --force)は他の人と共有しているリポジトリではやめましょう。
  • 重要なデータのバックアップを取ることをお勧めします。(一度ミスってコード消えたので焦りますした)
  • もし何か問題が発生した場合は、git reflogを使用して以前の状態に戻ることができます。

まとめ

今後同様の問題を防ぐために、.gitconfig.A.gitconfig.Bの設定を再確認し、必要に応じて調整しましょう。また、プロジェクトの.git/configファイルにuser.nameuser.emailが設定されていないことを確認しましょう。(今回はグローバルにuser情報を残したままにしていたのが原因でした)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?