$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Git・Git-Flowについて
Search
nerusan
June 01, 2022
Programming
0
1.1k
Git・Git-Flowについて
Git・Git-Flowについて簡単にスライドにまとめてみました。
nerusan
June 01, 2022
Tweet
Share
More Decks by nerusan
See All by nerusan
ペアプロという選択肢
nerusan_main
0
880
Other Decks in Programming
See All in Programming
AIコードレビューがチームの"文脈"を 読めるようになるまで
marutaku
0
350
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
120
UIデザインに役立つ 2025年の最新CSS / The Latest CSS for UI Design 2025
clockmaker
18
7.3k
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
140
TypeScript 5.9 で使えるようになった import defer でパフォーマンス最適化を実現する
bicstone
1
1.3k
Navigation 3: 적응형 UI를 위한 앱 탐색
fornewid
1
280
著者と進める!『AIと個人開発したくなったらまずCursorで要件定義だ!』
yasunacoffee
0
130
從冷知識到漏洞,你不懂的 Web,駭客懂 - Huli @ WebConf Taiwan 2025
aszx87410
2
1.9k
宅宅自以為的浪漫:跟 AI 一起為自己辦的研討會寫一個售票系統
eddie
0
500
Rediscover the Console - SymfonyCon Amsterdam 2025
chalasr
2
160
俺流レスポンシブコーディング 2025
tak_dcxi
14
8.5k
非同期処理の迷宮を抜ける: 初学者がつまづく構造的な原因
pd1xx
1
700
Featured
See All Featured
Embracing the Ebb and Flow
colly
88
4.9k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Code Reviewing Like a Champion
maltzj
527
40k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
GraphQLとの向き合い方2022年版
quramy
50
14k
Building an army of robots
kneath
306
46k
Rails Girls Zürich Keynote
gr2m
95
14k
Optimizing for Happiness
mojombo
379
70k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.2k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
Transcript
Git・Git-flowについて @nerusan 1
• 経歴 • 動画の会社でプレイヤー開発 • iOSプレイヤーSKD開発 • フロントエンド開発 • React、TypeScript
• 活動 • 勉強会 • スクラムの⼀部導⼊ • ドキュメント化推進 ⾃⼰紹介 2 @nerusan_main
⽬次 1. Git基礎 2. Gitflow 3. まとめ 3
⽬次 1. Git基礎 2. Gitflow 3. まとめ 4
• バージョニングで管理 • 卒業論⽂@WEPD卒業論⽂@WEPDTʜ • ⽇付で管理 • NBJO@UTNBJO@UTNBJO@UTʜ • 名前で管理
• NBJO@@⼭⽥太郎UT NBJO@@⽥中UT Git基礎︓Git導⼊前のファイル管理⽅法 5
• ファイル内ではコメントで対応 Git基礎︓Git導⼊前のファイル管理⽅法 6 /* 2022/4/21(⾦)⼭⽥太郎 追加 */ console.log(“追加”) /*
2022/4/21(⾦)⼭⽥太郎 追加 */ /* 2022/4/21(⾦)⼭⽥太郎 削除 */ /* 2022/4/21(⾦)⼭⽥太郎 削除 */ // console.log(“削除”) /* 2022/4/21(⾦)⼭⽥太郎 修正 */ // console.log(“削除”) console.log(“変更”) /* 2022/4/21(⾦)⼭⽥太郎 修正 */
• ファイルとコードが多すぎてよくわからなくなる • 新しいバージョン保存するたびに容量が 倍 倍になっていく • 誰が編集したの︖どこが修正されたの︖本当にあっている︖ • ⼈で数年かけたプロジェクトでは、ファイル数百・数千
すべて共有 • リファクタリングとしてディレクトリ・ファイル構成を変えるとさらにわけわからない ʜ Git基礎︓Git導⼊前のファイル管理⽅法の問題点 Gitで管理することで解決 7
⼀⾔でいうとバージョン管理システムの つ • ⼤まかに以下の問題を解決 • 誰がいつ修正したのかテキストレベルですぐわかる • 前リリースのソースコードにすぐ切り替えられる • 作業中でも他⼈のソースコードを⾃⾝の環境にすぐ切り替えられる
• 容量が⼩さいく、動作も軽量 • 別時間軸でも管理が可能 チームで並⾏開発が容易 Git基礎︓Gitとは︖ 8
各時間軸のことをブランチ、合体することをマージ 例)機能AとBを並⾏で開発するとする Git基礎︓処理の⼤まかな流れ mainブランチ 元バージョン Aブランチ Bブランチ Aʼブランチ 機能A追加 Bʼブランチ
機能B追加 Mainʼブランチ 機能AとB追加 ②機能追加 ①各作業者がブランチ を切る ③マージ 9
• 各ブランチでは、コミットを⾏える • コミットとは、コードの追加修正箇所をさらに細かくGitに登録すること Git基礎︓コミットとは︖ 1. パッケージ導⼊のためパッケージファイル更新 2. 機能Aのソースコードは不要になったので削除 3.
メールフォーマットを検証する関数追加 4. フォーマッターをかけた ・ ・ 適切にコミットして、レビューしやすくすることが⼤事 決して1ブランチ1コミットとはしないこと 10
• コミットを参照しやすくするために、わかりやすい名前を付けるもの • バージョン管理などに利⽤される Git基礎︓タグとは︖ 1. 機能A追加←(タグ: v1.0.0) 2. パッケージ導⼊のためパッケージファイル更新
3. 機能Aのソースコードは不要になったので削除 4. メールフォーマットを検証する関数追加 5. フォーマッターをかけた←(tag: v1.1.0) 11
• Git command(おすすめ度1 • CUIベースで、コマンド量が多く、細かい操作ができないこともある× • Tig(おすすめ度4 • CUIベースで素早くコマンド操作が可能◦ •
グラフィックが⾒やすい◦ • ⾃⾝でコマンドカスタマイズもできる◦ • VScode(おすすめ度3 • GUIベースでわかりやすい◦ • マウス操作がめんどくさい× • VScodeを利⽤していたら何もインストール不要◦ • Source Tree(おすすめ度2 • GUIベースでわかりやすい◦ • マウスがめんどくさい× • 別途インストールする必要がある× Git基礎︓Git操作する⽅法 $ git switch ‒c branchA $ git add . $ git commit ‒m “コード追加” 12
⽬次 1. Git基礎 2. Git-flow 3. まとめ 13
• ブランチを切って並⾏で開発はできるようになったけど、実際に開発運⽤って なると、どうやって進める︖ • ブランチ名は︖ • チーム開発において、バラバラにブランチ管理されたら、どれが最新のコードな のか、リリースブランチなのかがわからなくなる........ Git-flow︓Gitでチーム開発するときの問題 Git-flowでルールに則って開発することで解決
14
Git-flowはチーム開発するときのGit運⽤ ルール • Driessen⽒が考案した開発モデル • リンク: http://nvie.com/posts/a-successful-git- branching-model/ Git-flow︓Git-flowとは︖ 15
• main(master)ブランチ • 現在本番に適⽤されているソースコードのブランチ • developブランチ • 開発を⾏うためのブランチ • リリース前はこのブランチが最新バージョンとなる
• featureブランチ • 個々のタスク開発・修正を⾏うブランチ • 開発ブランチよりブランチを切る • releaseブランチ • リリースのため機能がすべて適⽤されたブランチ • ステージング環境に適⽤するブランチ • hotfixブランチ • 本番適⽤のブランチに緊急を要するバグ⾒つかった場合に対応するブランチ 16 Git-flow︓各ブランチについて
17 Git-flow︓処理の流れ main First commit Tag: 0.0.1 develop feature deveopブランチはmain
から切る
18 Git-flow︓処理の流れ main develop feature タスクができたら(MR)PR 各タスクはdevelopブランチから featureブランチ切って対応 マージリクエスト レビューを依頼すること
19 Git-flow︓処理の流れ main develop feature 承認されたらマージ developに機能が追加される
20 Git-flow︓処理の流れ develop feature/issue2 feature/issue1 タスクごとにfeatureブランチを 切り対応
21 Git-flow︓処理の流れ main release/0.1.0 develop 0.1.0リリースの タスクすべて完了 0.1.0リリースのリリースブランチを切る releaseブランチをSTG環境にデプロイ検証 STG動作確認で何かバグあれば、修正
STG(ステージング環境) ⼀般公開しないが、本番と同等の環 境であり、主に検証を⾏う環境
22 Git-flow︓処理の流れ main release/0.1.0 develop 動作確認完了でmainにマージ 本番デプロイ tag: 0.1.0 不具合修正コミットしたら
developへのマージも忘れずに
23 Git-flow︓リリースを切る理由 develop release/0.1.0 develop Feature/issue10 0.2.0の機能開発 リリースブランチで開発を⽌めることなく動作確認ができる 動作確認
24 Git-flow︓hotfixブランチについて main hotfix/0.1.1 develop パスワードなくても⾒れる!! 次のリリース待たずに今すぐに対応する必要がある
25 Git-flow︓hotfixブランチについて main hotfix/0.1.1 develop パスワードなくても⾒れる!! 不具合修正コミットしたら developへのマージも忘れずに 不具合を修正 Tag:0.1.1
⽬次 1. Git基礎 2. Gitflow 3. まとめ 26
• Gitは開発現場においては必須のスキルです︕ • 各現場に応じてよりよりGit管理の仕⽅をする必要がある • Gitコマンド他にも… • rebase • cherry-pick
• restore • reset • blame • stash • 機会があれば、またTigの使い⽅の資料を発表します 27 まとめ