Git でやってしまった!そんなときに変更を取り消す便利なツール “git-branchless”
はじめに
Git で誤って git reset
、 git rebase
をしてしまって冷や汗が出たことがある方は少なくないはずです。
僕も何度自分のローカルブランチでやってしまったことか。
焦りながらも git reflog
で最後の変更を見つけ出し、なんとかもとに戻せた!
という場合もあれば、
うまく戻せずに結局最初から開発やり直し...
となったこともあります。
git reflog
の操作が難しいですよね。
変更がもっとかんたんにもとに戻せたら、と常々思っていましたが、そんな問題にぴったりのツールを見つけました。
検証環境
git-branchless
見つけたのは arxanas/git-branchless というツールになります。
git-branchless はツールのセットになります。
コミット履歴を 視覚化 、 ナビゲーション 、 操作の支援 、 修復 するのを手助けしてくれます。
"Google" や "Facebook" といった大企業で利用されている branchless Mercurial worlflows と呼ばれる開発フロー(?)に基づいているそうです。
インストール
Rust がインストールされていることが前提となっているようです。
Rust をインストールすると、Rust のビルド、パッケージマネージャーである cargo
というコマンドが使えるうようになります。
cargo
コマンドを使って git-branchless
をインストールします。
パスを通しておきます。
git
のサブコマンドが利用できるようになっているか確認してみます。
利用できそうです。
修正機能
そんな中でも一番使いそうな便利な機能が 修正機能 です。
どんな機能か使いながら理解してみます。
作業用 Git ワークスペースを作成
検証のために作業用 Git ワークスペースを作成します。
ローカルの Git ワークスペースに git-branchless
の初期化設定を行う
Git ワークスペースに対して、 git branchless init
コマンドで初期化を行います。
これをして初めて git branchless
が使えるようになるようです。
作ったばかりのローカルリポジトリの場合は、「どのブランチをメインブランチにしますか?」と聞かれます。
今回は main
ブランチを指定しました。
コミットを重ねた後に取り消し( undo
)してみる
それではコミットを重ねた後に取り消しして見ます。
まずは適当なコミットを何度か行ってみます。
実はこの git commit --amend
、間違いだったことに気が付きました。
がときすでに遅し。
コミットがくっついてしまいましたとさ。。。
しかし落ち着きましょう。
こんなときには git undo
を実行します。
すると以下のような画面になります。
n / p キーを押すと、変更履歴が表示されますので、戻したい履歴が表示されたら ENTER キーを押します。
完全に最初のコミットまで戻すこともできますし、
2 つ目のコミットを残したままにすることもできます。(修正を微調整する場合はこちらですね。)
ひとこと
もう少し使ってみて、発見があればエントリを更新していきたいと思います。
ディスカッション
コメント一覧
まだ、コメントがありません