Slide 1

Slide 1 text

Chatwork株式会社 モバイルアプリケーション開発部 中山 龍 2023年10月13日 git worktreeを使って 複数ブランチを扱いやすくする

Slide 2

Slide 2 text

自分のローカルのブランチ状況

Slide 3

Slide 3 text

develop 僕がiOS版Chatworkを開発する際のローカルのブランチ状況 3 1 作業用 2 レビュー用 3 モブプロ用 4 最新の開発状況 動作確認で使用 チケット作業 で使用 手元でコードを 見たいときに使用 ※iOSチームでは週に1度モブプロ会をしている

Slide 4

Slide 4 text

develop 僕がiOS版Chatworkを開発する際のローカルのブランチ状況 4 1 作業用 2 レビュー用 3 モブプロ用 4 最新の開発状況 動作確認で使用 チケット作業 で使用 手元でコードを 見たいときに使用 複数ブランチを扱っている

Slide 5

Slide 5 text

● stashしてブランチを切り替える ● ブランチごとに新しくcloneする 複数ブランチを扱う場合 どうブランチを切り替えるか?

Slide 6

Slide 6 text

● stashしてブランチを切り替える ● ブランチごとに新しくcloneする 複数ブランチを扱う場合 どうブランチを切り替えるか? git worktree

Slide 7

Slide 7 text

git worktreeとは

Slide 8

Slide 8 text

git worktreeのイメージ 1つのリポジトリに対して ブランチごとに作業ディレクトリ を作成するイメージ 8 リポジトリ ブランチ1 のワークツリー ブランチ2 のワークツリー ブランチごとに ディレクトリ作成

Slide 9

Slide 9 text

git worktreeで実現できること 9 git stashをして切り替える必要がなくなる 複数ヶ所で同じブランチをいじってしまうのを防げる 各ブランチが独立したディレクトリ(ワークツリー)として存在する → ディレクトリを移動するだけでブランチが切り替わる clone場合、同じブランチから複数cloneできてしまい、複数のディレクトリから同じブラ ンチをいじってしまうことが発生する git worktreeなら同じブランチから複数のディレクトリを作成できない → 複数のディレクトリで同じブランチをいじってしまうのを防げる

Slide 10

Slide 10 text

git worktreeで実現できること 10 git stashをして切り替える必要がなくなる 複数ヶ所で同じブランチをいじってしまうのを防げる 各ブランチが独立したディレクトリ(ワークツリー)として存在する → ディレクトリを移動するだけでブランチが切り替わる clone場合、同じブランチから複数cloneできてしまい、複数のディレクトリから同じブラ ンチをいじってしまうことが発生する git worktreeなら同じブランチから複数のディレクトリを作成できない → 複数のディレクトリで同じブランチをいじってしまうのを防げる 複数ブランチを扱いやすい!

Slide 11

Slide 11 text

チケットをやる際のgit worktreeの使用例

Slide 12

Slide 12 text

0: 最初の状況 12 project hoge project hoge ディレクトリの状況 ● 『project』というディレクトリがある ○ developをcloneしたもの ● 『Ticket1』というチケットをやりたい ● ブランチ名は『branch-1』とする develop ブランチの状況 develop

Slide 13

Slide 13 text

1: ブランチを作成する 13 project hoge project hoge ディレクトリの状況 ● 任意の方法でブランチを作成する ○ 今回は『branch-1』という名前とする ○ この際にbranch-1には移動しない develop branch-1 ブランチの状況 develop

Slide 14

Slide 14 text

2: ワークツリーを作成する 14 project hoge project hoge branch-1 project hoge Ticket1 project hoge 実行前 実行後 hoge/project $ git worktree add ../Ticket1 branch-1 ● ワークツリーを作成するコマンドを実行する ○ 『Ticket1』というディレクトリが作成される develop develop branch-1

Slide 15

Slide 15 text

3: 作成したディレクトリを使用する 15 project hoge project hoge branch-1 project hoge Ticket1 project hoge 実行前 実行後 branch-1 develop develop ● 『Ticket1』ディレクトリを使用する ○ そうすることで、projectのブランチを切り替えずに、 『branch-1』を操作できる

Slide 16

Slide 16 text

用途に合わせてブランチごとにワークツリーを作成する ↓ ディレクトリを変えるだけでブランチを移動できる

Slide 17

Slide 17 text

まとめ

Slide 18

Slide 18 text

まとめ 18 git worktreeを使うと ディレクトリの移動でブランチを切り 替えることができる 他の方法との比較 ブランチ切り替えと比較 切り替え時にstashする必要が ない cloneとの比較 同じブランチから複数ディレクト リが作成されることを防ぐ

Slide 19

Slide 19 text

働くをもっと楽しく、創造的に