プロジェクトの初期の段階で構造をガラッと代えたりして、ちょっと経ってから間違ってコミットしたくないファイルをコミットしちゃってた事に気づいたりして、このファイルコミットしてないことにしたい...とか結構やらかしてしまうタイプです。
不要なファイルの削除コミットをしても良いのですが、他に影響が出なそうならgit rebase
で履歴を改変してしまう方が、ミスってたのがバレにくいのでステキですw (チームプロジェクトの時はやりすぎると怒られるかも)
個人的にgit rebase
ちょっと苦手意識があったので、今回やらかしたのを機にメモ。
コミットの履歴をみる
$ git log --oneline
このコマンドで直近のコミットの履歴が表示されます。
例えば下のような感じのコミット履歴があるとします。
$ git log --oneline
17ff46a エラー時に猫を出力
da4da17 明石さんにお願い
a3ca288 秘書官をつつく
dbb8d7f 部屋全体の構造を変更
b4cf264 提督が鎮守府に着任しました
dbb8d7f 部屋全体の構造を変更
ここで、間違えて「neko.log
」が追加されてしまってたので取り消したいと思います。
編集する過去のコミットに移動する
今回はdbb8d7f
のコミットを編集したいので、git rebase -i
では1つ前のコミットb4cf264
を指定します。
$ git rebase -i b4cf264
コミットログが上から4番目なので、git rebase -i HEAD~4
のようにしてもOKです。
コマンドを入力するとエディタが起動します。
pick dbb8d7f 部屋全体の構造を変更 pick a3ca288 秘書官をつつく pick da4da17 明石さんにお願い pick 17ff46a エラー時に猫を出力 # Rebase b4cf264..17ff46a onto b4cf264 (4 command(s)) # # Commands: # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's log message # x, exec = run command (the rest of the line) using shell #
修正したいコミットがある pick dbb8d7f 部屋全体の構造を変更
の pick
を edit
に書き換えて保存します。
コミット内容を変更する
間違えて「neko.log
」が追加されてしまってたのを取り消したいので、neko.log
をステージングにaddしているのを取り消して、.gitginore
にneko.log
を追加して保存しました。
.gitginore
に変更があるので、これを追加します。
$ git rm neko.log
$ git add .gitginore
他にも変更がある場合は、ここでファイルを変更するなどしてgit add
します。
変更がたくさんある場合
変更するファイルが多い時はgit reset HEAD^
で一度も戻して、ファイルを変更してまとめてgit add .
するのが楽です。
$ git reset HEAD^
# ファイルを変更する
$ git add .
変更が完了したらコミットします。
$ git commit --amend
エディタが開くのでコミットメッセージを入力して保存。
修正が完了したので変更を反映して最新の位置まで戻る
$ git rebase --continue
rebase での修正をやめたい
git rebase -i
で修正中にワケガワカラナイヨになってしまって、やっぱ無し!となることもあります。
そんな場合は次のコマンドでrebaseでの修正をやめて最新のコミット位置に戻すことができます。
$ git rebase --abort
感想
コミットを変更するgit rebase
はなんとなく感覚を掴むことができましたが、今回はgit rebase --continue
途中で止まることが無かったのですが、止まったりした場合の対処や他にもgit rebase
で出来ることは、まだ色々とあるのでちょっとずつ覚えていきたいデス。(必要に迫られないと覚えられない)
[参考]
- あのコミットをなかった事に。git rebase -i の使い方 | karakaram-blog
- Gitでやらかした時に使える19個の奥義 - Qiita
- 初心者でもわかる!リベースの使い方を解説します | Git編:一歩踏み出すフロントエンド入門
- gitのコミットの歴史を改変する(git rebase) 1 / 2 · けんごのお屋敷
- 【git】git addを取り消す - tweeeetyのぶろぐ的めも

- 作者: Travis Swicegood,でびあんぐる
- 出版社/メーカー: オーム社
- 発売日: 2009/08/12
- メディア: 単行本(ソフトカバー)
- 購入: 25人 クリック: 305回
- この商品を含むブログ (102件) を見る