17章ヒントとコツとテクニック

Gitはコマンドやオプションを豊富に揃えており、リポジトリに多様な形で強力な変更を加えられる力を持っている。しかし、特定のタスクを実行するための手順が少しつかみにくい場合がある。個々のコマンドやオプションの目的がはっきりせず、専門的な記述のなかで迷子になってしまうのだ。

この章では、Gitを面白いものに化けさせるヒント、コツ、テクニックを集めて紹介する。

17.1 作業ディレクトリがダーティな状態での対話的なリベース

ローカルブランチでコミットを繰り返して変更を重ねていると、一連のコミットのうちの早い段階のものに追加の変更を加えなければならないことに気づくことがよくある。そのことについてメモを書いてあとで処理するのではなく、その変更を直接新しいコミットにし、以前のコミットにスカッシュしなければならないことをコミットログに書いておくという方法もある。

しかし、ようやくコミットシーケンスをクリーンアップできる状態になってgit rebase -iをしようとすると、作業ディレクトリがダーティ状態になっている場合がある。それではリベース処理は拒否されてしまう。

$ git show-branch --more=10 
[main] Tinker bar
[main^] Squash into 'More foo and bar'
[main~2] Modify bar
[main~3] More foo and bar
[main~4] Initial foo and bar.

$ git rebase -i main~4 
error: cannot rebase: You have unstaged changes.
エラー: リベースできない: ステージングされていない変更がある ...

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.