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
210
[DevDojo] Introduction to LLMs & AI Agents - 2025
mercari
PRO
0
370
[mercari GEARS 2025] Techniques for Reliable Code Generation Using AI Agents
mercari
PRO
0
340
[mercari GEARS 2025] Foundations of AI - The Invisible Forces Driving Product Innovation
mercari
PRO
0
350
[mercari GEARS 2025] Building Foundation for Mercari’s Global Expansion
mercari
PRO
1
540
[mercari GEARS 2025] The Past, Present, and Future of Anti-Phishing Measures at Mercari
mercari
PRO
0
190
[mercari GEARS 2025] Backend Standardization with MCP
mercari
PRO
0
270
[mercari GEARS 2025] Transforming customer engagement with Google Customer Engagement Suite
mercari
PRO
0
460
[mercari GEARS 2025] PJ Aurora’s Vision and Automated UI Quality Evaluation Agents
mercari
PRO
0
430
Other Decks in Programming
See All in Programming
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
160
dotNET_vulnclicker_intro.pdf
deka_morita
0
140
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
1k
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
500
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
2
630
sbt 2.0: takeoff
eed3si9n
0
160
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.7k
パスワード再設定メールのURLについて知っておこう
uyuki234
0
160
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
0
450
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
790
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
5.1k
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
780
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
Designing Experiences People Love
moore
143
24k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
20k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
480
Crafting Experiences
bethany
1
380
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.7k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Darren the Foodie - Storyboard
khoart
PRO
4
4k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
600
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
330
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/