ローカルリポジトリ・リモートリポジトリを作って、一連の流れでファイルの管理は出来るようになりました。
SourceTreeというGUIを使っているので、黒い画面はほとんど触ることなく作業ができ便利なのですが、まだ使いこなせていないgit。
今回は、削除とか戻したい時とか、いろいろあるコマンドのことをまとめてみました。オモシロイヨ!git!!
通常の作業フローで起こり得る、『失敗したーッ!!』
- 1.git add|インデックス化ステージング
- 2.git commit|コミット
- 3.(更新管理リポジトリへ)git push|プッシュ
- 4.(本番環境で、更新管理リポジトリから)git pull|プル
上記で通常の作業は完了です。が、その作業中にミスなどが発生することがあります。
- ●ファイルをaddしないでcommitしちゃった
- ●commitのコメントを間違えちゃった
- ●commitを取り消したい
- ●pushしたけどcommit取り消したい
ピンチを救う、各種修正するコマンドたち
これらのミスを修正するコマンドがこちら。
- ●ファイルをaddしないでcommitしちゃった
- ・・・直前のcommitをやり直す|git commit --amend
- ●commitのコメントを間違えちゃった
- ・・・直前のcommitをやり直す|git commit --amend
- ●commitを取り消したい
- ・・・commitの取り消し(以前の状態に巻き戻し)|git reset
- ●pushしたけどcommit取り消したい
- ・・・commitを取り消す、commitをする|git revert
ここからは、SourceTreeの画面で使い方を解説します。
直前のコミットをやり直す・修正する|git commit --amand
上部メニューのコミットボタンをクリック(インデックスはしなくてOK)
直前のコミットを修正するので、ファイルはインデックス(add)しなくてOKです。
そのまま、上部のコミットボタンをクリック。
『最後のコミットを上書き(Amend)』にチェック
コミットするためのダイアログ画面が出ます。
左下にある『最後のコミットを上書き(Amend)』 のチェックボックスにチェックを入れると、
確認メッセージが出ますので『Yes』を選択。
コミットのコメントを入力して完了
チェックボックスにチェックが入っていることを確認し、新しいコメントを入力します。
最後に、右下の『コミット』ボタンをクリック。
するとメッセージが出ます。
リモートサーバーにpush済のコミットの修正は問題が発生するよっていう警告です。
push前ならOKですが、push後ならcommit --amendではなくrevertが良いです。その話はまた以下で。
今回はpush前なので『OK』押します。
コミットの取り消し(以前の状態に巻き戻し)|git reset
戻したいコミットの場所で右クリック!
- reset : 現在のブランチをこのコミットまでリセット
- revert : コミットを打ち消し・・・
今回は取り消したい・戻したい(リモートに未push)ので、『現在のブランチをこのコミットまでリセット』を選択します。
使うモード(どこまで戻すか)を選ぶ
resetにも『どこまでリセットするか』という種類があります。
- Soft :コミットを取り消し(作業ツリー・インデックスはそのまま)
- Mixed :コミット・インデックスを取り消し(作業ツリーはそのまま)
- Hard :コミット・インデックス・作業ツリーを取り消し
Hardを選べば、編集したファイルも編集前の状態に戻ります。ベンリ!!
今回はHardを選んで、『OK』をクリック。
(警告が出るけど)OK押せば完了!
『何が起こるかわかっていますね?』というドキドキする念の押され方をしますが(苦笑)、知っとるがなー!と『Yes』をクリックで完了です。
コミットを取り消すコミットを作成|git revert
取り消したいコミットの場所で右クリック!
- reset : 現在のブランチをこのコミットまでリセット
- revert : コミットを打ち消し・・・
今回は(例えばリモートにpushしてしまった後などで)コミットを消すことはできないので、対象のコミットを打ち消すというコミット=打ち消します。そこで『コミットを打ち消し』を選択します。
すぐに打ち消しコミットの確認画面が出ます。
打ち消すコミットを作成して良いか?という確認画面が出ます。
ここで『Yes』を選択すると、コミットがされて作業が終了します。
完了!revertコミットがされてます
コマンドの使うタイミングが分からなかったけど、図で分かった!
通常使うコマンドはイメージできたんだけど、この画像がすごく分かりやすくて、これを元に他のコマンドもまとめてみようと思ったのが最初です。この図、本当に素敵。
http://blog.osteele.com/posts/2008/05/my-git-workflow