9章コミットの書き換え
コミットは作業の履歴を記録したものであり、コードに加えた変更を神聖不可侵な存在として残し続ける。しかし、Gitはリポジトリにまとめられたコミット履歴を変更、改良するためのツールとコマンドも複数提供している。
1つのコミットを書き換えたり、コミットシーケンス全体を作り直したりする理由として正当なものはたくさんある。一部の例を挙げてみよう。
- レガシーとして手を出せないものになる前に問題を修復したい。
- 大規模で雑多な内容が含まれる1つの変更をテーマを持つ複数の小さなコミットに分割したい。逆に、細々とした小さな変更を結合して1つの大きなコミットにまとめたい。
- プロジェクトの開発ライフサイクル全体を通じて、レビューによる問題点の指摘や提案を組み込みたい。
- ビルド要件が変わらない範囲でコミットの順序を並べ替えたい。
- コミットをより論理的な順序に並べ替えたい。
- 間違ってコミットされたデバッグコードを取り除きたい。
- 間違ってコミットされたコード内の機密データを取り除きたい†1。
[†1] リモートリポジトリにコミットをプッシュしていなければ、その機密データはあなたのローカルリポジトリにあるだけだ。それでも、コミットを書き換え、参照されないコミットをローカルリポジトリから取り除くことはできる。
リポジトリの共有方法を説明する「11章 リモートリポジトリ」を読めばわかるように、リポジトリを公開する前にコミットを書き換える理由はほかにもたくさんある。
この章では、コミット履歴を書き換える根拠、書き換えの波及効果、コミット履歴に含まれる1個または一連のコミットを書き換えるためにGitが提供しているさまざまな方法を説明する。
Gitにコミットしたものは、Gitに留まり続ける(それがコミット履歴である)ことを忘れてはならない。コミットに対する小さな変更によってリポジトリ履歴全体の書き換えを余儀なくされるようなことがないように、コード内の機密データに関連した変更をどのように追跡し、バージョン管理するかについては細心の注意が必要とされる。 ... |
Get 実用 Git 第3版 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.