SlideShare a Scribd company logo
1 of 112
Download to read offline
GitHub勉強会@arusuDev
GitHub勉強会
GitHub/Gitの使い方
GitHub勉強会(2019)@arusuDev
Outline
• Git/GitHubってなんだろう?
• Gitを使うことのメリット
• ローカルリポジトリを作ってみよう!
• ソースをコミットしてみよう
• GitHubにリモートリポジトリを作ってみよう
• GitHubを使うことのメリット
• Branch(ブランチ)とは?
• Gitにおけるマージ
• GitHubにおける開発の流れ
• PullとPush
• Pull request(コードのレビュー)とは?
• ブランチモデルとは?
• Issue機能を使ってみよう!
• Project機能を使ってみよう!
2/112
GitHub勉強会(2019)@arusuDev
まずは`Git`の説明から!
Git/GitHubってなんだろう?
3/112
GitHub勉強会(2019)@arusuDev
Gitは
“バージョン管理システム”
である!
って何?ってなりますよね
Gitってなんだろう?
4/112
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 5/112
Gitってなんだろう?
ファイルを管理したい時、そして古いバージョンを残したい時
こんな管理の方法をしませんか?
(私はよくやります。)
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 6/112
Gitってなんだろう?
この方法だと、バージョンが増えてくるとぱっと見で
このバージョンがどんなときだったのかわからず、たくさん開いたりすることになる
ソースコードもこの管理の仕方をするとだんだん訳わからなくなってくる
そこで登場するのが “Git”
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 7/112
Gitを使うことのメリット
Gitを使うと、ファイルの変更を記録することができる!
例えば次のようなプログラムがあるとします。
“Hello World”を”Hello Git”に変更した!
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 8/112
Gitを使うことのメリット
前のバージョン(左)もとっておきたい…
ってなったときに左にGit_Hello_v1.cpp 右にGit_Hello_v2.cpp
みたいに管理するのが従来の方法になるよね。
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 9/112
Gitを使うことのメリット
でもこれって、変わってる部分1行だけだよね?
全部別ファイルにして保存するの管理しにくいし分かりづらい!
そうそう、この色が変わったところだけを保存してくれれば、変更を知るには十分。
どこかにそんなシステムがないかなー??
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 10/112
Gitを使うことのメリット
そう、Gitならね。
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 11/112
Gitを使うことのメリット
Git を使うと、ファイルの変更だけを
記録することができる!
ということで、まずは複数人数での開発にも欠かせない
Gitの使い方を勉強していこう!
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 12/112
ローカルリポジトリを作ってみよう!
さて、Gitではいくつか専用の用語が出てくる。
なれるまでは、ちょっと大変だけどなれるとサクサクできるようになるよ!
予め言っておくと、これから説明する単語は
私の理解 で説明していくから正確な説明とは異なる場合があります。
(予防線)
またこの勉強会では、VSCodeを使ってGitの管理をすることを
想定してます。ベースとしてコマンドラインでの処理をまず覚えて、
イメージが掴めたらVSCodeでの処理方法までふれられたら良いな
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 13/112
ローカルリポジトリを作ってみよう!
まず一番初めに出てくる単語は、
Repository(リポジトリ,レポジトリ) 自分はリポジトリって読んでるけど好きな方で呼べばいいと思う
これは、Gitで管理するフォルダのことをさします。
リポジトリの中にあるファイルが管理対象になるってイメージだね。
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 14/112
ローカルリポジトリを作ってみよう!
まずは、手持ちのPCで好きな場所に、GitMeetingフォルダを作ろう。
作成した、GitMeetingフォルダに入ったら、このフォルダをリポジトリにします。
このコマンドを叩くと、
みたいに表示されるはず!
$ mkdir GitMeeting
$ cd GitMeeting
$git init
$ git init
Initialized empty Git repository in C:/Users/Arusu/GitMeeting/.git/
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 15/112
ローカルリポジトリを作ってみよう!
コマンドを叩いて、.git (隠しフォルダ)っていうフォルダが
作成されていれば、おk!
これで、GitMeetingフォルダがローカルリポジトリになって、このフォルダで
の変更をGitが見ることができるようになりました!
$ ls -al
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 16/112
ソースをコミットしてみよう
さて、次はなにかソースコードを追加してみよう!
適当にリポジトリ内で、Hello Worldのソースでも作成して、
Hello.cppとしてみよう。
プログラムが書き終わったら、保存して次のコマンドを叩いてみよう。
$ code Hello.cpp
$ git status
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 17/112
ソースをコミットしてみよう
そうすると、次のような表示が多分出てくる。
これは、まだHello.cppの変更をgitで追ってないよ!っていう意味
$ git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
Hello.cpp
nothing added to commit but untracked files present (use "git add" to track)
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 18/112
ソースをコミットしてみよう
ソースコードを追跡対象(変更を追う)にしてみる。
そして、もう一度
を叩くと、赤かった部分が
に変わっているはず!
これで、gitでHello.cppが管理対象になります。
$ git add Hello.cpp
$ git status
new file: Hello.cpp
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 19/112
ソースをコミットしてみよう
でも、管理対象になっても、今の状態だと、どのタイミングに戻ればいいかわ
からない!
今までの管理方法だと、この時の状態をv1,v2みたいにしてファイル分けし
ているタイミングで、
gitではcommit(コミット)という操作を行います。
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 20/112
ソースをコミットしてみよう
Gitでコミットするコマンドは
git commit –m “メッセージ”
このメッセージの部分には、その変更で何をしたか、が分かるようなメッセージ
を付けてあげると良いです。
後で述べる、複数人数で開発する場合は、コミットメッセージの書き方の
ルールを相談しておくと、あの変更どこでやったっけ?っていうのがスムーズに
進んだりする、かも!
$ git commit -m "はじめてのこみっと"
[master (root-commit) 3cd0f76] はじめてのこみっと
1 file changed, 6 insertions(+)
create mode 100644 Hello.cpp
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 21/112
ソースをコミットしてみよう
次に、Hello.cppの中身を少し書き換えてみよう。
例として、今回は
coutを1行増やしてみた。
#include <iostream>
using namespace std;
int main(void){
cout << "Hello,World" << endl;
cout << "Hello,Git" << endl;
}
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 22/112
ソースをコミットしてみよう
この変更を保存した状態で、
コマンドを実行すると、
のような表示が出て、Hello.cppが変更されていて、commitされていない
ことが分かります。
さっきと同じようにcommitしてみよう。
$ git status
modified: Hello.cpp
$ git add Hello.cpp
$ git commit -m "Update : coutを追加したよ"
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 23/112
ソースをコミットしてみよう
コマンドを使うと、今までの変更が見ることができるよ。
基本的なgitの操作の流れは、
$ git log
ソースの編集
コミットの対象にする
(ステージング)
git add (filename)
コミット
(変更の記録)
git commit –m “message”
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 24/112
GitHubってなんだろう?
Gitの最も基礎的な使い方を学んだので、
次は
GitHub
について見ていこう
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 25/112
GitHubってなんだろう?
GitHubとは、オンライン上で
Gitのリポジトリを共有するためのプラットフォームである。(私の解釈)
Gitを共有・複数人数で開発することに特化したクラウドサービスみたいなも
のかな。
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 26/112
ローカルリポジトリとリモートリポジトリ
Gitで使用するリポジトリをローカルリポジトリ
GitHubのリポジトリをリモートリポジトリっていう。
ローカルで作業した内容をリモートリポジトリに反映させることで、ソースコード
の共有ができるシステムになってる。
Local
rep
commit
commit
commit
GitHub
Remote
rep
ローカルでの作業をリモートに反映させる
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 27/112
リモートリポジトリを作ってみよう
なにはともあれ、一回やってみないとイメージが掴めないはず!
GitHubで、リモートリポジトリを作ってみよう。
まずはGitHubのサイト
(マイページでも可)
https://github.com/
にアクセス(ログインしてね)
これは私のマイページ
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 28/112
リモートリポジトリを作ってみよう
画面の右上、自分のアイコンが設定されている画像の隣に
+ マークがあるのでクリック!
New repositoryを選択します。
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 29/112
リモートリポジトリを作ってみよう
リモートリポジトリの新規作成の
画面にいきます。
今回は、Repository nameに、
GitMeeting
と入れてみましょう。
他の人からリポジトリが見えるかどうかを
設定できますが、Publicで
いいんじゃないかな。
Initialize~にはチェックを入れず
Create repository をおします!
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 30/112
リモートリポジトリを作ってみよう
これでリモートリポジトリが作成されました!
今回は、ローカルですでにリポジトリがある
ので、’…or push an existing~’
って書いてあるところを実行しましょう。
ローカルでさっき作業した、ターミナルに
戻って、
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 31/112
リモートリポジトリを作ってみよう
サイトに書いてあるコマンドを入力します。
1行目は、ローカルのリポジトリに、リモート(GitHub)のURLはここだよ、
って教えるコマンドです。
git remote add origin https://github.com/arusuDev/GitMeeting.git
git push -u origin master
Local
rep
GitHub
Remote
rep
ローカルのリポジトリにリモートのリポジトリを連携させる
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 32/112
リモートリポジトリを作ってみよう
2行目は、pushコマンドと呼ばれるコマンドで、ローカルのcommitをリモートに
反映させるときに使います。originというのはリモートだよっていう指定です。
git remote add origin https://github.com/arusuDev/GitMeeting.git
git push -u origin master
Local
rep
commit
commit
commit
GitHub
Remote
rep
ローカルでの作業をリモートに反映させる(push)
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 33/112
リモートリポジトリを作ってみよう
コマンドを実行したら、GitHubのサイトをリロード(F5)してみよう。
上手くいってれば、説明の画面から、
こういう画面に切り替わるはず!
これで、リモートリポジトリが完成!
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 34/112
GitHubを使うことのメリット
ふむふむ、ローカルリポジトリでのコミットの内容をネット上に公開できるのね。
で?それだけ???
ってなると思うんだけど、GitHubを使うと
複数人数でプログラムを開発することができるようになります。
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 35/112
GitHubを使うことのメリット
GitHubを使わない場合、複数人数で開発するときは、
AさんとBさんがそれぞれ別のコードを作業してるときは良いけど、
A
BC
ソースコード
A B
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 36/112
GitHubを使うことのメリット
GitHubを使わない場合、複数人数で開発するときは、
同じソースコードをいじってしまった場合、ソースコードの変更を合
わせるのが困難になってしまう…。
A
BC
ソースコード
A
B
競合
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 37/112
GitHubを使うことのメリット
この問題をGitHubを使うとどうなるかというと…
AさんとBさんがソースコードAの別の場所をそれぞれ作業するとす
ると、Gitではコミットの情報(変更した情報)を保存して
A
BC
ソースコード
A
B
A BXX行に~を書き込んで、
YY行の行を削除したよ
ZZ行に~を書き込んで、
AA行の行を削除したよ
リモートリポジトリ(Github)
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 38/112
GitHubを使うことのメリット
同じソースコードでも、AとBで作業箇所が被っていなければそれぞ
れのコードの変更を取り込むことができます。(マージ)
A
A BXX行に~を書き込んで、
YY行の行を削除したよ
ZZ行に~を書き込んで、
AA行の行を削除したよ
Aの変更を取り込む A‘ Bの変更を取り込む New A
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 39/112
GitHubを使うことのメリット
GitHubを使って開発をするときのイメージ
Remote
Repository
Local
repository
commit
ローカル環境
Push:
ローカルの変更をリモートへ送信
Pull:
リモートの変更を(他の人による変更)
ローカルへ反映
GitHub
commit
commit
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 40/112
Branch(ブランチ)とは?
Git/GitHubには、ブランチという機能があります。
Gitではじめリポジトリを作成すると、
masterという名前のブランチが作成されます。
リポジトリ
master
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 41/112
Branch(ブランチ)とは?
Gitでは、ローカルで作業してコミットをすると、
今いるブランチに変更がコミットされます。
リポジトリ
master
First Commit
Update:
xxxx
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 42/112
Branch(ブランチ)とは?
Aという機能と、Bという機能をプログラムに追加したくなったとしましょう。
GitHubでは、範囲が被っていなければ同時に作業することは可能です。
リポジトリ
master
First Commit
Update:
xxxx
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 43/112
Branch(ブランチ)とは?
よし、じゃあ作業しよう!
となって、AさんとBさんが機能Aと機能Bを同時に実装していくと…
リポジトリ
master
機能Aのコミット1 機能Aのコミット2
機能Bのコミット1 機能Bのコミット2
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 44/112
Branch(ブランチ)とは?
なんだか、変更履歴がちょっとぐちゃぐちゃに…
しかもこのときに例えば問題が起きて、機能Bのコミットまで戻りたい…ってな
ると、
リポジトリ
master
機能Aのコミット1 機能Aのコミット2
機能Bのコミット1 機能Bのコミット2
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 45/112
Branch(ブランチ)とは?
Aさんが開発していた機能Aのコミット2まで消えてしまいました。
これだと管理がぐちゃぐちゃになってしまいます。
リポジトリ
master
機能Aのコミット1
機能Bのコミット1
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 46/112
Branch(ブランチ)とは?
そこで、ブランチという機能を使うと、
コミットの流れを分岐させることができます。
機能Aの実装のために、Aというブランチを、
機能Bの実装のために、Bというブランチを切ると…
リポジトリ
master
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 47/112
Branch(ブランチ)とは?
そこで、ブランチという機能を使うと、
コミットの流れを分岐させることができます。
機能Aの実装のために、Aというブランチを、
機能Bの実装のために、Bというブランチを切ると…
リポジトリ
master
Branch : A
Branch : B
機能Aのコミット1 機能Aのコミット2
機能Bのコミット1 機能Bのコミット2
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 48/112
Branch(ブランチ)とは?
ブランチが分けられたことで、それぞれの機能がmasterの特定のポイントか
ら分岐され、別々の履歴にコミットされるようになり、機能毎にまとまった開
発ができるようになりました!
リポジトリ
master
Branch : A
Branch : B
機能Aのコミット1 機能Aのコミット2
機能Bのコミット1 機能Bのコミット2
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 49/112
Branch(ブランチ)とは?
ただ、このままだと、機能Aを持ったプログラムと、機能Bを持ったプログラムが
別々に存在するだけになってしまうので、それらを合わせる必要があります。
ブランチでの作業を、もとのブランチ(この例だとmaster)に反映させることを、
と、いいます。
リポジトリ
master
Branch : A
Branch : B
マージ(merge)
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 50/112
Gitにおけるマージ
マージをすると、マージコミット、と呼ばれるものが作成されます。
リポジトリ
master
Branch : A
Branch : B
MasterへのAのマージコミット
MasterへのBのマージコミット
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 51/112
Gitにおけるマージ
これによって、masterブランチに機能Aと機能Bを持ったプログラムが
完成します。
リポジトリ
master
Branch : A
Branch : B
機能AとBを持ったプログラム
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 52/112
Gitにおけるマージ
Gitを使って開発するときは、主に次の流れで開発していきます。
メインの開発するブランチ
から機能毎に分けた
ブランチを切る(作成する)
機能毎に分けたブランチで
開発をすすめる。
ブランチを切るもとの
ブランチにマージを行う。
リポジトリ
master
Branch : A
Branch : B
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 53/112
ローカルでブランチを切ってみよう
前に作ったローカルリポジトリ、GitMeetingを開きます。
まず、次のコマンドを利用してみよう。
このコマンドを利用すると、
のような表示が出ると思います。
これは、今いるリポジトリに、masterブランチがあるということを示しています。
$ git branch
$ git branch
* master
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 54/112
ローカルでブランチを切ってみよう
今いるmasterブランチから、新たなブランチを切って(作成して)みよう。
例では、function_Aという名前のブランチを作成しています。
もう一度、
コマンドを利用すると、
という表示が出て、function_Aというブランチが作成されていること
がわかります。
$ git branch function_A
$ git branch
$ git branch
function_A
* master
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 55/112
ローカルでブランチを切ってみよう
しかし、この表示が示している通り、branchを作成しただけでは、まだ
masterブランチにいることがわかります。
そこで、checkoutコマンドを使って、ブランチを移動します。
このコマンドを使って、git branchコマンドを使うと、
移動できてますね!
$ git branch
function_A
* master
$ git checkout function_A
Switched to branch 'function_A'
$ git branch
* function_A
master
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 56/112
ローカルでブランチを切ってみよう(コマンド)
新しいブランチを作成するコマンドは、
ブランチを移動するコマンドは、
また、これらをまとめて行うコマンドとして、
のようなcheckoutのオプションも存在します。
$ git branch (branch_name)
$ git checkout (branch_name)
$ git checkout -b function_B
Switched to a new branch 'function_B'
新しいブランチは現在のブランチから作成される点に注意!
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 57/112
ローカルでブランチを切ってみよう
さて、新しく作成したブランチ function_A でソースコードをなにか
編集してみよう。
例として、function_Aを実装してみました。
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 58/112
ローカルでブランチを切ってみよう
今現在、リポジトリは次のような状態になっています。
$ git add Hello.cpp
$ git commit -m "Update : function_A"
[function_A 2efddae] Update : function_A
1 file changed, 5 insertions(+)
リポジトリ
master
Branch : A
Update:function_A
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 59/112
ローカルでブランチを切ってみよう
試しに、masterブランチに移動してみましょう。
この状態で、先程変更を加えたファイルを見てみると、その変更がなかったこ
とになっていると思います。
リポジトリ
master
Branch : A
$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
いまここ!
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 60/112
ローカルでブランチをマージしてみよう
Function_Aブランチでの作業はすでに終わっているので、
変更をmasterブランチに取り込んでみましょう。
まずは、取り込みたいベースとなるブランチに移動します。
今回はmasterブランチに function_Aブランチをマージしたいので、
masterブランチに移動します。(checkoutコマンド)
リポジトリ
master
Branch : A
ここにBranch:Aの変更を取り込みたい。
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 61/112
ローカルでブランチをマージしてみよう
ブランチをマージするには次のコマンドを利用します。
すると、次のような表示が出ると思います。
今回の例だと、マージによって、Hello.cppに5行分の追加が
行われたことがわかります。
$ git merge function_A
Updating 38efb93..2efddae
Fast-forward
Hello.cpp | 5 +++++
1 file changed, 5 insertions(+)
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 62/112
ローカルでブランチをマージしてみよう
ローカルで、マージするときのイメージを持って、
次のGitHubで開発する時のイメージを付けていこう!
リポジトリ
master
Branch : A
function_Aの変更が
masterにマージされた!
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 63/112
GitHubにおける開発の流れ
GitHubで複数人数開発するときのの流れは次のようになります。
初回
リモートリポジトリ
からcloneする
[clone]
開発のための
ブランチを切る
[checkout]
作成したブランチ
で作業をコミット
[commit]
リモートリポジトリ
に変更を送信
[push]
コードのレビュー
を依頼する
[pull request]
コードの変更を開発
ブランチに取り込む
[merge]
コードの変更を
ローカルに取り込む
[pull]
開発
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 64/112
GitHubにおける開発の流れ
GitHubで複数人数開発するときのの流れは次のようになります。
初回
リモートリポジトリ
からcloneする
[clone]
開発のための
ブランチを切る
[checkout]
作成したブランチ
で作業をコミット
[commit]
リモートリポジトリ
に変更を送信
[push]
コードのレビュー
を依頼する
[pull request]
コードの変更を開発
ブランチに取り込む
[merge]
コードの変更を
ローカルに取り込む
[pull]
開発
Githubのソースコードをローカルにダウンロードするコマンド
リモートと同様のローカルリポジトリが作成されます。
git clone URL
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 65/112
GitHubにおける開発の流れ
GitHubで複数人数開発する時の流れは次のようになります。
開発のための
ブランチを切る
[checkout]
作成したブランチ
で作業をコミット
[commit]
リモートリポジトリ
に変更を送信
[push]
コードのレビュー
を依頼する
[pull request]
コードの変更を開発
ブランチに取り込む
[merge]
コードの変更を
ローカルに取り込む
[pull]
リモートでの作業
ローカルでの作業
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 66/112
pullコマンド
pullコマンドを使うと,今現在いるローカルのブランチに、リモートリポジトリの
変更をマージすることができます。
$ git pull origin (branch_name)
Remote
Rep
master
Remote
(GitHub)
Local
Local
Rep
master
pull
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 67/112
pullコマンド
pullコマンドを使うと,今現在いるローカルのブランチに、リモートリポジトリの
変更をマージすることができます。(リモートとローカルを同期させるイメージ)
$ git pull origin (branch_name)
Remote
Rep
master
Remote
(GitHub)
Local
Local
Rep
master
pull
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 68/112
GitHubにおける開発の流れ
GitHubで複数人数開発する時の流れは次のようになります。
開発のための
ブランチを切る
[checkout]
作成したブランチ
で作業をコミット
[commit]
リモートリポジトリ
に変更を送信
[push]
コードのレビュー
を依頼する
[pull request]
コードの変更を開発
ブランチに取り込む
[merge]
コードの変更を
ローカルに取り込む
[pull]
リモートでの作業
ローカルでの作業
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 69/112
checkout/commit
これは前にやったローカルでの作業と一緒です!
実装したい機能の名前をつけたbranchを切って、
作業したら、作業したファイルをステージング(add)して、
コミットメッセージをつけてコミットしましょう!
$ git checkout -b feature
$ git add (file)
$ git commit –m “commit message”
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 70/112
GitHubにおける開発の流れ
GitHubで複数人数開発する時の流れは次のようになります。
開発のための
ブランチを切る
[checkout]
作成したブランチ
で作業をコミット
[commit]
リモートリポジトリ
に変更を送信
[push]
コードのレビュー
を依頼する
[pull request]
コードの変更を開発
ブランチに取り込む
[merge]
コードの変更を
ローカルに取り込む
[pull]
リモートでの作業
ローカルでの作業
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 71/112
pushコマンド
コミットした内容を今度はリモートリポジトリに送信しよう。
このコマンドで、リモートリポジトリに現在のコミット内容を送信することができ
る。originが前についているブランチ名は、リモートのブランチ名であることを
示しています。
ローカルのmasterブランチをpushするときは、
となります。
git push origin (branch_name)
git push origin master
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 72/112
pushコマンド
Remote
Rep
master
Remote
(GitHub)
Local
Local
Rep
master
push
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 73/112
pushコマンド
ローカルでの変更をリモートに反映します。
Remote
Rep
master
Remote
(GitHub)
Local
Local
Rep
master
push
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 74/112
GitHubにおける開発の流れ
GitHubで複数人数開発する時の流れは次のようになります。
開発のための
ブランチを切る
[checkout]
作成したブランチ
で作業をコミット
[commit]
リモートリポジトリ
に変更を送信
[push]
コードのレビュー
を依頼する
[pull request]
コードの変更を開発
ブランチに取り込む
[merge]
コードの変更を
ローカルに取り込む
[pull]
リモートでの作業
ローカルでの作業
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 75/112
pull request(コードのレビュー依頼)
さて、ここに来てまた馴染みのない単語が出てきました。
これは複数人数で開発するときに、使うものです。
例えば、AさんとBさんで開発をしていたとしましょう。
Remote
master
Aさん
master
feature
Aさんがfeatureブランチで
新しい機能を開発
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 76/112
pull request(コードのレビュー依頼)
Aさんは機能を開発したので、featureブランチをリモートにpushしました。
Remote
master
Aさん
master
feature
feature
push
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 77/112
pull request(コードのレビュー依頼)
Aさんは機能を開発したので、featureブランチをリモートにpushしました。
そしてAさんは、masterブランチにマージを行いました。
Remote
master
Aさん
master
feature
feature
masterブランチに
featureブランチをマージ
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 78/112
pull request(コードのレビュー依頼)
小規模な開発の場合は、あまり問題になることは少ないですが、
例として、Aさんの作ったコードにバグが存在したとしましょう。
Remote
master
Aさん
master
feature
feature
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 79/112
pull request(コードのレビュー依頼)
そうすると、一緒に開発していた人たちのメインの開発ブランチにバグが混在
することになってしまいます。開発しているブランチに色んな人が好き勝手に
マージしてしまうと、いろんなバグや整合性がとれなくなってしまう恐れがある
のです。
Remote
master
Aさん
master
feature
feature
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 80/112
pull request(コードのレビュー依頼)
そこで登場するのがこの、pull request(通称プルリク)という機能です。
これは、一緒に開発を行っている人に、コードのレビューを依頼するという機
能になっていて、GitHub上から行うことができます。
Remote
master
Aさん
feature
featureブランチをmasterブランチに
マージしたいからレビューしてくれ
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 81/112
pull request(コードのレビュー依頼)
そこで登場するのがこの、pull request(通称プルリク)という機能です。
これは、一緒に開発を行っている人に、コードのレビューを依頼するという機
能になっていて、GitHub上から行うことができます。
Remote
master
Aさん
feature
featureブランチをmasterブランチに
マージしたいからレビューしてくれ
masterブランチに
featureブランチを
マージしたい
pull request
Bさん
レビュー依頼
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 82/112
pull request(コードのレビュー依頼)
Bさんは受け取ったプルリクエストの内容を見て、問題がないと判断した場合
には、マージを
Remote
master
feature
マージ
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 83/112
pull request(コードのレビュー依頼)
Bさんは受け取ったプルリクエストの内容を見て、問題がないと判断した場合
には、マージを
問題点がある(コード、実際に動かしてみて)と思った場合には、そのこと
を開発者に伝えて、再度変更をpushしてもらうように依頼します。
Remote
master
feature
マージ
Remote
master
feature
Bさん:この辺の機能
おかしくない?
Aさん:確かに!
修正します。
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 84/112
pull request(コードのレビュー依頼)
Bさんは受け取ったプルリクエストの内容を見て、問題がないと判断した場合
には、マージを
問題点がある(コード、実際に動かしてみて)と思った場合には、そのこと
を開発者に伝えて、再度変更をpushしてもらうように依頼します。
Remote
master
feature
マージ
Remote
master
feature
Aさん:修正しました!
Bさん:直ってるの確認
したのでマージ!
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 85/112
pull request(コードのレビュー依頼)
Bさんは受け取ったプルリクエストの内容を見て、問題がないと判断した場合
には、マージを
問題点がある(コード、実際に動かしてみて)と思った場合には、そのこと
を開発者に伝えて、再度変更をpushしてもらうように依頼します。
Remote
master
feature
マージ
Remote
master
feature
バグを除けた!
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 86/112
pull request(コードのレビュー依頼)
このようにコードをレビューすることによって、コードについて議論する場であっ
たり、品質の高いコードを作ることができるようにする機能がpull requestと
呼ばれる機能です。
実際にGitHubで、どのようにしてプルリクエストが
作成されるか見ていきましょう。
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 87/112
pull request(コードのレビュー依頼)
GitHub上では、新しいブランチでコードのpushを行ったときに、
次のような表示がでます。
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 88/112
pull request(コードのレビュー依頼)
Compare & pull requestをクリックすると、このような画面になります。
Baseにマージをされるブランチを、compareに実装した機能のあるブランチ
を選択します。
Writeの中には、
レビューしてもらうのに
参考になるような内容を
書くと良いです!
(markdownが使えます)
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 89/112
89
pull request(コードのレビュー依頼)
Pull requestを作成すると、
上のタブでPull requestの欄の
数字が増えます。
ここには前のページで記述した
内容が表示されます。
ここでは、他の人が同じ行から作業している
コンフリクト(衝突)がないかを表示します。
コンフリクトがなければ、チェックマークが付き
マージは問題なく行われます。
Pull requestに対してなんらかのメッセージを
送る場合はこっちに書きます。
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 90/112
90
pull request(コードのレビュー依頼)
Pull requestでレビューをする場合
GitHub上で行うときは、
右のFile changedをクリックします。
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 91/112
pull request(コードのレビュー依頼)
File changedをクリックすると追加された行が緑、削除された行が赤で表
示されます。実装された機能が問題なければ、Review changesをクリッ
クし、
Review changes
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 92/112
pull request(コードのレビュー依頼)
コメントや変更のリクエストを書いて、Submit reviewを押します。
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 93/112
pull request(コードのレビュー依頼)
コメントや変更のリクエストを書いて、Submit reviewを押します。
問題がなければここからマージを行いましょう!
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 94/112
pull request(コードのレビュー依頼)
Confirm mergeをクリック!
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 95/112
pull request(コードのレビュー依頼)
これでmasterブランチに変更がマージされました。
開発に使ったブランチを削除するかどうかは、開発の規模によると思うので、
開発する人たちの中で決めるのが良いと思います。
あまりにブランチが増えすぎるとそれはそれで管理が大変になってくることも…
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 96/112
GitHubにおける開発の流れ
GitHubで複数人数開発する時の流れは次のようになります。
開発のための
ブランチを切る
[checkout]
作成したブランチ
で作業をコミット
[commit]
リモートリポジトリ
に変更を送信
[push]
コードのレビュー
を依頼する
[pull request]
コードの変更を開発
ブランチに取り込む
[merge]
コードの変更を
ローカルに取り込む
[pull]
リモートでの作業
ローカルでの作業
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 97/112
pullに戻る
mergeまでいったのでここまでが開発のイテレーションが一巡します。
開発メインのブランチ(例だとmaster)がマージされて更新されているので、
pullでローカルのmasterを更新して、ブランチを切って、と進んでいきます。
Remote
Rep
master
Remote
(GitHub)
Local
Local
Rep
master
pull
$ git pull origin master
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 98/112
ブランチモデル
GitHubでの開発の流れはここまでで抑えてきました。
Gitで開発するときに、どのようなルールでブランチを切るのかということを決め
たものがブランチモデルと言います。
Gitではいろいろなブランチモデルが提案されています
ここまで例で上げてきたものは、
masterとfeatureの二種類で開発するものを例としてあげてきました。
Repository
master
feature
feature
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 99/112
ブランチモデル
この例に上げてきた手法では、常にmasterのコードがマージによって
書き換わっていくため、リリース時点や安定版のコードを保存することが
できないという問題点があります。
そこで、master + develop + featureの三種類のブランチを使って管
理する方法などがあります。
Repository
master
featureA
featureB
develop
v0.1 v0.2
featureC
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 100/112
ブランチモデル
ブランチモデルには様々なモデルが有り、開発の規模に合わせたブランチモデ
ルを利用すると良いと思います。(Google等でブランチモデルなどと検索す
ると色々と出てきます。
Repository
master
featureA
featureB
develop
v0.1 v0.2
HotFix
featureC
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 101/112
Issue機能を使ってみよう
GitHubにはissueという機能がある。
issueは、
・こういう機能を実装したらどうだろう?(追加機能)
・こういう問題があるから直さないといけないよね(課題)
などのタスク管理ができる機能になっています。
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 102/112
Issue機能を使ってみよう
Issueのタブをクリックすると、
右のような画面が開く。
右にあるNew issueを
クリックすると新たなタスクを
登録することができる。
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 103/112
Issue機能を使ってみよう
Titleにはその提案する機能や問題について見て分かるようなものを書こう。
Leave a commentのところは、Titleだけで事足りてしまう場合は
書かなくても良いかもしれないけれど、他の人の理解の助けに
なりそうなことを書くと
優しいです。
右側にいくつか項目が
あるのでそっちについて
少し見ていこう。
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 104/112
Issue機能を使ってみよう
これらの項目は右側の歯車をクリックすると
設定できる項目が出てきます。
・Assignees
担当者を決める機能(一人だと自分だけ出てくる…)
・Labels
問題がどういう内容なのか
(バグなのか、新しい機能なのかとか、自分で作ることもできるよ!)
・Projects
あとで説明するProjectという機能に紐付け!
・Milestone
Issueの期限を決めたりするのに使えるみたい
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 105/112
Issue機能を使ってみよう
試しに、issueを作成してみると次のような画面になる。
このissue一つにつき、一つブランチを切って作業するように私はしています。
Issueに取り組んでいるときに、
調べたことや出てきた問題点をコメントに
記しておけば、あとで開発するときに
役立つ可能性があるのでおすすめです。
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 106/112
Project機能を使ってみよう
今回説明する機能の最後になります。GitHubにはプロジェクトの管理を
するための機能として、
Projects機能があります。
Projectsタブを開いて、
Create a projectボタンを
押してみましょう。
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 107/112
Project機能を使ってみよう
Projects機能を使うと、issueを付箋のような形で管理することができます。
まずは付箋を貼り付けるボード(看板)を作成します。
ボードの名前は小規模なプロジェクト
であれば好きな名前で良いと思います。
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 108/112
Project機能を使ってみよう
プロジェクトボードのテンプレートがあるので、
好きなものを選びます。
個人的なおすすめは
“Automated Kanban”
です。
これはissueの作成時にこのプロジェクトを
作成すると勝手に紐付けしてカードを
追加してくれるオプションになります。
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 109/112
Project機能を使ってみよう
プロジェクトボードのテンプレートがあるので、
好きなものを選びます。
個人的なおすすめは
“Automated Kanban”
です。
これはissueの作成時にこのプロジェクトを
作成すると勝手に紐付けしてカードを
追加してくれるオプションになります。
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 110/112
110
Project機能を使ってみよう
作成すると次のような画面になります。Todoには簡単な使い方の説明(英
語)が乗っています。必要でなければ右上の・・・から
”Archive all cards”
してしまいましょう。
© Basic Inc. All Rights Reserved.
GitHub勉強会(2019)@arusuDev 111/112
Project機能を使ってみよう
画面右上のAdd cardsをクリックすると、今現在存在する
issue と pull requeset が表示されるので、To doに持っていきましょう。
カードは自由に移動することができます。これによって、今やらないといけない
タスク、”To do”や
作業中である
“In progress”
終了後である
“Done”
を管理することが
できます。
GitHub勉強会@arusuDev
複数人開発ですごく便利なツール
Git/GitHubを使っていろいろ開発しよう!
おつかれさまでした。

More Related Content

What's hot

GitLab CI/CD パイプライン
GitLab CI/CD パイプラインGitLab CI/CD パイプライン
GitLab CI/CD パイプラインTetsurou Yano
 
会社に Github導入した話
会社に Github導入した話会社に Github導入した話
会社に Github導入した話Yutaka Kinjyo
 
20120324 git training
20120324 git training20120324 git training
20120324 git trainingTakeshi AKIMA
 
Git講習会
Git講習会Git講習会
Git講習会galluda
 
Github と仲良くなろう!
Github と仲良くなろう!Github と仲良くなろう!
Github と仲良くなろう!Kentaro Ohkouchi
 
GitHub Appsの作り方
GitHub Appsの作り方GitHub Appsの作り方
GitHub Appsの作り方zaru sakuraba
 
今日から始めるGithub
今日から始めるGithub今日から始めるGithub
今日から始めるGithublion-man
 
複数人でのUnity開発ノウハウ
複数人でのUnity開発ノウハウ複数人でのUnity開発ノウハウ
複数人でのUnity開発ノウハウYasuyuki Niwa
 
Github時代のgitのはなし
Github時代のgitのはなしGithub時代のgitのはなし
Github時代のgitのはなしYoichi Toyota
 
Gitpractice01
Gitpractice01Gitpractice01
Gitpractice01mmm110
 
2017823 pythonを始めよう
2017823 pythonを始めよう2017823 pythonを始めよう
2017823 pythonを始めようshouta yoshikai
 
GitLabを16万8千光年ワープさせた話(改)
GitLabを16万8千光年ワープさせた話(改)GitLabを16万8千光年ワープさせた話(改)
GitLabを16万8千光年ワープさせた話(改)Wataru NOGUCHI
 
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウCircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウTakeshi Mikami
 
Gitのつくりかた YAPC::Asia 2015 @DQNEO
Gitのつくりかた YAPC::Asia 2015 @DQNEOGitのつくりかた YAPC::Asia 2015 @DQNEO
Gitのつくりかた YAPC::Asia 2015 @DQNEODQNEO
 
GitHubの使い方(導入編) 2013/10/1版 (PPTX)
GitHubの使い方(導入編)2013/10/1版 (PPTX)GitHubの使い方(導入編)2013/10/1版 (PPTX)
GitHubの使い方(導入編) 2013/10/1版 (PPTX)Akihiko Shirai
 

What's hot (20)

GitLab CI/CD パイプライン
GitLab CI/CD パイプラインGitLab CI/CD パイプライン
GitLab CI/CD パイプライン
 
会社に Github導入した話
会社に Github導入した話会社に Github導入した話
会社に Github導入した話
 
20120324 git training
20120324 git training20120324 git training
20120324 git training
 
Git講習会
Git講習会Git講習会
Git講習会
 
Yapc2012資料
Yapc2012資料Yapc2012資料
Yapc2012資料
 
はじめてのgithub
はじめてのgithubはじめてのgithub
はじめてのgithub
 
Github と仲良くなろう!
Github と仲良くなろう!Github と仲良くなろう!
Github と仲良くなろう!
 
GitHub Appsの作り方
GitHub Appsの作り方GitHub Appsの作り方
GitHub Appsの作り方
 
今日から始めるGithub
今日から始めるGithub今日から始めるGithub
今日から始めるGithub
 
複数人でのUnity開発ノウハウ
複数人でのUnity開発ノウハウ複数人でのUnity開発ノウハウ
複数人でのUnity開発ノウハウ
 
Github時代のgitのはなし
Github時代のgitのはなしGithub時代のgitのはなし
Github時代のgitのはなし
 
Gitpractice01
Gitpractice01Gitpractice01
Gitpractice01
 
2017823 pythonを始めよう
2017823 pythonを始めよう2017823 pythonを始めよう
2017823 pythonを始めよう
 
Git @ NNCT programming workshop
Git @ NNCT programming workshopGit @ NNCT programming workshop
Git @ NNCT programming workshop
 
osakapy 2014.05 LT
osakapy 2014.05 LTosakapy 2014.05 LT
osakapy 2014.05 LT
 
GitLabを16万8千光年ワープさせた話(改)
GitLabを16万8千光年ワープさせた話(改)GitLabを16万8千光年ワープさせた話(改)
GitLabを16万8千光年ワープさせた話(改)
 
Pythonを始めよう
Pythonを始めようPythonを始めよう
Pythonを始めよう
 
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウCircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
 
Gitのつくりかた YAPC::Asia 2015 @DQNEO
Gitのつくりかた YAPC::Asia 2015 @DQNEOGitのつくりかた YAPC::Asia 2015 @DQNEO
Gitのつくりかた YAPC::Asia 2015 @DQNEO
 
GitHubの使い方(導入編) 2013/10/1版 (PPTX)
GitHubの使い方(導入編)2013/10/1版 (PPTX)GitHubの使い方(導入編)2013/10/1版 (PPTX)
GitHubの使い方(導入編) 2013/10/1版 (PPTX)
 

Similar to GitHub勉強会

GitHub勉強会~当日資料~
GitHub勉強会~当日資料~GitHub勉強会~当日資料~
GitHub勉強会~当日資料~Shintaro Mizuno
 
gitを使う準備をしよう - 初級編
gitを使う準備をしよう - 初級編gitを使う準備をしよう - 初級編
gitを使う準備をしよう - 初級編Sanae Yamashita
 
色んな環境用の たった一つの.gitConfig
色んな環境用の たった一つの.gitConfig色んな環境用の たった一つの.gitConfig
色んな環境用の たった一つの.gitConfigwataru uchiyama
 
GitHubの入門を読む前に読む入門書
GitHubの入門を読む前に読む入門書GitHubの入門を読む前に読む入門書
GitHubの入門を読む前に読む入門書相皓 卞
 
Git勉強会 2016 Gitで卒論を管理しよう回
Git勉強会 2016 Gitで卒論を管理しよう回Git勉強会 2016 Gitで卒論を管理しよう回
Git勉強会 2016 Gitで卒論を管理しよう回kinme modoki
 
ゆるふわっGit入門
ゆるふわっGit入門ゆるふわっGit入門
ゆるふわっGit入門Keisuke Oohata
 
Git道場を開催してきた
Git道場を開催してきたGit道場を開催してきた
Git道場を開催してきたHiromu Shioya
 
Git学ぼうぜの会 ハンズオン資料 - LOCAL学生部 GWイベント
Git学ぼうぜの会 ハンズオン資料 - LOCAL学生部 GWイベントGit学ぼうぜの会 ハンズオン資料 - LOCAL学生部 GWイベント
Git学ぼうぜの会 ハンズオン資料 - LOCAL学生部 GWイベントTakuya Mukohira
 
LT発表-第6回_共同作業におけるGit
LT発表-第6回_共同作業におけるGitLT発表-第6回_共同作業におけるGit
LT発表-第6回_共同作業におけるGitRiki Kenmochi
 
プログラミング支援AI GitHub Copilot すごいの話
プログラミング支援AI GitHub Copilot すごいの話プログラミング支援AI GitHub Copilot すごいの話
プログラミング支援AI GitHub Copilot すごいの話Mitsushige Ishiguro
 
Git hub pagesで告知サイトを作ってみた
Git hub pagesで告知サイトを作ってみたGit hub pagesで告知サイトを作ってみた
Git hub pagesで告知サイトを作ってみたSoudai Sone
 
GitHub Enterpriseの導入事例と実践GitHub Actions
GitHub Enterpriseの導入事例と実践GitHub ActionsGitHub Enterpriseの導入事例と実践GitHub Actions
GitHub Enterpriseの導入事例と実践GitHub ActionsShuji Yamada
 
git-followup @明石高専2E
git-followup @明石高専2Egit-followup @明石高専2E
git-followup @明石高専2ESanae Yamashita
 

Similar to GitHub勉強会 (20)

Gitの紹介
Gitの紹介Gitの紹介
Gitの紹介
 
GitHub勉強会~当日資料~
GitHub勉強会~当日資料~GitHub勉強会~当日資料~
GitHub勉強会~当日資料~
 
gitを使う準備をしよう - 初級編
gitを使う準備をしよう - 初級編gitを使う準備をしよう - 初級編
gitを使う準備をしよう - 初級編
 
Git地図
Git地図Git地図
Git地図
 
Shizudev git hub宿題
Shizudev git hub宿題Shizudev git hub宿題
Shizudev git hub宿題
 
Git_GiHub講習会.pdf
Git_GiHub講習会.pdfGit_GiHub講習会.pdf
Git_GiHub講習会.pdf
 
色んな環境用の たった一つの.gitConfig
色んな環境用の たった一つの.gitConfig色んな環境用の たった一つの.gitConfig
色んな環境用の たった一つの.gitConfig
 
GitHubの入門を読む前に読む入門書
GitHubの入門を読む前に読む入門書GitHubの入門を読む前に読む入門書
GitHubの入門を読む前に読む入門書
 
Git勉強会 2016 Gitで卒論を管理しよう回
Git勉強会 2016 Gitで卒論を管理しよう回Git勉強会 2016 Gitで卒論を管理しよう回
Git勉強会 2016 Gitで卒論を管理しよう回
 
ゆるふわっGit入門
ゆるふわっGit入門ゆるふわっGit入門
ゆるふわっGit入門
 
今さら聞けない人のためのGitLabの始め方 Ubuntu編
今さら聞けない人のためのGitLabの始め方 Ubuntu編今さら聞けない人のためのGitLabの始め方 Ubuntu編
今さら聞けない人のためのGitLabの始め方 Ubuntu編
 
Git道場を開催してきた
Git道場を開催してきたGit道場を開催してきた
Git道場を開催してきた
 
Git学ぼうぜの会 ハンズオン資料 - LOCAL学生部 GWイベント
Git学ぼうぜの会 ハンズオン資料 - LOCAL学生部 GWイベントGit学ぼうぜの会 ハンズオン資料 - LOCAL学生部 GWイベント
Git学ぼうぜの会 ハンズオン資料 - LOCAL学生部 GWイベント
 
LT発表-第6回_共同作業におけるGit
LT発表-第6回_共同作業におけるGitLT発表-第6回_共同作業におけるGit
LT発表-第6回_共同作業におけるGit
 
GitHubの使い方
GitHubの使い方 GitHubの使い方
GitHubの使い方
 
プログラミング支援AI GitHub Copilot すごいの話
プログラミング支援AI GitHub Copilot すごいの話プログラミング支援AI GitHub Copilot すごいの話
プログラミング支援AI GitHub Copilot すごいの話
 
Git hub pagesで告知サイトを作ってみた
Git hub pagesで告知サイトを作ってみたGit hub pagesで告知サイトを作ってみた
Git hub pagesで告知サイトを作ってみた
 
Github第4章
Github第4章Github第4章
Github第4章
 
GitHub Enterpriseの導入事例と実践GitHub Actions
GitHub Enterpriseの導入事例と実践GitHub ActionsGitHub Enterpriseの導入事例と実践GitHub Actions
GitHub Enterpriseの導入事例と実践GitHub Actions
 
git-followup @明石高専2E
git-followup @明石高専2Egit-followup @明石高専2E
git-followup @明石高専2E
 

Recently uploaded

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 

Recently uploaded (8)

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 

GitHub勉強会

  • 2. GitHub勉強会(2019)@arusuDev Outline • Git/GitHubってなんだろう? • Gitを使うことのメリット • ローカルリポジトリを作ってみよう! • ソースをコミットしてみよう • GitHubにリモートリポジトリを作ってみよう • GitHubを使うことのメリット • Branch(ブランチ)とは? • Gitにおけるマージ • GitHubにおける開発の流れ • PullとPush • Pull request(コードのレビュー)とは? • ブランチモデルとは? • Issue機能を使ってみよう! • Project機能を使ってみよう! 2/112
  • 5. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 5/112 Gitってなんだろう? ファイルを管理したい時、そして古いバージョンを残したい時 こんな管理の方法をしませんか? (私はよくやります。)
  • 6. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 6/112 Gitってなんだろう? この方法だと、バージョンが増えてくるとぱっと見で このバージョンがどんなときだったのかわからず、たくさん開いたりすることになる ソースコードもこの管理の仕方をするとだんだん訳わからなくなってくる そこで登場するのが “Git”
  • 7. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 7/112 Gitを使うことのメリット Gitを使うと、ファイルの変更を記録することができる! 例えば次のようなプログラムがあるとします。 “Hello World”を”Hello Git”に変更した!
  • 8. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 8/112 Gitを使うことのメリット 前のバージョン(左)もとっておきたい… ってなったときに左にGit_Hello_v1.cpp 右にGit_Hello_v2.cpp みたいに管理するのが従来の方法になるよね。
  • 9. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 9/112 Gitを使うことのメリット でもこれって、変わってる部分1行だけだよね? 全部別ファイルにして保存するの管理しにくいし分かりづらい! そうそう、この色が変わったところだけを保存してくれれば、変更を知るには十分。 どこかにそんなシステムがないかなー??
  • 10. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 10/112 Gitを使うことのメリット そう、Gitならね。
  • 11. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 11/112 Gitを使うことのメリット Git を使うと、ファイルの変更だけを 記録することができる! ということで、まずは複数人数での開発にも欠かせない Gitの使い方を勉強していこう!
  • 12. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 12/112 ローカルリポジトリを作ってみよう! さて、Gitではいくつか専用の用語が出てくる。 なれるまでは、ちょっと大変だけどなれるとサクサクできるようになるよ! 予め言っておくと、これから説明する単語は 私の理解 で説明していくから正確な説明とは異なる場合があります。 (予防線) またこの勉強会では、VSCodeを使ってGitの管理をすることを 想定してます。ベースとしてコマンドラインでの処理をまず覚えて、 イメージが掴めたらVSCodeでの処理方法までふれられたら良いな
  • 13. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 13/112 ローカルリポジトリを作ってみよう! まず一番初めに出てくる単語は、 Repository(リポジトリ,レポジトリ) 自分はリポジトリって読んでるけど好きな方で呼べばいいと思う これは、Gitで管理するフォルダのことをさします。 リポジトリの中にあるファイルが管理対象になるってイメージだね。
  • 14. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 14/112 ローカルリポジトリを作ってみよう! まずは、手持ちのPCで好きな場所に、GitMeetingフォルダを作ろう。 作成した、GitMeetingフォルダに入ったら、このフォルダをリポジトリにします。 このコマンドを叩くと、 みたいに表示されるはず! $ mkdir GitMeeting $ cd GitMeeting $git init $ git init Initialized empty Git repository in C:/Users/Arusu/GitMeeting/.git/
  • 15. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 15/112 ローカルリポジトリを作ってみよう! コマンドを叩いて、.git (隠しフォルダ)っていうフォルダが 作成されていれば、おk! これで、GitMeetingフォルダがローカルリポジトリになって、このフォルダで の変更をGitが見ることができるようになりました! $ ls -al
  • 16. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 16/112 ソースをコミットしてみよう さて、次はなにかソースコードを追加してみよう! 適当にリポジトリ内で、Hello Worldのソースでも作成して、 Hello.cppとしてみよう。 プログラムが書き終わったら、保存して次のコマンドを叩いてみよう。 $ code Hello.cpp $ git status
  • 17. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 17/112 ソースをコミットしてみよう そうすると、次のような表示が多分出てくる。 これは、まだHello.cppの変更をgitで追ってないよ!っていう意味 $ git status On branch master No commits yet Untracked files: (use "git add <file>..." to include in what will be committed) Hello.cpp nothing added to commit but untracked files present (use "git add" to track)
  • 18. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 18/112 ソースをコミットしてみよう ソースコードを追跡対象(変更を追う)にしてみる。 そして、もう一度 を叩くと、赤かった部分が に変わっているはず! これで、gitでHello.cppが管理対象になります。 $ git add Hello.cpp $ git status new file: Hello.cpp
  • 19. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 19/112 ソースをコミットしてみよう でも、管理対象になっても、今の状態だと、どのタイミングに戻ればいいかわ からない! 今までの管理方法だと、この時の状態をv1,v2みたいにしてファイル分けし ているタイミングで、 gitではcommit(コミット)という操作を行います。
  • 20. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 20/112 ソースをコミットしてみよう Gitでコミットするコマンドは git commit –m “メッセージ” このメッセージの部分には、その変更で何をしたか、が分かるようなメッセージ を付けてあげると良いです。 後で述べる、複数人数で開発する場合は、コミットメッセージの書き方の ルールを相談しておくと、あの変更どこでやったっけ?っていうのがスムーズに 進んだりする、かも! $ git commit -m "はじめてのこみっと" [master (root-commit) 3cd0f76] はじめてのこみっと 1 file changed, 6 insertions(+) create mode 100644 Hello.cpp
  • 21. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 21/112 ソースをコミットしてみよう 次に、Hello.cppの中身を少し書き換えてみよう。 例として、今回は coutを1行増やしてみた。 #include <iostream> using namespace std; int main(void){ cout << "Hello,World" << endl; cout << "Hello,Git" << endl; }
  • 22. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 22/112 ソースをコミットしてみよう この変更を保存した状態で、 コマンドを実行すると、 のような表示が出て、Hello.cppが変更されていて、commitされていない ことが分かります。 さっきと同じようにcommitしてみよう。 $ git status modified: Hello.cpp $ git add Hello.cpp $ git commit -m "Update : coutを追加したよ"
  • 23. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 23/112 ソースをコミットしてみよう コマンドを使うと、今までの変更が見ることができるよ。 基本的なgitの操作の流れは、 $ git log ソースの編集 コミットの対象にする (ステージング) git add (filename) コミット (変更の記録) git commit –m “message”
  • 24. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 24/112 GitHubってなんだろう? Gitの最も基礎的な使い方を学んだので、 次は GitHub について見ていこう
  • 25. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 25/112 GitHubってなんだろう? GitHubとは、オンライン上で Gitのリポジトリを共有するためのプラットフォームである。(私の解釈) Gitを共有・複数人数で開発することに特化したクラウドサービスみたいなも のかな。
  • 26. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 26/112 ローカルリポジトリとリモートリポジトリ Gitで使用するリポジトリをローカルリポジトリ GitHubのリポジトリをリモートリポジトリっていう。 ローカルで作業した内容をリモートリポジトリに反映させることで、ソースコード の共有ができるシステムになってる。 Local rep commit commit commit GitHub Remote rep ローカルでの作業をリモートに反映させる
  • 27. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 27/112 リモートリポジトリを作ってみよう なにはともあれ、一回やってみないとイメージが掴めないはず! GitHubで、リモートリポジトリを作ってみよう。 まずはGitHubのサイト (マイページでも可) https://github.com/ にアクセス(ログインしてね) これは私のマイページ
  • 28. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 28/112 リモートリポジトリを作ってみよう 画面の右上、自分のアイコンが設定されている画像の隣に + マークがあるのでクリック! New repositoryを選択します。
  • 29. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 29/112 リモートリポジトリを作ってみよう リモートリポジトリの新規作成の 画面にいきます。 今回は、Repository nameに、 GitMeeting と入れてみましょう。 他の人からリポジトリが見えるかどうかを 設定できますが、Publicで いいんじゃないかな。 Initialize~にはチェックを入れず Create repository をおします!
  • 30. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 30/112 リモートリポジトリを作ってみよう これでリモートリポジトリが作成されました! 今回は、ローカルですでにリポジトリがある ので、’…or push an existing~’ って書いてあるところを実行しましょう。 ローカルでさっき作業した、ターミナルに 戻って、
  • 31. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 31/112 リモートリポジトリを作ってみよう サイトに書いてあるコマンドを入力します。 1行目は、ローカルのリポジトリに、リモート(GitHub)のURLはここだよ、 って教えるコマンドです。 git remote add origin https://github.com/arusuDev/GitMeeting.git git push -u origin master Local rep GitHub Remote rep ローカルのリポジトリにリモートのリポジトリを連携させる
  • 32. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 32/112 リモートリポジトリを作ってみよう 2行目は、pushコマンドと呼ばれるコマンドで、ローカルのcommitをリモートに 反映させるときに使います。originというのはリモートだよっていう指定です。 git remote add origin https://github.com/arusuDev/GitMeeting.git git push -u origin master Local rep commit commit commit GitHub Remote rep ローカルでの作業をリモートに反映させる(push)
  • 33. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 33/112 リモートリポジトリを作ってみよう コマンドを実行したら、GitHubのサイトをリロード(F5)してみよう。 上手くいってれば、説明の画面から、 こういう画面に切り替わるはず! これで、リモートリポジトリが完成!
  • 34. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 34/112 GitHubを使うことのメリット ふむふむ、ローカルリポジトリでのコミットの内容をネット上に公開できるのね。 で?それだけ??? ってなると思うんだけど、GitHubを使うと 複数人数でプログラムを開発することができるようになります。
  • 35. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 35/112 GitHubを使うことのメリット GitHubを使わない場合、複数人数で開発するときは、 AさんとBさんがそれぞれ別のコードを作業してるときは良いけど、 A BC ソースコード A B
  • 36. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 36/112 GitHubを使うことのメリット GitHubを使わない場合、複数人数で開発するときは、 同じソースコードをいじってしまった場合、ソースコードの変更を合 わせるのが困難になってしまう…。 A BC ソースコード A B 競合
  • 37. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 37/112 GitHubを使うことのメリット この問題をGitHubを使うとどうなるかというと… AさんとBさんがソースコードAの別の場所をそれぞれ作業するとす ると、Gitではコミットの情報(変更した情報)を保存して A BC ソースコード A B A BXX行に~を書き込んで、 YY行の行を削除したよ ZZ行に~を書き込んで、 AA行の行を削除したよ リモートリポジトリ(Github)
  • 38. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 38/112 GitHubを使うことのメリット 同じソースコードでも、AとBで作業箇所が被っていなければそれぞ れのコードの変更を取り込むことができます。(マージ) A A BXX行に~を書き込んで、 YY行の行を削除したよ ZZ行に~を書き込んで、 AA行の行を削除したよ Aの変更を取り込む A‘ Bの変更を取り込む New A
  • 39. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 39/112 GitHubを使うことのメリット GitHubを使って開発をするときのイメージ Remote Repository Local repository commit ローカル環境 Push: ローカルの変更をリモートへ送信 Pull: リモートの変更を(他の人による変更) ローカルへ反映 GitHub commit commit
  • 40. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 40/112 Branch(ブランチ)とは? Git/GitHubには、ブランチという機能があります。 Gitではじめリポジトリを作成すると、 masterという名前のブランチが作成されます。 リポジトリ master
  • 41. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 41/112 Branch(ブランチ)とは? Gitでは、ローカルで作業してコミットをすると、 今いるブランチに変更がコミットされます。 リポジトリ master First Commit Update: xxxx
  • 42. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 42/112 Branch(ブランチ)とは? Aという機能と、Bという機能をプログラムに追加したくなったとしましょう。 GitHubでは、範囲が被っていなければ同時に作業することは可能です。 リポジトリ master First Commit Update: xxxx
  • 43. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 43/112 Branch(ブランチ)とは? よし、じゃあ作業しよう! となって、AさんとBさんが機能Aと機能Bを同時に実装していくと… リポジトリ master 機能Aのコミット1 機能Aのコミット2 機能Bのコミット1 機能Bのコミット2
  • 44. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 44/112 Branch(ブランチ)とは? なんだか、変更履歴がちょっとぐちゃぐちゃに… しかもこのときに例えば問題が起きて、機能Bのコミットまで戻りたい…ってな ると、 リポジトリ master 機能Aのコミット1 機能Aのコミット2 機能Bのコミット1 機能Bのコミット2
  • 45. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 45/112 Branch(ブランチ)とは? Aさんが開発していた機能Aのコミット2まで消えてしまいました。 これだと管理がぐちゃぐちゃになってしまいます。 リポジトリ master 機能Aのコミット1 機能Bのコミット1
  • 46. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 46/112 Branch(ブランチ)とは? そこで、ブランチという機能を使うと、 コミットの流れを分岐させることができます。 機能Aの実装のために、Aというブランチを、 機能Bの実装のために、Bというブランチを切ると… リポジトリ master
  • 47. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 47/112 Branch(ブランチ)とは? そこで、ブランチという機能を使うと、 コミットの流れを分岐させることができます。 機能Aの実装のために、Aというブランチを、 機能Bの実装のために、Bというブランチを切ると… リポジトリ master Branch : A Branch : B 機能Aのコミット1 機能Aのコミット2 機能Bのコミット1 機能Bのコミット2
  • 48. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 48/112 Branch(ブランチ)とは? ブランチが分けられたことで、それぞれの機能がmasterの特定のポイントか ら分岐され、別々の履歴にコミットされるようになり、機能毎にまとまった開 発ができるようになりました! リポジトリ master Branch : A Branch : B 機能Aのコミット1 機能Aのコミット2 機能Bのコミット1 機能Bのコミット2
  • 49. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 49/112 Branch(ブランチ)とは? ただ、このままだと、機能Aを持ったプログラムと、機能Bを持ったプログラムが 別々に存在するだけになってしまうので、それらを合わせる必要があります。 ブランチでの作業を、もとのブランチ(この例だとmaster)に反映させることを、 と、いいます。 リポジトリ master Branch : A Branch : B マージ(merge)
  • 50. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 50/112 Gitにおけるマージ マージをすると、マージコミット、と呼ばれるものが作成されます。 リポジトリ master Branch : A Branch : B MasterへのAのマージコミット MasterへのBのマージコミット
  • 51. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 51/112 Gitにおけるマージ これによって、masterブランチに機能Aと機能Bを持ったプログラムが 完成します。 リポジトリ master Branch : A Branch : B 機能AとBを持ったプログラム
  • 52. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 52/112 Gitにおけるマージ Gitを使って開発するときは、主に次の流れで開発していきます。 メインの開発するブランチ から機能毎に分けた ブランチを切る(作成する) 機能毎に分けたブランチで 開発をすすめる。 ブランチを切るもとの ブランチにマージを行う。 リポジトリ master Branch : A Branch : B
  • 53. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 53/112 ローカルでブランチを切ってみよう 前に作ったローカルリポジトリ、GitMeetingを開きます。 まず、次のコマンドを利用してみよう。 このコマンドを利用すると、 のような表示が出ると思います。 これは、今いるリポジトリに、masterブランチがあるということを示しています。 $ git branch $ git branch * master
  • 54. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 54/112 ローカルでブランチを切ってみよう 今いるmasterブランチから、新たなブランチを切って(作成して)みよう。 例では、function_Aという名前のブランチを作成しています。 もう一度、 コマンドを利用すると、 という表示が出て、function_Aというブランチが作成されていること がわかります。 $ git branch function_A $ git branch $ git branch function_A * master
  • 55. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 55/112 ローカルでブランチを切ってみよう しかし、この表示が示している通り、branchを作成しただけでは、まだ masterブランチにいることがわかります。 そこで、checkoutコマンドを使って、ブランチを移動します。 このコマンドを使って、git branchコマンドを使うと、 移動できてますね! $ git branch function_A * master $ git checkout function_A Switched to branch 'function_A' $ git branch * function_A master
  • 56. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 56/112 ローカルでブランチを切ってみよう(コマンド) 新しいブランチを作成するコマンドは、 ブランチを移動するコマンドは、 また、これらをまとめて行うコマンドとして、 のようなcheckoutのオプションも存在します。 $ git branch (branch_name) $ git checkout (branch_name) $ git checkout -b function_B Switched to a new branch 'function_B' 新しいブランチは現在のブランチから作成される点に注意!
  • 57. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 57/112 ローカルでブランチを切ってみよう さて、新しく作成したブランチ function_A でソースコードをなにか 編集してみよう。 例として、function_Aを実装してみました。
  • 58. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 58/112 ローカルでブランチを切ってみよう 今現在、リポジトリは次のような状態になっています。 $ git add Hello.cpp $ git commit -m "Update : function_A" [function_A 2efddae] Update : function_A 1 file changed, 5 insertions(+) リポジトリ master Branch : A Update:function_A
  • 59. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 59/112 ローカルでブランチを切ってみよう 試しに、masterブランチに移動してみましょう。 この状態で、先程変更を加えたファイルを見てみると、その変更がなかったこ とになっていると思います。 リポジトリ master Branch : A $ git checkout master Switched to branch 'master' Your branch is up to date with 'origin/master'. いまここ!
  • 60. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 60/112 ローカルでブランチをマージしてみよう Function_Aブランチでの作業はすでに終わっているので、 変更をmasterブランチに取り込んでみましょう。 まずは、取り込みたいベースとなるブランチに移動します。 今回はmasterブランチに function_Aブランチをマージしたいので、 masterブランチに移動します。(checkoutコマンド) リポジトリ master Branch : A ここにBranch:Aの変更を取り込みたい。
  • 61. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 61/112 ローカルでブランチをマージしてみよう ブランチをマージするには次のコマンドを利用します。 すると、次のような表示が出ると思います。 今回の例だと、マージによって、Hello.cppに5行分の追加が 行われたことがわかります。 $ git merge function_A Updating 38efb93..2efddae Fast-forward Hello.cpp | 5 +++++ 1 file changed, 5 insertions(+)
  • 62. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 62/112 ローカルでブランチをマージしてみよう ローカルで、マージするときのイメージを持って、 次のGitHubで開発する時のイメージを付けていこう! リポジトリ master Branch : A function_Aの変更が masterにマージされた!
  • 63. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 63/112 GitHubにおける開発の流れ GitHubで複数人数開発するときのの流れは次のようになります。 初回 リモートリポジトリ からcloneする [clone] 開発のための ブランチを切る [checkout] 作成したブランチ で作業をコミット [commit] リモートリポジトリ に変更を送信 [push] コードのレビュー を依頼する [pull request] コードの変更を開発 ブランチに取り込む [merge] コードの変更を ローカルに取り込む [pull] 開発
  • 64. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 64/112 GitHubにおける開発の流れ GitHubで複数人数開発するときのの流れは次のようになります。 初回 リモートリポジトリ からcloneする [clone] 開発のための ブランチを切る [checkout] 作成したブランチ で作業をコミット [commit] リモートリポジトリ に変更を送信 [push] コードのレビュー を依頼する [pull request] コードの変更を開発 ブランチに取り込む [merge] コードの変更を ローカルに取り込む [pull] 開発 Githubのソースコードをローカルにダウンロードするコマンド リモートと同様のローカルリポジトリが作成されます。 git clone URL
  • 65. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 65/112 GitHubにおける開発の流れ GitHubで複数人数開発する時の流れは次のようになります。 開発のための ブランチを切る [checkout] 作成したブランチ で作業をコミット [commit] リモートリポジトリ に変更を送信 [push] コードのレビュー を依頼する [pull request] コードの変更を開発 ブランチに取り込む [merge] コードの変更を ローカルに取り込む [pull] リモートでの作業 ローカルでの作業
  • 66. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 66/112 pullコマンド pullコマンドを使うと,今現在いるローカルのブランチに、リモートリポジトリの 変更をマージすることができます。 $ git pull origin (branch_name) Remote Rep master Remote (GitHub) Local Local Rep master pull
  • 67. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 67/112 pullコマンド pullコマンドを使うと,今現在いるローカルのブランチに、リモートリポジトリの 変更をマージすることができます。(リモートとローカルを同期させるイメージ) $ git pull origin (branch_name) Remote Rep master Remote (GitHub) Local Local Rep master pull
  • 68. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 68/112 GitHubにおける開発の流れ GitHubで複数人数開発する時の流れは次のようになります。 開発のための ブランチを切る [checkout] 作成したブランチ で作業をコミット [commit] リモートリポジトリ に変更を送信 [push] コードのレビュー を依頼する [pull request] コードの変更を開発 ブランチに取り込む [merge] コードの変更を ローカルに取り込む [pull] リモートでの作業 ローカルでの作業
  • 69. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 69/112 checkout/commit これは前にやったローカルでの作業と一緒です! 実装したい機能の名前をつけたbranchを切って、 作業したら、作業したファイルをステージング(add)して、 コミットメッセージをつけてコミットしましょう! $ git checkout -b feature $ git add (file) $ git commit –m “commit message”
  • 70. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 70/112 GitHubにおける開発の流れ GitHubで複数人数開発する時の流れは次のようになります。 開発のための ブランチを切る [checkout] 作成したブランチ で作業をコミット [commit] リモートリポジトリ に変更を送信 [push] コードのレビュー を依頼する [pull request] コードの変更を開発 ブランチに取り込む [merge] コードの変更を ローカルに取り込む [pull] リモートでの作業 ローカルでの作業
  • 71. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 71/112 pushコマンド コミットした内容を今度はリモートリポジトリに送信しよう。 このコマンドで、リモートリポジトリに現在のコミット内容を送信することができ る。originが前についているブランチ名は、リモートのブランチ名であることを 示しています。 ローカルのmasterブランチをpushするときは、 となります。 git push origin (branch_name) git push origin master
  • 72. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 72/112 pushコマンド Remote Rep master Remote (GitHub) Local Local Rep master push
  • 73. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 73/112 pushコマンド ローカルでの変更をリモートに反映します。 Remote Rep master Remote (GitHub) Local Local Rep master push
  • 74. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 74/112 GitHubにおける開発の流れ GitHubで複数人数開発する時の流れは次のようになります。 開発のための ブランチを切る [checkout] 作成したブランチ で作業をコミット [commit] リモートリポジトリ に変更を送信 [push] コードのレビュー を依頼する [pull request] コードの変更を開発 ブランチに取り込む [merge] コードの変更を ローカルに取り込む [pull] リモートでの作業 ローカルでの作業
  • 75. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 75/112 pull request(コードのレビュー依頼) さて、ここに来てまた馴染みのない単語が出てきました。 これは複数人数で開発するときに、使うものです。 例えば、AさんとBさんで開発をしていたとしましょう。 Remote master Aさん master feature Aさんがfeatureブランチで 新しい機能を開発
  • 76. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 76/112 pull request(コードのレビュー依頼) Aさんは機能を開発したので、featureブランチをリモートにpushしました。 Remote master Aさん master feature feature push
  • 77. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 77/112 pull request(コードのレビュー依頼) Aさんは機能を開発したので、featureブランチをリモートにpushしました。 そしてAさんは、masterブランチにマージを行いました。 Remote master Aさん master feature feature masterブランチに featureブランチをマージ
  • 78. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 78/112 pull request(コードのレビュー依頼) 小規模な開発の場合は、あまり問題になることは少ないですが、 例として、Aさんの作ったコードにバグが存在したとしましょう。 Remote master Aさん master feature feature
  • 79. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 79/112 pull request(コードのレビュー依頼) そうすると、一緒に開発していた人たちのメインの開発ブランチにバグが混在 することになってしまいます。開発しているブランチに色んな人が好き勝手に マージしてしまうと、いろんなバグや整合性がとれなくなってしまう恐れがある のです。 Remote master Aさん master feature feature
  • 80. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 80/112 pull request(コードのレビュー依頼) そこで登場するのがこの、pull request(通称プルリク)という機能です。 これは、一緒に開発を行っている人に、コードのレビューを依頼するという機 能になっていて、GitHub上から行うことができます。 Remote master Aさん feature featureブランチをmasterブランチに マージしたいからレビューしてくれ
  • 81. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 81/112 pull request(コードのレビュー依頼) そこで登場するのがこの、pull request(通称プルリク)という機能です。 これは、一緒に開発を行っている人に、コードのレビューを依頼するという機 能になっていて、GitHub上から行うことができます。 Remote master Aさん feature featureブランチをmasterブランチに マージしたいからレビューしてくれ masterブランチに featureブランチを マージしたい pull request Bさん レビュー依頼
  • 82. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 82/112 pull request(コードのレビュー依頼) Bさんは受け取ったプルリクエストの内容を見て、問題がないと判断した場合 には、マージを Remote master feature マージ
  • 83. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 83/112 pull request(コードのレビュー依頼) Bさんは受け取ったプルリクエストの内容を見て、問題がないと判断した場合 には、マージを 問題点がある(コード、実際に動かしてみて)と思った場合には、そのこと を開発者に伝えて、再度変更をpushしてもらうように依頼します。 Remote master feature マージ Remote master feature Bさん:この辺の機能 おかしくない? Aさん:確かに! 修正します。
  • 84. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 84/112 pull request(コードのレビュー依頼) Bさんは受け取ったプルリクエストの内容を見て、問題がないと判断した場合 には、マージを 問題点がある(コード、実際に動かしてみて)と思った場合には、そのこと を開発者に伝えて、再度変更をpushしてもらうように依頼します。 Remote master feature マージ Remote master feature Aさん:修正しました! Bさん:直ってるの確認 したのでマージ!
  • 85. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 85/112 pull request(コードのレビュー依頼) Bさんは受け取ったプルリクエストの内容を見て、問題がないと判断した場合 には、マージを 問題点がある(コード、実際に動かしてみて)と思った場合には、そのこと を開発者に伝えて、再度変更をpushしてもらうように依頼します。 Remote master feature マージ Remote master feature バグを除けた!
  • 86. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 86/112 pull request(コードのレビュー依頼) このようにコードをレビューすることによって、コードについて議論する場であっ たり、品質の高いコードを作ることができるようにする機能がpull requestと 呼ばれる機能です。 実際にGitHubで、どのようにしてプルリクエストが 作成されるか見ていきましょう。
  • 87. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 87/112 pull request(コードのレビュー依頼) GitHub上では、新しいブランチでコードのpushを行ったときに、 次のような表示がでます。
  • 88. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 88/112 pull request(コードのレビュー依頼) Compare & pull requestをクリックすると、このような画面になります。 Baseにマージをされるブランチを、compareに実装した機能のあるブランチ を選択します。 Writeの中には、 レビューしてもらうのに 参考になるような内容を 書くと良いです! (markdownが使えます)
  • 89. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 89/112 89 pull request(コードのレビュー依頼) Pull requestを作成すると、 上のタブでPull requestの欄の 数字が増えます。 ここには前のページで記述した 内容が表示されます。 ここでは、他の人が同じ行から作業している コンフリクト(衝突)がないかを表示します。 コンフリクトがなければ、チェックマークが付き マージは問題なく行われます。 Pull requestに対してなんらかのメッセージを 送る場合はこっちに書きます。
  • 90. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 90/112 90 pull request(コードのレビュー依頼) Pull requestでレビューをする場合 GitHub上で行うときは、 右のFile changedをクリックします。
  • 91. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 91/112 pull request(コードのレビュー依頼) File changedをクリックすると追加された行が緑、削除された行が赤で表 示されます。実装された機能が問題なければ、Review changesをクリッ クし、 Review changes
  • 92. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 92/112 pull request(コードのレビュー依頼) コメントや変更のリクエストを書いて、Submit reviewを押します。
  • 93. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 93/112 pull request(コードのレビュー依頼) コメントや変更のリクエストを書いて、Submit reviewを押します。 問題がなければここからマージを行いましょう!
  • 94. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 94/112 pull request(コードのレビュー依頼) Confirm mergeをクリック!
  • 95. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 95/112 pull request(コードのレビュー依頼) これでmasterブランチに変更がマージされました。 開発に使ったブランチを削除するかどうかは、開発の規模によると思うので、 開発する人たちの中で決めるのが良いと思います。 あまりにブランチが増えすぎるとそれはそれで管理が大変になってくることも…
  • 96. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 96/112 GitHubにおける開発の流れ GitHubで複数人数開発する時の流れは次のようになります。 開発のための ブランチを切る [checkout] 作成したブランチ で作業をコミット [commit] リモートリポジトリ に変更を送信 [push] コードのレビュー を依頼する [pull request] コードの変更を開発 ブランチに取り込む [merge] コードの変更を ローカルに取り込む [pull] リモートでの作業 ローカルでの作業
  • 97. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 97/112 pullに戻る mergeまでいったのでここまでが開発のイテレーションが一巡します。 開発メインのブランチ(例だとmaster)がマージされて更新されているので、 pullでローカルのmasterを更新して、ブランチを切って、と進んでいきます。 Remote Rep master Remote (GitHub) Local Local Rep master pull $ git pull origin master
  • 98. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 98/112 ブランチモデル GitHubでの開発の流れはここまでで抑えてきました。 Gitで開発するときに、どのようなルールでブランチを切るのかということを決め たものがブランチモデルと言います。 Gitではいろいろなブランチモデルが提案されています ここまで例で上げてきたものは、 masterとfeatureの二種類で開発するものを例としてあげてきました。 Repository master feature feature
  • 99. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 99/112 ブランチモデル この例に上げてきた手法では、常にmasterのコードがマージによって 書き換わっていくため、リリース時点や安定版のコードを保存することが できないという問題点があります。 そこで、master + develop + featureの三種類のブランチを使って管 理する方法などがあります。 Repository master featureA featureB develop v0.1 v0.2 featureC
  • 100. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 100/112 ブランチモデル ブランチモデルには様々なモデルが有り、開発の規模に合わせたブランチモデ ルを利用すると良いと思います。(Google等でブランチモデルなどと検索す ると色々と出てきます。 Repository master featureA featureB develop v0.1 v0.2 HotFix featureC
  • 101. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 101/112 Issue機能を使ってみよう GitHubにはissueという機能がある。 issueは、 ・こういう機能を実装したらどうだろう?(追加機能) ・こういう問題があるから直さないといけないよね(課題) などのタスク管理ができる機能になっています。
  • 102. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 102/112 Issue機能を使ってみよう Issueのタブをクリックすると、 右のような画面が開く。 右にあるNew issueを クリックすると新たなタスクを 登録することができる。
  • 103. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 103/112 Issue機能を使ってみよう Titleにはその提案する機能や問題について見て分かるようなものを書こう。 Leave a commentのところは、Titleだけで事足りてしまう場合は 書かなくても良いかもしれないけれど、他の人の理解の助けに なりそうなことを書くと 優しいです。 右側にいくつか項目が あるのでそっちについて 少し見ていこう。
  • 104. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 104/112 Issue機能を使ってみよう これらの項目は右側の歯車をクリックすると 設定できる項目が出てきます。 ・Assignees 担当者を決める機能(一人だと自分だけ出てくる…) ・Labels 問題がどういう内容なのか (バグなのか、新しい機能なのかとか、自分で作ることもできるよ!) ・Projects あとで説明するProjectという機能に紐付け! ・Milestone Issueの期限を決めたりするのに使えるみたい
  • 105. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 105/112 Issue機能を使ってみよう 試しに、issueを作成してみると次のような画面になる。 このissue一つにつき、一つブランチを切って作業するように私はしています。 Issueに取り組んでいるときに、 調べたことや出てきた問題点をコメントに 記しておけば、あとで開発するときに 役立つ可能性があるのでおすすめです。
  • 106. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 106/112 Project機能を使ってみよう 今回説明する機能の最後になります。GitHubにはプロジェクトの管理を するための機能として、 Projects機能があります。 Projectsタブを開いて、 Create a projectボタンを 押してみましょう。
  • 107. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 107/112 Project機能を使ってみよう Projects機能を使うと、issueを付箋のような形で管理することができます。 まずは付箋を貼り付けるボード(看板)を作成します。 ボードの名前は小規模なプロジェクト であれば好きな名前で良いと思います。
  • 108. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 108/112 Project機能を使ってみよう プロジェクトボードのテンプレートがあるので、 好きなものを選びます。 個人的なおすすめは “Automated Kanban” です。 これはissueの作成時にこのプロジェクトを 作成すると勝手に紐付けしてカードを 追加してくれるオプションになります。
  • 109. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 109/112 Project機能を使ってみよう プロジェクトボードのテンプレートがあるので、 好きなものを選びます。 個人的なおすすめは “Automated Kanban” です。 これはissueの作成時にこのプロジェクトを 作成すると勝手に紐付けしてカードを 追加してくれるオプションになります。
  • 110. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 110/112 110 Project機能を使ってみよう 作成すると次のような画面になります。Todoには簡単な使い方の説明(英 語)が乗っています。必要でなければ右上の・・・から ”Archive all cards” してしまいましょう。
  • 111. © Basic Inc. All Rights Reserved. GitHub勉強会(2019)@arusuDev 111/112 Project機能を使ってみよう 画面右上のAdd cardsをクリックすると、今現在存在する issue と pull requeset が表示されるので、To doに持っていきましょう。 カードは自由に移動することができます。これによって、今やらないといけない タスク、”To do”や 作業中である “In progress” 終了後である “Done” を管理することが できます。