Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Build@Mercari Week 1 Git + Development flow
Search
mercari
PRO
June 19, 2020
Programming
4.4k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Build@Mercari Week 1 Git + Development flow
Week 1 slides of our Build@Mercari (Software Engineering training program)
mercari
PRO
June 19, 2020
More Decks by mercari
See All by mercari
[DevDojo] Getting Started with BI: Looker Essentials - 2025
mercari
PRO
0
170
[DevDojo] Introduction to LLMs & AI Agents - 2025
mercari
PRO
0
330
[mercari GEARS 2025] Techniques for Reliable Code Generation Using AI Agents
mercari
PRO
0
320
[mercari GEARS 2025] Foundations of AI - The Invisible Forces Driving Product Innovation
mercari
PRO
0
320
[mercari GEARS 2025] Building Foundation for Mercari’s Global Expansion
mercari
PRO
1
520
[mercari GEARS 2025] The Past, Present, and Future of Anti-Phishing Measures at Mercari
mercari
PRO
0
180
[mercari GEARS 2025] Backend Standardization with MCP
mercari
PRO
0
250
[mercari GEARS 2025] Transforming customer engagement with Google Customer Engagement Suite
mercari
PRO
0
440
[mercari GEARS 2025] PJ Aurora’s Vision and Automated UI Quality Evaluation Agents
mercari
PRO
0
410
Other Decks in Programming
See All in Programming
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
190
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
4
2.7k
LL言語やWebフレームワークのPostgreSQL対応 〜DBの機能がユーザーに届くまで〜
kentaroutakeda
1
150
海上で動くGoサーバー: goroutineとchannelでさばく航行データストリーム
atsuki_seo
0
730
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
510
『寄り添うラジオ』をAIで作る 体験価値から逆算した、会話しないUXと品質設計
theoriatec2024
3
180
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
180
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
260
iOSDC Japan 2026 - Swiftで作って学ぼう!データベース自作入門
kaseken
2
170
[GoCon2026] When Goroutines Are Not Enough: Runtime Locality in High-Throughput Go
takehaya
6
2.3k
一人だけ、Kiroが静止する日
hideg
0
120
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
290
Featured
See All Featured
Designing Powerful Visuals for Engaging Learning
tmiket
1
570
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Color Theory Basics | Prateek | Gurzu
gurzu
1
470
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
550
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
550
Speed Design
sergeychernyshev
33
2.1k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Fireside Chat
paigeccino
43
4k
The Spectacular Lies of Maps
axbom
PRO
1
1k
30 Presentation Tips
portentint
PRO
1
400
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Transcript
1 Confidential - Do Not Share Build@Mercari Week 1 Git
+ Development flow Hunter Che
2 Confidential - Do Not Share Table of Contents •
Introduction • ターミナルの使い方 • Gitとは • Gitコマンド 基礎編 • Gitを用いた開発を始めてみよう! • Githubを用いた複数人開発の解説 • チーム開発 実践編 • 宿題の説明
3 Confidential - Do Not Share Introduction • Hideaki Touhara
• iOS Engineer • Hobbies: ◦ 二郎系、カレー屋めぐり ◦ スノボ ◦ 学生時代はARアプリとかVRゲームとか作って ました!
4 Confidential - Do Not Share コマンドって? • コンピュータに指示するための命令 •
ターミナルやコマンドプロンプトといったツールを用いて実行する • 別名: 「黒い画面」 • これ ->
5 Confidential - Do Not Share 何ができるの? • 今回の講座ではディレクトリ操作のためのコマンドのみ使用 •
でも、他にもコマンドの方が効率が良いことがたくさんある! • 自動化もしやすい!
6 Confidential - Do Not Share ファイル操作のための基本コマンド • ls •
pwd • cd • mkdir • touch
7 Confidential - Do Not Share ls • 現在いるディレクトリ内のファイル一覧を取得できる ◦
ls -a で隠しファイル含めて全表示
8 Confidential - Do Not Share pwd • 現在のディレクトリ位置を表示
9 Confidential - Do Not Share cd • ディレクトリ間を移動する ◦
cd ~でホームディレクトリに移動 ◦ cd .. で一個親の階層に上がる ◦ cd ディレクトリ名で特定の子の階層に移動 • ↑でExampleディレクトリに移動したいときは “cd Example”
10 Confidential - Do Not Share mkdir [ディレクトリ名] • ディレクトリを作成
11 Confidential - Do Not Share touch [ファイル名] • ファイルを作成
12 Confidential - Do Not Share Git
13 Confidential - Do Not Share Git以外でバージョン管理する • 例: Excel
「レポート_東原秀亮」 ↓ 「レポート_東原秀亮_20200403」 ↓ 「レポート_東原秀亮_20200501」
14 Confidential - Do Not Share Git以外でバージョン管理する • 例: Excel
↓ 「レポート_東原秀亮_最終版」 ↓ 「レポート_東原秀亮_最終版_修正版」
15 Confidential - Do Not Share Git以外でバージョン管理する • 例: Excel
↓ 「レポート_東原秀亮_最終版_20200520」 ↓ 「レポート_東原秀亮_最終版_latest」
16 Confidential - Do Not Share 最終版 _latest? ??
17 Confidential - Do Not Share Gitとは • バージョン管理システム ◦
履歴確認、バックアップ、複数人開発などに適している • 前に記録した部分からの差分を見て、また記録 -> サーバー側に保存 ◦ サーバーを提供してくれているのが Github • 昔の状態に戻す、参照するのが簡単 • 複数人で開発するときに、自分の変更差分が分かりやすい • -> 安全に開発できるので仕事での開発に向いている • -> ほとんどのIT企業で使われている!(はず)
18 Confidential - Do Not Share もうちょっと詳しく • プロジェクトのソースコードに今までの変更 履歴も含めたものをRepositoryといいま
す • やることは大きく分けて2つ ◦ 1. 自分の変更をサーバー上にあげる ◦ 2. 誰かがあげた更新を自分の手元に取り込む ◦ -> 1,2を必要に応じて使用することで複数人で開 発を進めることができる リモート Repository(Github上にある) ローカルRepository A ローカルRepository B リモートを更新 反映されたリモートを手元に取 り込む
19 Confidential - Do Not Share Gitコマンド • git init
• git status • git diff (--cached) • git add • git commit • git log • git remote add • git push
20 Confidential - Do Not Share git init • 現在いるディレクトリ以下をgitの管理下に置きます
• .gitという隠しディレクトリができる • これでローカルリポジトリを作成したことになります • -> 後述するgit cloneかこのコマンドでgit管理を始めます
21 Confidential - Do Not Share git status • 現在のどのファイルに変更が起きているかを知ることができます
• 変更差分がstagingにいるのか、working directory(後述)なのかなどもわかる
22 Confidential - Do Not Share git diff • git
diffだけだとworking directoryの差分が見れる • git diff --cachedとすると、stagingの差分が見れる • 赤の部分が削除、緑が追加を表します
23 Confidential - Do Not Share
24 Confidential - Do Not Share Staging? Working directory? •
変更したものは一旦 Working directory上に はいる • commitしたい変更だけ stagingに移動させる • その後commitすることで Local repositoryに記録さ れる • commitしたものしか remote側には反映されな い Local repository add commit push Staging/ index Working directory
25 Confidential - Do Not Share git add • 差分をstagingにあげるコマンドです
• “git add .”で変更した全ての差分をstagingにあげます • “git add ファイル名”で特定のファイルの変更部分だけstagingにあげます • “git add -p”でどれをあげるか選ぶことができます
26 Confidential - Do Not Share git commit • Stagingにあがっている変更をlocal
repositoryに記録します • git commit -m “メッセージ” ◦ ひとつひとつのコミットにはコメントをつけることができます ◦ 何をやったか具体的に書けるレベルで commitするのが良いです ◦ 悪い例: git commit -m “Implement funcA, funcB and funC” ◦ 良い例: git commit -m “Add text label to xxxView”
27 Confidential - Do Not Share git log • コミットの変更履歴を見ることができます
• commit 1823449e….となっているのが commit hashと呼ばれるものです • これを参照して、履歴を行き来することがで きます(git checkout [commit hash])
28 Confidential - Do Not Share git remote add •
pushする前にリモートRepositoryとローカルRepositoryが紐付いている必要が あります • git remote add [リモート名] [URL]でできます ◦ 例: git remote add origin https://github.com/HideakiTouhara/sample1.git
29 Confidential - Do Not Share git push • git
push [リモート名] [ブランチ名] • git push -u origin masterみたいに、-uをつけると、次からgit pushのみでい けるのでおすすめです!
30 Confidential - Do Not Share Gitを用いた開発を始めてみよう! • ローカルで自分の名前ディレクトリ(e.g. HideakiTouhara)とREADME.mdファイルを
作成 ◦ 自分のプロフィールを作成 • Github上に自分の名前のRepositoryを作成 ◦ https://github.com/mercari-build • 紐付け • push! • 確認できたらOK OSSのREADMEの例→
31 Confidential - Do Not Share 休憩 (10分)
32 Confidential - Do Not Share Githubを用いた複数人開発 • git init
or clone • git pull • git branch • git checkout • git commit ~ push • “Create a PR on Github” • “Review” • “Merge” • git pull
33 Confidential - Do Not Share 全体の流れ リモート Repository ①git
clone ③pushして、github上にPRを 作成 ②ブランチ切って、色々作業 ④他の人にReviewをもらって、 Merge ローカルRepository
34 Confidential - Do Not Share git clone • すでにgit管理されているプロジェクトを手元に持ってきたいときに使いま
す • 簡単に言うとプロジェクトのコピー • git clone [URL]
35 Confidential - Do Not Share ブランチとは? • 並列に作業できるようにするためのもの •
枝葉のように独立して履歴を記録することができる ブランチAでは機能1を開発して! ブランチBでは機能2を開発して! 最後に合わせる ことが可能!
36 Confidential - Do Not Share git branch • git
branch [ブランチ名] • git branchでブランチ一覧取得 • 例: `git branch HideakiTouhara/work1`
37 Confidential - Do Not Share git checkout • git
checkout [ブランチ名] • git checkout [commit hash] • 例: `git checkout HideakiTouhara/work1`
38 Confidential - Do Not Share メルカリのブランチマネジメント • 基本的にgit-flowに沿っている ◦
https://nvie.com/posts/a-successful-git-branching-model/ • プロジェクトごとに異なるので、初めて働くチー ムでは、オンボーディング資料などからどういう フローで開発しているのか確認しよう!
39 Confidential - Do Not Share Create a PR •
Github上で特定のbranchとの差分 を表示することができる • ここでCode reviewしてもらう
40 Confidential - Do Not Share Code review • 1.
コードが何をしているか把握する ◦ わからない部分はコメントして聞く • 2. 現状の実装方法に対して、なにか意見があればコメントする • 仕事でのコードレビューとしてはかなりアバウトですが、今回はCode reviewの質の話はスキップします • Reviewの一例 ◦ https://github.com/HideakiTouhara/Poi/pull/10
41 Confidential - Do Not Share Merge • 枝分かれしていたブランチを合体させるときなどに使う •
git merge [branchの名前] ◦ この場合は今いるブランチに [branchの名前]を取り込む形になります ブランチAでは機能1を開発して! ブランチBでは機能2を開発して! 最後に合わせる ことが可能!
42 Confidential - Do Not Share Conflictが起きた場合 • Merge時にはconflict(変更の衝突が 起きる可能性があります)
• 例えば、同じファイルの同じ行をAさん、 Bさんが別々のブランチで作業していた 場合、2人がmergeするときに起こりま す。 • それぞれのブランチの差分が表示され ます • この場合は<<<<や>>>>を手動で消す などする必要があります
43 Confidential - Do Not Share チーム開発 実践 • HackerRankの問題をみんなで完成させよう
◦ https://docs.google.com/document/d/1258tUQQWMLWeSDk5d9t_q2dSot8a_ IaqlY04LENMaI8/edit#heading=h.anu7stay1vi2 ルール • 1~3までの問題を修正 • 該当Repository cloneする • ブランチ作成後、チームメンバーの誰かのApproveを もらってからmasterにマージ
44 Confidential - Do Not Share チーム開発 実践2 • HackerRankの問題をみんなで完成させよう
◦ https://docs.google.com/document/d/1258tUQQWMLWeSDk5d9t_q2dSot8a_ IaqlY04LENMaI8/edit#heading=h.anu7stay1vi2 ルール • 4~6を自力で解く • 言語は問題ごとに違ってOK! • ブランチ作成後、チームメンバーの誰かのApproveを もらってからmasterにマージ
45 Confidential - Do Not Share 困ったときはこうしよう • git reset
• git revert
46 Confidential - Do Not Share 宿題の提出方法について • HomeWork RepositoryのそれぞれのWeekディレクトリー配下に自分の
名前ディレクトリーを作成 ◦ https://github.com/mercari-build/HomeWork • e.g Week0/HideakiTouhara/xxxx
47 Confidential - Do Not Share 宿題1 • git clone
• 自分の名前/func1という名前でブランチ作成&移動 • homework.txtを作成
48 Confidential - Do Not Share 宿題1 • 以下のようなコミットログになるようにしてください ◦
(3番目はgit revertを使ってください) • 自分の名前ディレクトリー以下で list1 homework.txt Add list 1 list1 list2 homework.txt Add list 2 list1 homework.txt func1 ・ファイル名 ・ファイル内容 ・コミットメッ セージ ・ブランチ名
49 Confidential - Do Not Share 宿題2 • 以下のようなコミットログになるようにしてください ◦
“自分の名前/func2” というブランチをmasterブランチから作成し、作業して ください • Week0/自分の名前ディレクトリー以下で list2 homework.txt Add list 2 自分の名前/func2 list2 homework.txt master masterに func2を merge ・ファイル名 ・ファイル内容 ・コミットメッ セージ ・ブランチ名
50 Confidential - Do Not Share 宿題2 • func2ブランチをmasterにマージ後、func1ブランチをmaster にマージし、以下の状態を作ってください。
◦ conflictが起きたらその対応もお願いします (不要な文字列を消すなど ) list2 homework.txt Add list 2 master list1 list2 homework.txt master Masterに func1を merge ・ファイル名 ・ファイル内容 ・コミットメッ セージ ・ブランチ名
51 Confidential - Do Not Share もっと練習したい人へ • http://k.swd.cc/learnGitBranching-ja/