タイムラインの整理
タスク
チャレンジ(Challenge)のリポジトリは ~/project/time-travel-git
に設定されています。次のコマンドを実行して、初期のコミット履歴を表示します。
cd ~/project/time-travel-git
git log --oneline
次の 4 つのコミットが表示されるはずです(コミットハッシュは異なります)。
886c6ad (HEAD -> master) Add project description
3a87b84 Add project codename
6b4cbb9 Fix typo in project name
0d71e5e Start secret project
あなたのミッションには、次のタスクが含まれます。
- 最も古い 2 つのコミット("Start secret project" と "Fix typo in project name")を、メッセージ "Initialize secret project" を持つ 1 つのコミットに結合します。
- "Add project codename" コミットを "Add project codename: Chronos" にリワード(reword)します。
- 最新のコミット("Add project description")はそのままにします。
要件
このミッションを成功させるには、次の要件を遵守してください。
- すべての操作は、
~/project/time-travel-git
ディレクトリで実行する必要があります。
git rebase -i
(インタラクティブ・リベース(interactive rebase)) コマンドを使用して、コミット履歴を整理する必要があります。
- 最終的な履歴には、元の 4 つではなく、正確に 3 つのコミットが含まれている必要があります。
- ファイルの内容は変更されないようにしてください。コミット履歴のみを変更します。
- チャレンジ(Challenge)が完了したら、
git log --oneline
を実行すると、正しいメッセージを持つ 3 つのコミットが表示されるはずです。
ヒント
チャレンジ(Challenge)を進めるための役立つヒントをいくつか紹介します。
-
インタラクティブ・リベース(interactive rebase)を使用すると、履歴内のコミットを操作できます。基本的なコマンド形式は次のとおりです。
git rebase -i <commit>
ここで <commit>
は、変更したい最初のコミットの前のコミットです。最初のコミットから変更するには、次を使用できます。
git rebase -i --root
-
インタラクティブ・リベース(interactive rebase)画面には、アクション付きのコミットのリストが表示されます。一般的なアクションは次のとおりです。
pick
- コミットをそのまま使用します
reword
または r
- コミットを使用しますが、そのメッセージを変更します
squash
または s
- このコミットを前のコミットと結合します
fixup
または f
- squash と同様ですが、このコミットのメッセージを破棄します
-
コミットを結合するには、2 番目のコミットで squash
または fixup
のいずれかを使用することをお勧めします。
-
コミットメッセージを変更するには、reword
アクションを使用します。
-
リベース(rebase)計画を設定したら、エディターを保存して閉じます。Git はプロセスの残りの部分をガイドし、コミットメッセージを編集するために必要に応じて新しいエディターウィンドウを開きます。
-
リベース(rebase)中に間違いを犯した場合は、いつでも次のようにして中止できます。
git rebase --abort
そして、やり直してください。
例
チャレンジ(Challenge)を完了すると、git log --oneline
は次のようになります(コミットハッシュは異なります)。
abc1234 Add project description
def5678 Add project codename: Chronos
ghi9101 Initialize secret project