yahoo! japan meetup #21~gitを使ったチーム開発体験@名古屋~

127
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. Yahoo JAPAN MEET UP ~Gitを使ったチーム開発体験@名古屋~

Upload: yahoo-japan-

Post on 16-Mar-2018

624 views

Category:

Technology


6 download

TRANSCRIPT

Page 1: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

Yahoo JAPAN MEET UP

~Gitを使ったチーム開発体験@名古屋~

Page 2: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

第1部

Gitの概要/準備

2

Page 3: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

こういう経験していませんか?

3

よーし、先週開発してたアプリの続きをやるぞ〜

・・・

あれ?このコードってなんで追加したんだっけ?

Page 4: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

こういう経験していませんか?

4

ありがとう!じゃこのファイルをコピペして・・・

わ!自分が作ってた部分が上書きされちゃった!

ここの機能の開発、出来たよ!ソースコードをメールに添付して送るから取り込んでね。

Page 5: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

こういう経験していませんか?

5

ありがとう!じゃこのファイルをコピペして・・・

わ!自分が作ってた部分が上書きされちゃった!

ここの機能の開発、出来たよ!ソースコードをメールに添付して送るから取り込んでね。

GitとGitHubを使って解決しましょう!

Page 6: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

今日のワークショップのゴール

6

チーム開発のためのGit/GitHubの基礎を学ぶ

Page 7: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

バージョン管理って?

7

ファイルの変更を記録しておくシステム

「誰が」「どのファイルを」「どう変更したか」がわかる

Page 8: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

バージョン管理って?

8

ファイルの変更を記録する場所↓

リポジトリ

iPhoneアプリリポジトリ

APIサーバリポジトリ

○○ライブラリリポジトリ

Page 9: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

バージョン管理って?

9

2017/09/24 12:15佐藤さんが

背景画像を変更

2017/09/24 14:15田中さんが

タイトルを変更

2017/09/25 08:15山田さんが本文を変更

過去の状態 最新の状態

リポジトリ内でのバージョン管理

Page 10: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

バージョン管理の嬉しいところ

10

2017/09/24 12:15佐藤さんが

背景画像を変更

2017/09/24 14:15田中さんが

タイトルを変更

2017/09/25 08:15山田さんが本文を変更

差分

過去の状態との差分がわかる

Page 11: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

バージョン管理の嬉しいところ

11

2017/09/24 12:15佐藤さんが

背景画像を変更

2017/09/24 14:15田中さんが

タイトルを変更

2017/09/25 08:15山田さんが本文を変更

過去の状態を最新として扱う

過去の状態に戻せる

Page 12: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

バージョン管理とGit

12

バージョン管理の方式はいくつかある今回はGitを使います

Subversion Git Mercurial

Page 13: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

GitとGitHub

13

Git バージョン管理のシステム

GitHub Gitでのバージョン管理をしやすくするWebサービスブラウザで変更履歴を見たりコードを共有したりするのが簡単に出来る

Page 14: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

Gitを使うには

14

コマンドラインツールでgitコマンドを使うor

GUIツールを使う↓

今回はSourceTreeというGUIツールを使います

Page 15: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

Sourcetreeのダウンロード

https://ja.atlassian.com/software/sourcetree

にアクセスして、ダウンロード

15

Page 16: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

SourceTreeのインストール

• Windows

• exeファイルを実行• mac OS

• zipファイルを展開して出来たSourceTree.appをアプリケーション以下に移動

Page 17: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

SourceTreeのインストール

17

ライセンスに同意にチェック

Page 18: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

SourceTreeのインストール

18

「既存のアカウント」

・Googleアカウント

・Atlassianアカウント

のどちらかでログイン

Page 19: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

SourceTreeのインストール

19

Page 20: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

SourceTreeのインストール

20

Mac:「セットアップをスキップ」

Windows:「スキップ」

Page 21: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

もしこの画面が出たら

21

Gitが見つかりませんでした Mercurialが見つかりませんでした

Page 22: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

GitHubの設定

GitHub用に下記の作業を進めます

• アカウント作成

• リポジトリの作成

22

Page 23: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

GitHubの設定(アカウント作成)

https://github.com

にアクセス

23

Page 24: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

GitHubの設定(アカウントの作成)

24

Page 25: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .25

リポジトリを作りましょう

https://github.com/new

にアクセス

自分のアカウント以下に

リポジトリを作成

• nagoya-meetup2018

Page 26: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

SourceTreeとGitHubを連携(Win)

26

アカウントを追加をクリック

GitHub、HTTPSを選択

Basic認証

Page 27: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .27

SourceTreeとGitHubを連携(mac)

メニューバー「Sourcetree」→環境設定→アカウント

GitHubを選択し

「接続アカウント」をクリック

→ログイン画面からログイン

Page 28: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .28

SourceTreeとGitHubを連携

リモートリポジトリを選択し

先ほど作成した

nagoya-meetup2018

が存在すれば連携完了!

Page 29: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

休憩

29

Page 30: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

第2部

Gitハンズオン

30

Page 31: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

この部でやりたいこと

• GitHub→自分のPCに持ってくる

• ファイルを追加・修正する

• GitHubに反映する

Page 32: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

この部でやりたいこと

• GitHub→自分のPCに持ってくる

• ファイルを追加・修正する

• GitHubに反映する

Page 33: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

GitHub→自分のPCに持ってくる

リモートリポジトリ :

色んな人が共有出来るようにしたリポジトリ。

GitHub上に置かれたリポジトリはリモートリポジトリ。

ローカルリポジトリ :

自分のPC上にだけ存在するリポジトリ。

33

ローカルリポジトリ リモートリポジトリ

Page 34: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

GitHub→自分のPCに持ってくる

clone :

リモートリポジトリをローカルリポジトリにコピーする

※初回のみの操作

34

ローカルリポジトリ リモートリポジトリ

clone

Page 35: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

この部でやりたいこと

• GitHub→自分のPCに持ってくる

• ファイルを追加・修正する

• GitHubに反映する

Page 36: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ファイルを修正してGitで扱う

ファイルの変更をローカルリポジトリに

登録するには2つのステップが必要です

36

ローカルリポジトリ

ファイルを変更したよ!

Page 37: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ファイルを修正してGitで扱う

どのファイルの変更を登録するかを選択して、

ステージング領域に追加する

→ add という

37

ローカルリポジトリ

ステージング領域(インデックスともいう)

add

Page 38: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ファイルを修正してGitで扱う

addしたステージング領域の変更を

ローカルリポジトリに登録する

→ commit という

38

ローカルリポジトリ

ステージング領域(インデックスともいう)

commit

Page 39: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ファイルを修正してGitで扱う

commit時にはどういう変更をしたかを

コメントで残す必要があります

39

ローカルリポジトリ

ステージング領域(インデックスともいう)

commit

commitコメント

Page 40: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ファイルを修正してGitで扱う

大事なこと

• ファイルの変更はaddしてcommit

• commitしたときはコメントを残す

40

ローカルリポジトリ

ステージング領域

commit

commitコメント

add

Page 41: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

この部でやりたいこと

• GitHub→自分のPCに持ってくる

• ファイルを追加・修正する

• GitHubに反映する

Page 42: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

自分のPC→GitHubに反映する

push:

ローカルリポジトリの変更をリモートリポジトリに反映する

42

ローカルリポジトリ リモートリポジトリ

push

Page 43: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

第2部の課題ワーク

SourceTreeを使って

一連の流れをやってみましょう!

43

Page 44: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

GitHub→自分のPCに持ってくる

clone :

リモートリポジトリをローカルリポジトリにコピーする

※初回のみの操作

44

ローカルリポジトリ リモートリポジトリ

clone

Page 45: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

cloneをSourceTreeでやってみよう

45

GitHub上のリポジトリのページで、赤で囲んだボタンをクリック→リポジトリのURLがコピーされます

Page 46: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

cloneをSourceTreeでやってみよう

46

1. 新規→「URLからクローン」を選択2. ソースURLに先ほどコピーしたURLをペースト3. 「クローン」をクリック4. 「保存先のパス」がローカルリポジトリになります

Page 47: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

cloneをSourceTreeでやってみよう

47

上記の設定をおまけでやっておきましょう

Page 48: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ローカルリポジトリを確認しよう

エクスプローラ/Finderで

先ほどのパスを開いてみましょう

この開いたフォルダ

=ローカルリポジトリ

48

Page 49: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ファイルを追加しましょう

テキストファイルをメモ帳やテキストエディタで作成します

• ファイル名は「README.txt」

• 本文には「Hello Nagoya!」

• 保存場所はローカルリポジトリ

49

Page 50: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ファイルを修正してGitで扱う

どのファイルの変更を登録するかを選択して、

ステージング領域に追加する

→ add という

50

ローカルリポジトリ

ステージング領域(インデックスともいう)

add

Page 51: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ステージングにaddしよう

51

README.txtが出来ている

Page 52: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ステージングにaddしよう

52

• チェックボックスをチェック• ファイルを上にドラッグ&ドロップのどちらかでステージングへadd

Page 53: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ステージングにaddしよう

53

ファイルがステージングにaddされた

Page 54: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ステージングにaddしよう

54

ファイルの差分が表示されている

Page 55: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ファイルを修正してGitで扱う

addしたステージング領域の変更を

ローカルリポジトリに登録する

→ commit という

55

ローカルリポジトリ

ステージング領域(インデックスともいう)

commit

Page 56: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ローカルリポジトリにcommitしよう

56

「コミット」をクリック

Page 57: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ローカルリポジトリにcommitしよう

57

commitコメントを入力してコミット

Page 58: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ローカルリポジトリにcommitしよう

58

ステージングからローカルリポジトリにcommitされたのでなくなった

Page 59: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

自分のPC→GitHubに反映する

push:

ローカルリポジトリの変更をリモートリポジトリに反映する

59

ローカルリポジトリ リモートリポジトリ

push

Page 60: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

リモートリポジトリにpushしよう

60

「プッシュ」をクリック

Page 61: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

リモートリポジトリにpushしよう

61

masterをチェックしてOK

Page 62: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

GitHubに反映されていることを確認

62

Page 63: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

作業ワークのやることリスト

• リモートリポジトリからローカルリポジトリにclone

• README.txtを作成してローカルリポジトリに保存

• SourceTreeでadd→commit→push

• GitHub上で反映されているか確認

わからないところがあったらサポーターに!

63

Page 64: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

第2部のまとめ

• リポジトリは2種類ある• リモートリポジトリ• ローカルリポジトリ

• ファイルの変更を登録するには• addしてコメントを書いてcommit

• リモート→ローカルにコピーするにはclone

• リモートリポジトリに反映するにはpush

64

Page 65: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

休憩

65

Page 66: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

第3部

チーム開発演習

66

Page 67: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

この部でやりたいこと

1つのリモートリポジトリに対して2人がそれぞれ作業出来る

Page 68: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

第2部でやったこと

push:

ローカルリポジトリの変更をリモートリポジトリに反映する

68

ローカルリポジトリ リモートリポジトリ

push

Page 69: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

pushを2人同時にやると…?

69

機能Aをpush

機能Bをpush

Page 70: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

pushを2人同時にやると…?

70

機能Aと機能Bが混ざってしまう

Page 71: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

pushを2人同時にやると…?

71

機能Aと機能Bが混ざってしまう

混ざるのを避けるため作業環境を分ける

Page 72: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

pushを2人同時にやると…?

72

機能Aと機能Bが混ざってしまう

混ざるのを避けるためブランチを分ける

Page 73: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ブランチについて

73

最新の状態

大元のブランチ→masterブランチ

Page 74: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ブランチについて

74

Aさんの作業ブランチ

Bさんの作業ブランチ

最新の状態からブランチを分ける→チェックアウト という

Page 75: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ブランチについて

75

それぞれの変更をコミット

Page 76: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ブランチについて

76

masterブランチに反映→マージ

Page 77: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

マージをするには?

Pull Requestを作成する

• GitHubの機能

• マージしてOKかコードレビューをする

77

Pull Request作成 コードレビュー

Page 78: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ブランチの作成方法

78

「ブランチ」をクリック

Page 79: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ブランチの作成方法

79

ブランチ名はGitHubアカウントとします

Page 80: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ブランチの作成方法

左メニューの「ブランチ」に項目が増えています

○が付いているのが現在のブランチ

ブランチ名をダブルクリックすると切り替えられます

80

Page 81: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

Pull Requestの作成方法

• ファイルを修正してadd→commit

• 作成したブランチをリモートリポジトリにpush• masterブランチにpushしないように注意!

• すると、GitHub上の画面がこのようになります

81

Page 82: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

Pull Requestの作成方法

Compare & pull requestをクリック

82

Page 83: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

Pull Requestの作成方法

83

Page 84: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

Pull Requestの作成方法

84

Pull Requestの概要文→どのような変更をしたかの説明を記載します。

Page 85: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

Pull Requestの作成方法

85

Create pull requestをクリック

Page 86: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

Pull Requestの作成方法

86

Page 87: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

Pull Requestでのコードレビュー

87

Files changedで差分が見られる

Page 88: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

Pull Requestでのコードレビュー

88

Merge pull requestをクリックしてマージ

レビュワーは問題なければコメントを残す

Page 89: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

マージ分をローカルに反映する

Pull Requestがマージされると

• リモートリポジトリのmasterブランチに反映される

• ローカルリポジトリのmasterブランチにはまだ未反映

89

作業ブランチ master masterマージ

Page 90: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

マージ分をローカルに反映する

ローカルリポジトリのmasterブランチに反映させる

→ pull という

90

作業ブランチ master masterマージ pull

Page 91: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

マージ分をローカルに反映する

91

masterブランチに切り替え

Page 92: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

マージ分をローカルに反映する

92

「プル」をクリック

Page 93: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

マージ分をローカルに反映する

93

ブランチを作成してマージしている

Page 94: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

第3部の課題ワーク

ここからはペアで作業します

机の上にあるペア番号を確認してください

94

スクリーン

Aさん Bさん

Page 95: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

前準備(演習用ソースコードのコピー)

https://github.com/kosshima/git-meetup180217

Aさんが上記のGitHubにアクセスして「Fork」してください

※Fork:他の人のGitHub上のリポジトリを自分のリポジトリにコピーする

95

Page 96: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

Forkの方法

96

Page 97: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

前準備(Collaboratorsに登録)

97

Page 98: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

前準備(Collaboratorsに登録)

98

Page 99: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

前準備(Collaboratorsに登録)

99

BさんのGitHubアカウントを入力してAdd collaboratorをクリック

Page 100: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

確認

サポーターが確認します

100

Page 101: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ペアで作業してみよう その1

準備は完了です!

AさんのGitHubにある

「git-meetup180217」を

AさんもBさんもcloneしてください

101

Page 102: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ペアで作業してみよう その1

ブランチを作成し、sample.htmlの

↑部分をそれぞれ書き換えてください

102

Page 103: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ペアで作業してみよう その1

AさんもBさんも同時に作業してください

• アカウント名でブランチを作成

• sample.htmlに自分のアカウント名を追記

• add→commit→push

• Pull Requestを作成

ここまで出来たらサポーターがチェックします

103

Page 104: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ペアで作業してみよう その1

BさんはAさんのPull Requestをレビューします

• 問題なければその旨をコメント

• マージする

• Bさんのローカルリポジトリにpullして反映• ブランチをmasterに切り替えてから

104

Page 105: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ペアで作業してみよう その1

AさんはBさんのPull Requestをレビューします

• 問題なければその旨をコメント

• マージする

• Aさんのローカルリポジトリにpullして反映

105

Page 106: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ペアで作業してみよう その2

2人同時に同じ箇所を修正します

まずmasterブランチにcheckoutして

pullしてください

106

Page 107: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ペアで作業してみよう その2

次に先ほどとは別の名前で

ブランチを作成し、sample.htmlの

↑部分をそれぞれ書き換えてください

最近食べた美味しかったものをそれぞれ書きます

107

Page 108: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ペアで作業してみよう その2

2人同時に行います

• 先ほどとは別の名前でブランチを作成

• sample.htmlに好きな食べ物を追記

• add→commit→push

• Pull Requestを作成

ここまで出来たらサポーターがチェックします

108

Page 109: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ペアで作業してみよう その2

AさんはBさんのPull Requestをレビューします

• 問題なければその旨をコメント

• マージする

• Aさんのローカルリポジトリにpullして反映

• ブランチをmasterに切り替えてから

109

Page 110: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ペアで作業してみよう その2

BさんはAさんのPull Requestをレビューします

• 問題なければその旨をコメント

• マージする

• Bさんのローカルリポジトリにpullして反映

110

ここで一回STOP

コンフリクトが起こります

※コンフリクト:同じ箇所を修正し、修正が重複している状態

Page 111: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

コンフリクト

111

Page 112: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

コンフリクトの解消

112

後のコミット

先のコミット

Page 113: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

コンフリクトの解消

113

Page 114: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

コンフリクトの解消

114

Page 115: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

マージが可能に

115

マージします

Page 116: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

masterブランチの確認

116

Page 117: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

第3部のまとめ

• 作業前にブランチを作成する

• 完了したらmasterブランチへPull Request

• コードレビューをしてマージする

• ローカルリポジトリにはpullで反映する

• 同時に同じ箇所を修正しあったらコンフリクトが起こる

• コンフリクトが起きても修正は可能

117

Page 118: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

おわりに

118

Page 119: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ローカルリポジトリでの作業

• ファイルの変更はaddしてcommit

• commitしたときはコメントを残す

119

ローカルリポジトリ

ステージング領域

commit

commitコメント

add

Page 120: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ローカルとリモートのやりとり

clone : リモートリポジトリをローカルリポジトリにコピー

pull : リモートリポジトリの変更をローカルリポジトリに反映

push : ローカルリポジトリの変更をリモートリポジトリに反映

120

ローカルリポジトリ リモートリポジトリ

push

pullclone

Page 121: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ブランチについて

121

masterブランチ

Pull Request作業用ブランチ

Page 122: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

まとめ

GitとGitHubにはこれ以外にも便利な機能があります。

が、コマンドや機能を覚えるのはあとからでも出来ます。

まずは基本的な仕組みをしっかりおさえて

今後の開発で使っていきましょう!

122

Page 123: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Appendix

123

Page 124: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

Gitコマンドでの操作

• add

$ git add ファイルパス

• commit

$ git commit –m "commitコメント"

Page 125: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

Gitコマンドでの操作

• ブランチの作成

$ git branch ブランチ名• 今のブランチを確認

$ git branch

• ブランチの切り替え

$ git checkout ブランチ名• ブランチの作成+そのブランチに切り替え

$ git checkout –b ブランチ名

Page 126: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

Gitコマンドでの操作

• clone

$ git clone リポジトリURL

• pull

$ git pull origin pullしたいブランチ名

• push

$ git push origin pushしたいブランチ名

Page 127: Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

Gitコマンドでの操作

"origin"ってなに?

→リモートリポジトリのURLを指している。

毎回打つのが面倒なので"origin"という略称で代用出来るようにデフォルトでなっている。

下の2つは同じことを表している。

$ git pull origin master

$ git pull [email protected]:ユーザ名/リポジトリ名.git master

127