LoginSignup
1
0

More than 3 years have passed since last update.

【2021年4月版】Git で Stash、その前に !?

Last updated at Posted at 2021-04-08

Git で Stash よく使うなら

自分の作業ブランチに他のバグ対応を取り込みたい、けど、絶賛作業中でコミットできない。。。
そんなときは git stash ご活用かと思います。特に VS Code では UI から Stash の追加と pop が目視で確認しながら行えるので比較的安全に作業を退避して、ブランチ切り替えて、マージして、ブランチ戻して、stashも戻して、などごちゃごちゃやりつつ、commit の綱渡りをしておられるかと思います。

小さな修正ならいいかもしれませんが、そこそこのボリュームのマージして動作確認した後で自分の stash もマージしてさらに調整しないと・・・という作業では commit ミスが起きやすく、作業中にブランチを行ったり来たり、もしくはマージ用の一時ブランチ作ってそっちで集中的にマージと動作確認、さらにバグが見つかって破綻、などの歴史を繰り返しているかと思います。

そう、ブランチの切り替え作業はけっこうリスクを伴う作業もあるので、できれば並行して作業を進めたい…
そんなある日、以下の記事を目にしました。

Git worktree を使え!

Git worktree でコードを自由にいじろう ということですが、git worktree コマンドってなんだ?ということで公式のヘルプを見てみると・・・

Manage multiple working trees ってことで、複数のワーキングツリーを管理するコマンドだそうです。・・・っていうかワーキングツリー、複数にできたんだ・・・?

ワーキングツリーとはローカルの作業フォルダのことですが、1つのリポジトリから個別にCloneしてくればもちろん複数になりますがそれぞれ別のリポジトリとなってしまうので、ファイルの比較とか取るのは面倒だったりしました。
それが一つのリポジトリに対してちゃんと複数のワーキングツリーとして管理できると、複数ブランチを別のワーキングツリーとして並列に管理でき、diff を取ったりmergeしたりが現在の作業ファイルをそのまま維持してできるので飛躍的に安全に作業できるのです。

git worktreeコマンドはVS Code の UIではサポートされていないので以下のようなコマンドを打ちます。

$ git worktree add パス ブランチ名

で、ローカルからワークツリーを削除するには

$ git worktree remove パス

でOKです。

ただしVS Code のコード管理機能ではメインのワーキングツリーしか認識してくれないのでそちらの操作はコマンドベースになります。まぁ、メインのワークツリーのコミットに邪魔されないので十分かと思います。
まぁVS CodeのUIでサポートされればより使いやすくなると思いますが、git worktree アリ! というお話でした。

git worktree の詳しい使い方については、以下の優秀な記事をご覧いただきたいです。

以上です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0