MicroGit
ファイルを保存するたびに、そのときの状態を自動で残しておく拡張機能です。 あとから、好きな時点の状態にボタン 1 つで戻せます。
VS Code と Cursor で使えます。
こんなときに
Ctrl + Z で少し前に戻して書き直したら、戻る前に書いていたコードが消えてしまった
- 「さっきの書き方のほうがよかったかも」と思っても、どこまで戻ればいいか分からない
- 試しに書き換えてみたいけれど、壊すのが怖い
MicroGit は、保存(Ctrl + S、Mac は Cmd + S)のたびに、その時点の状態を記録します。記録するのに、操作は何も要りません。
普段の Git とは別に残ります
Git を使っている人は、「保存のたびにコミットが増えたら困る」と思うかもしれません。MicroGit の記録は、普段の Git の履歴とは別の場所 に残ります。git log を見ても、MicroGit の記録は出てきません。普段のコミットは、これまでどおり自分のタイミングで行ってください。
MicroGit の記録は、作業フォルダの中の .microgit/ というフォルダに入ります。普段の Git に入れないように、.gitignore に .microgit/ を足しておくのがおすすめです。
始め方
- 拡張機能をインストールします
- Git で管理しているフォルダを開きます(まだなら、ターミナルで
git init して、最初のコミットをしておきます)
- 画面の下のステータスバーにある
MicroGit: OFF をクリックして、オンにします
- いつもどおりファイルを編集して、保存します。それだけで記録されます
オン・オフは、フォルダ(ワークスペース)ごとに覚えています。
過去に戻る
- 画面の左端に縦に並んだアイコンの中から、MicroGit のアイコン(時計)を開きます。または、コマンドパレット(
Ctrl + Shift + P、Mac は Cmd + Shift + P)で MicroGit: Open Control Panel を実行します
- 記録の一覧から、戻りたい時点を選びます
- 作業フォルダのファイルが、その時点の状態に戻ります
戻ったあとに編集して保存すると、そこから新しい枝として記録が続きます。戻る前の記録は消えません。 あとから、そちらにも戻れます。
記録の流れを図で見たいときは、パネルの「グラフを開く」か、コマンド MicroGit: Show Graph を使います。
知っておくと便利なこと
- ブランチごとに別々に記録します。 普段の Git でブランチを切り替えると、MicroGit の記録もそのブランチ用のものに切り替わります。ブランチ名の付いていない状態(detached HEAD)では記録しません
- 「コミットのあいだ」だけ見られます。 パネルの「メインコミット区間」で、普段の Git のコミット A と B のあいだに残った記録だけに絞れます
- ほかのパソコンと共有できます(慣れてきた人向け)。送る側で
MicroGit: Publish Micro History、受け取る側で git pull のあとに MicroGit: Fetch Micro History を実行します。両方のパソコンに MicroGit が入っている必要があります
速さについて
保存してから記録が終わるまでは、多くのパソコンで 0.01 秒以下です。記録は裏で行うので、保存のあとに待たされることはありません。
速さのために、パソコンの種類によっては、拡張機能に入っている小さな Linux を裏で動かします。追加でインストールするものはありません。使えないパソコンでは、自動でもう 1 つのやり方に切り替わります。
どんな仕組みで速くしているかは、MicroGit の仕組み にまとめています。
困ったとき
| こんなとき |
すること |
| 記録されない |
ステータスバーが MicroGit: ON になっているか、Git のブランチの上にいるかを確かめます |
| どちらのやり方で動いているか知りたい |
コマンド MicroGit: Overlay Status を実行します。先頭が active=kernel なら小さな Linux を使うやり方、active=nodejs ならもう 1 つのやり方です |
| 小さな Linux を使いたくない |
設定 microgit.overlayBackend を nodejs にします |
ご注意
MicroGit は、研究・開発の段階の試作品です。大事なプロジェクトで使うときは、先に普段どおり Git でコミットしておいてください。
同梱している他のソフトウェアとそのライセンスは、THIRD_PARTY_NOTICES.md にあります。