1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

git worktreeを使った平行開発 ~git stashに悩まされるのはもう嫌だ~

Last updated at Posted at 2025-10-28

はじめに

みなさんは開発時、複数のブランチをどのように扱っていますか? 多くの場合、git switchgit stashを駆使して切り替えているかと思います。

ただ、現在の作業を中断したくない時や、ブランチごとに環境を分けて動作確認したい時もあると思います。僕はgit worktreeという機能が、こうしたケースに使えるのではないかと考えました。

この記事では、git worktreeとシンボリックリンクを組み合わせて、この課題を解決した流れを共有したいと思います。

前提

弊社では、メンバー共通の開発環境用のサーバーを用意しており、メンバーそれぞれのディレクトリ(/home/user1/src/product_code)配下に環境を構築しています。
そして、ディレクトリ構造が開発環境の設定にそのまま影響している状態でした。
また、それぞれの開発環境は、サービスとして起動してあり、サービス設定ファイルもディレクトリ構造に強く依存している状態でした。
開発環境用の設定ファイルは、github管理しておらず、開発環境用のディレクトリ配下に設定ファイル群を設置していました。

実現する流れ

元々のディレクトリ名を変更する

mv ~/src/product_code ~/src/code_main

これによって、元々のディレクトリ名の空ディレクトリを作ることができ、そこにシンボリックリンクを貼ることができます。

元々のディレクトリ名の空ディレクトリを作成する

mkdir ~/src/product_code

元々のディレクトリ配下にシンボリックリンクを作成する

ln -sfn ~/src/code_main/* ~/src/product_code

これによって、設定ファイルに書いた開発環境構築用のパスを変更することなく、切り替えることができます。

他のブランチへの付け替え

git worktreeを使って、他のディレクトリに他ブランチのコードを作成する

git worktree add ../code_sub sub_branch

元々のディレクトリ名へのリンク元を付け替える

ln -sfn ~/src/code_sub/* ~/src/product_code

図にするとこんな感じ

Drawing 2025-10-24 20.37.31.excalidraw.png

最後に

git worktreesymlinkを掛け合わせて、いろいろ試してみましたが、やりたいことが実現できると嬉しいですね。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?