Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Build@Mercari Week 1 Git + Development flow
Search
mercari
PRO
June 19, 2020
Programming
0
4k
Build@Mercari Week 1 Git + Development flow
Week 1 slides of our Build@Mercari (Software Engineering training program)
mercari
PRO
June 19, 2020
Tweet
Share
More Decks by mercari
See All by mercari
[DevDojo] Experiments at Mercari - 2025
mercari
PRO
0
37
[DevDojo] Experiments and feature flags - 2025
mercari
PRO
0
30
[DevDojo] Problem Solving - 2024
mercari
PRO
1
480
[DevDojo] Ship Code Faster - 2024
mercari
PRO
1
290
[DevDojo] Mercari Design Doc - 2024
mercari
PRO
0
390
[DevDojo] Mercari Quality Assurance - 2024
mercari
PRO
1
310
[DevDojo] Merpay Quality Assurance - 2024 (日本語)
mercari
PRO
1
330
[DevDojo] Merpay Quality Assurance - 2024
mercari
PRO
1
200
[DevDojo] Basic Machine Learning - 2024
mercari
PRO
1
440
Other Decks in Programming
See All in Programming
AWS発のAIエディタKiroを使ってみた
iriikeita
1
190
請來的 AI Agent 同事們在寫程式時,怎麼用 pytest 去除各種幻想與盲點
keitheis
0
130
MCPでVibe Working。そして、結局はContext Eng(略)/ Working with Vibe on MCP And Context Eng
rkaga
5
2.3k
時間軸から考えるTerraformを使う理由と留意点
fufuhu
16
4.8k
2025 年のコーディングエージェントの現在地とエンジニアの仕事の変化について
azukiazusa1
24
12k
奥深くて厄介な「改行」と仲良くなる20分
oguemon
1
570
testingを眺める
matumoto
1
140
旅行プランAIエージェント開発の裏側
ippo012
2
930
AIでLINEスタンプを作ってみた
eycjur
1
230
はじめてのMaterial3 Expressive
ym223
2
900
Flutter with Dart MCP: All You Need - 박제창 2025 I/O Extended Busan
itsmedreamwalker
0
150
RDoc meets YARD
okuramasafumi
4
170
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.4k
Large-scale JavaScript Application Architecture
addyosmani
513
110k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.9k
Agile that works and the tools we love
rasmusluckow
330
21k
Documentation Writing (for coders)
carmenintech
74
5k
Six Lessons from altMBA
skipperchong
28
4k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
A better future with KSS
kneath
239
17k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.1k
Code Reviewing Like a Champion
maltzj
525
40k
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/