Git・GitHubで後からCommitコメントを変更、補足する

Git
この記事は約5分で読めます。
記事内に広告が含まれています。

今回はコミットメッセージの次の内容を書いていきます。

  • Push前にコミットメッセージ修正
  • Push後にコミットメッセージ修正(歴史改変)
  • GitHubでコミットに対してのコメント補足

1つ目、2つ目はGitの世界で、よく見かける内容ですが、一応書きます。
3つ目は、GitHubならではっていう内容です。

★最初にコミットメッセージに関して寄り道します(おさらい)。

コミットメッセージは、変更内容を明確に伝えるためのものです。以下のポイントを押さえて、効果的なコミットメッセージを作成しましょう:

  • 簡潔かつ具体的に。
  • GitHubの場合はIssue番号「#1」などを含めると、対象Issueにリンクが貼られます。
対象Issueにコミットハッシュと共にリンクが貼られます。

→ さらに自動的にIssueはCloseになります。

本題に入ります。

コミットメッセージを後から変更する方法(Git)

最初にGitの世界の場合です。

コミットメッセージを修正する(直近)

直近のコミットメッセージを修正する場合、--amendオプションを使用します。

git commit --amend

これにより、最新のコミットメッセージを編集できます。

ハッシュ値は変わります。
→ 変わるということだから、既にPush済の場合は強制Push(force)が必要になるため、お勧めしません。Push前に「っあ!」って気づいた際には十分に使えるテクニックです。

コミットメッセージを修正する(以前)

直近ではなく、過去のメッセージを修正する場合は、rebaseを利用します。
先ほどの場合と同様、既にPush済みであれば、強制Pushが必要になるため、お勧めはしません。

# 直近3個のログを対象
git rebase -i HEAD^^^

# 次のように表示されます。
pick 873b4d8 aaa
pick b97e403 aaaa
pick b6433d6 aaaaa

# コミットメッセージ変更対象をPickからrewordにします。
reword 873b4d8 aaa
reword b97e403 aaaa
pick b6433d6 aaaaa
→ コミットメッセージ変更が促されるため対応します。
 その後、必要に応じてrebase --continue

最後に、

git push -f

を実行すれば、リモートのリポジトリも変更されます。

※この手法は他のチームメンバーに迷惑をかける可能性があるため、使用する際は十分な注意と連絡が必要です。

GitHub上でコミットに対するコメントで補足する

Push済みリポジトリの歴史改変はしたくないですね(カオスな事態は避けたい)。

コミットメッセージを変更するのではなく、GitHub上でコメントを追加する方法もあります。この方法なら、履歴を改変することなく、必要な情報を補足できます。

コミットに対するコメントって?

GitHubでは、コミットに対してコメントが可能です。
(リポジトリ→Code→Commits→該当コミットをクリック)

この機能、通常は使うことは無いですね。
なぜなら、コメントを元にした議論となると、Pull Requestでやりとりするものだから。

コミットメッセージの変更は出来ない・・・。
けど、情報を残しておきたい!ってときには使えます。

GitHub上の履歴上にはコメントマークが付きます。

Issue番号を含めれば、Issueに対してのリンクも設定されます!
→ 辿れるっていいことだと思います。

この機能はGitHubの世界に通用します。
→ 残念ながら、git logでは取得出来ません。よって後述するAPIでの取得と組み合わせる必要があります。

REST-APIを使ってコメントを取得する

GitHubのREST-APIを使用して、コミットに対するコメントを取得することもできます。

REST API endpoints for commit comments - GitHub Docs
Use the REST API to interact with commit comments.
# curlを使った実行例
curl -L \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer <YOUR-TOKEN>" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  https://api.github.com/repos/OWNER/REPO/comments

→ JSON形式で返ってきます。

  • コミットハッシュ値も一緒に取得できるため、後から照合も可能です。
  • APIを活用することで、コメントを効率的に管理し、他のツールと連携させることができます。

まとめ

後からコミットメッセージを修正する方法について書きました。
ただし、Gitでコミットメッセージの修正は、既にPush済みの場合は、非常に難しいと考えます。強制Pushは通常、禁止操作だと考えるからです。

GitHubでは後から該当のコミットに対してコメントを補足できます。
その際に、Issue番号を含めれば、Issueに対するリンクも貼れるため、後からでも関連付けを維持したい場合にはとっておきの方法だと考えます。

最後までお付き合いいただき、ありがとうございました!

コメント

Top
タイトルとURLをコピーしました