SlideShare a Scribd company logo
Gitで
バージョン管理しよう
目次
概要
環境準備
実践
概要
バージョン管理ツールとは
 その名のとおり、バージョンを管理するツール
例. 人類補完計画 ver0.1
ガンダム 試作2号機
上記赤枠の場所が
バージョン
使うといいこと
 更新の履歴が残る
 「誰」が「どのファイル」の「どの部分」を更新したの
か分かる
 履歴からの復元が可能→バックアップの手間が減る
 他人の編集した最新ファイルを上書きしようとすると警
告が出る
いいこと満載!
おおまかな仕組み
③
リポジトリへ変更点を反映させる(登録)
②
リポジトリからデータを取得する
① リポジトリ
システムの開発プロジェクトに関連するデータの
一元的な貯蔵庫
①
②
③
②分散型①集中型
バージョン管理システムの比較 1/3
①集中型
バージョン管理システムの比較 2/3
・長所
構造がシンプル
個人制作向き
・集中型のVCS
Subversion, CVS
バージョン管理システムの比較 3/3
②分散型
・長所
リポジトリにアクセスしやすい
チーム制作向き
・分散型のVCS
Git, Mercurial
ただし、ゲームジャムなどに備えて、
個人でもGitに慣れておこう
Gitとは
 複数あるバージョン管理システムの一つ
 現在、最も高いシェアを誇る
SourceTreeとは
 GitやMercurialのシステム上で、バー
ジョンを管理するツール の一つ
Gitクライアントのおおまかな使い方
例)すでにあるリポジトリから持ってくる場合の流れ
①クローンでローカルにファイルを複製
②ファイルを編集してコミット
(ローカルリポジトリが更新される)
③プッシュしてサーバーのリポジトリに送る
④[次回作業をするとき] 他の人が更新をしている
かもしれないので、まずプルをして最新ファイルにする
以下、② ~ ④ 繰り返し
環境準備
注意
 ここから、かなりの量の作業を行います。
 遅れてあとから挽回するのは困難なので、
しっかりついてきてね。
 分からない場合は、周りの人と助け合いま
しょう。
 うまくいかない場合は、授業の進行を止めて
下さい
環境準備
1. Gmailを用意する
2. Gitをインストール
3. SourceTreeをインストール
Gmailの取り方
http://www.google.co.jp/
ブラウザで
Googleのサイト
を開く
Git SourceTreeでバージョン管理しよう
必要な項目を埋めて、
「次のステップ」
メールアドレスとパスワードは
忘れずメモしておきましょう
 電話番号の確認を求められることもありますが、
画面の指示に従って認証を行ってください。
 ここだけ、必要な場合は携帯電話を操作して構いま
せん。
Git SourceTreeでバージョン管理しよう
Gmail取得完了
Gitの
インストール
https://git-scm.com/
Git-2.12.0-64-bit.exeを起動し、
すべてデフォルトのオプション
でインストールします。
SourceTreeの
インストール
https://ja.atlassian.com/software/sourcetree
アカウント登録
「Sign up」を押して、
アカウントを作成します
必要な項目を埋めて、
「Sign up」
ロボットでない証明として、
クイズに答える必要があります。
確認のメールがGmailに
届くので、ブラウザで
メールを開きます
メールアドレスが
正しいことを確認します
ログイン後の画面になれば、
登録完了
作成したアカウントでログイン
SourceTreeの
インストール画面に
戻る
Gmailのアドレスを
入力してログイン
Git SourceTreeでバージョン管理しよう
後でGitHubにも
登録するが、
一旦スキップ
しておきます
Git SourceTreeでバージョン管理しよう
Mercurialはインストールし
ていないので、
見つからなかったという
メッセージが出ます。
今回は使いません。
Gitと比べてみたければ、
入れてみるのも
よいでしょう
インストール完了
Git SourceTreeでバージョン管理しよう
個人制作でも使う機能
ローカルリポジトリの
作成
ローカルリポジトリの作成(1/5)
これ!
ローカルリポジトリは
自分のPC上にあって、
自分だけの変更履歴を
管理しています
ローカルリポジトリとは
エクスプローラで、
バージョン管理したいプロジェクト用
のフォルダを作っておく。
フォルダ名は任意だが、日本語は
使わないこと。
既にソースコード等が
入っていてもよい。
ローカルリポジトリの作成(2/5)
ローカルリポジトリの作成(3/5)
SourceTreeを
操作します
ローカルリポジトリの作成(4/5)
フォルダ名と同じ
リポジトリ名になる
(変更も可能)
作成したフォルダ
を選択
成功すると、
プロジェクトフォルダ内に
「.git」という隠しフォルダが
できている
これはGitの管理データなので、
勝手に消したり書き換えては
いけません
ローカルリポジトリの作成(5/5)
コミット
コミット(1/8)
 コミットとは、変更をローカルリポジトリに
反映すること(バックアップ)
 何かキリのいいタイミングでするとよい
 (例:機能を一つ追加した時、帰宅タイミングなど)
1つ1つが
コミット
コミット(2/8)
ソースファイルを作
成し、追加してみる
プロジェクトフォル
ダ内で右クリックか
ら、ファイル作成
ファイル名を適当に変更し、
cppファイルにする
コミット(3/8)
VisualStudioで開いて編集
(ビルドしないので適当に)
書き換えたらCtrl+Sで保存
コミット(4/8)
コミット(5/8)
②変更があると、
このように出る
①コミットを押す
③ここをクリックして、
変更情報を上へ
④.何を変更したか、言葉
で補足しておく
⑤.コミット確定
コミット(7/8)
⑥.ブランチを選択
⑦.変更履歴が
表示されている
コミット(8/8)
コミット(9/9)
色々変更して、さらにコミットを繰り返してみよう。
やってみよう
★手順一覧
① ソースコードをさらに書き換えて保存
② 他にもソースコードを追加してみる
③ 画像ファイルなども追加してみる
GitHubに登録
GitHubに登録(1/9)
これ!
GitHubとは
GitHubは、リモートリポジトリ
を提供するサービスの1つで、
クラウド上でバージョン管理を
行えます。
 クラウド上にデータがあるので、
PCが故障しても復旧できる
 公開リポジトリを作れるので、
他人にコードを見てもらいやすい
(就活・先輩からのアドバイス)
 プルリクエストで、第三者から簡単に
修正案を受けることができる
GitHubを使うメリット
GitHubに登録(2/9)
https://github.com/
GitHubに登録(3/9)
必要な項目を埋めて、
「Create an account」
GitHubに登録(4/9)
無料プランを選択
して、次へ
GitHubに登録(5/9)
自分の技能レベルを
選択して、次へ
GitHubに登録(6/9)
この画面が出たら、
Gmailを受信トレイを
開きます
GitHubに登録(7/9)
Gmailの受信トレイに
[GitHub] Please verify your email address.
というメールが来ているはずなので、
開いて、
「Verify email address」のボタンを押します
GitHubに登録(8/9)
左上に小さく
「Your email was verified.」
と出たら完了!
GitHubに登録(9/9)
リモートリポジトリの
作成
リモートリポジトリの作成(1/4)
GitHub上
に
作成
リモートリポジトリの作成(2/4)
リモートリポジトリの作成(3/4)
ローカルリポジトリと
同じ名前を入力
リモートリポジトリの作成(4/4)
このアドレスで
リモートリポジトリに
アクセスするので、
アドレスをコピーしておく
プッシュ
プッシュ(1/10)
ローカルリポジトリの
変更内容を、
リモートリポジトリに
反映することを
「プッシュ」という
プッシュ(2/10)
SourceTreeの画面を
操作。
プッシュ(3/10)
リモートリポジトリ
を設定します
プッシュ(4/10)
GitHubでコピーした
アドレスを貼り付け
GitHubのユーザー名を
入力
プッシュ(5/10)
設定完了
プッシュ(6/10)
教室の環境に
合わせて、
プロキシサーバの
設定をします
プッシュ(7/10)
ブラウザと同じプロキシを
使う設定
プッシュ(8/10)
一人の場合、
masterブランチに
プッシュします
(デフォルトのまま)
①
②
③
プッシュ(9/10)
GitHubの
認証ウィンドウが出るので、
IDとパスワードを入れて
ログインします
プッシュ(10/10)
プッシュが完了すると、
ブラウザでGitHubに
入っても、
ファイル群が確認できます。
ソースコードがサーバに
バックアップされるので、
万一PCが故障しても
復旧できます。
無視リスト(.gitignore)
無視リスト(1/7)
 プロジェクト内にあって、バージョン管理から無視する
ファイルのリストを記述
 どういうファイルを無視するべきか?
 ファイルを開いたりビルドする度に自動生成されるファイル
(exe、デバッグ情報など)
 リストを自分で書いてもいいけど・・・ネットでベースを探そう。
無視リスト(2/7)
https://github.com/github/gitignore
Zipを落として
解凍します
無視リスト(3/7)
https://github.com/github/gitignore
「VisualStudio.gitignore」
をプロジェクトフォルダ
の直下にコピーします
無視リスト(4/7)
https://github.com/github/gitignore
「.gitignore.」と
リネームします
無視リスト(5/7)
https://github.com/github/gitignore
メッセージが出るので
「はい」を押すと
末尾のドットが取れて
「.gitignore」
というファイル名に変
更されます
無視リスト(6/7)
注意点
SourceTreeを開いた状態で
無視リストを追加しても、
即座に反映されません。
.gitignoreをプロジェクト
フォルダに入れたら、一度
Source Treeを再起動してから
コミットしましょう。
無視リスト(7/7)
新たにDirectXTKの
プロジェクトを作成し、
無視リストも
追加した状態で、
プッシュしてみよう。
やってみよう
★順番
① プロジェクト作成(Visual Studio)
② ローカルリポジトリ作成(Source Tree)
③ 無視リスト追加(エクスプローラ)
④ コミット(Source Tree)
⑤ GitHubリモートリポジトリ作成(ブラウザ)
⑥ GitHub設定(Source Tree)
⑦ プッシュ(Source Tree)
チーム制作で使う機能
リポジトリの共有
リポジトリの共有(1/6)
ブラウザで
GitHub上の
リモートリポジトリ
を開きます
他の人とソースを
共有するために、
コラボレータとして
招待します
①
②
リポジトリの共有(2/6)
再度パスワードを
要求されるので
入力します
リポジトリの共有(3/6)
招待したい相手の
GitHubの
Usernameを
入力して、ポップ
アップリストから
選択すると、
「Add
collaborator」ボ
タンが有効になり
ます
リポジトリの共有(4/6)
招待された側にメールが
届くので、招待を受けます
リポジトリの共有(5/6)
招待された側にメールが
届くので、招待を受けます①
リモートリポジトリのアドレス
ローカルリポジトリを作成したい
ファイルパスを指定
ローカルリポジトリの名前
⑤
リポジトリの共有(6/6)
自分で作ったリポジトリ同様に
扱えるようになっています。
※ただしプロジェクトの
設定画面は所有者のみ
プル
プル(1/3)
リモートリポジトリの
変更内容を、
ローカルリポジトリに
反映することを
「プル」という
チーム制作では、
他の人の変更をローカルに
取り込む必要があります
プル(2/3)
ブランチを選択して
プルします。
今はデフォルトの
masterブランチで
よい。
(ブランチについて
は後述)
プル(3/3)
他人の変更が
ローカルにも反映されます。
リポジトリの共有・プル
隣の人とペアになって、
リポジトリを共有し、
コミット、プッシュ、プルしてみよう。
(最低でも1リポジトリ共有。
時間が余ればお互いにやってみる)
やってみよう
マージ
マージ(1/5)
作業に区切りがついてプッシュする時は、
まず先にプルして、他の人の変更がないか
チェックするのが原則です。
自分と同じファイルをだれかが編集していた場合、
プルした時にマージという作業を行って、
変更点を統合します。
変更点がわかりやすく分散している場合は、
自動的なマージで解決する場合もあります。
マージ(2/5)
複数の人が同じ
個所を変更していると、
自動でマージできない
場合があります。
このような状態を
コンフリクト(競合)
といいます。
コンフリクトしている部分の
コードが
このように修正される
マージ(3/5)
自動でマージできない
場合、コンフリクト
しているファイルを
開いて、
複数の変更点を見比べ、
最終的にどうしたいかを
考えて書き換えます
(手動のマージ)
コンフリクトしていた部分を
書き換えて解決する
マージ(4/5)
コンフリクトを解決したら、
コミット、プッシュします。
成功すると、このように樹形図が統合された形で
表示されます。
マージ(5/5)
既にリモートリポジトリで管理している
ソースコードの、同じ個所を二人で編集
して故意にコンフリクトを起こし、
手動でマージしてみよう
やってみよう
ブランチ
ブランチ(1/6)
 branch(木の枝):
並行して複数の機能を追加する時に作成。
 チーム制作では、複数の機能を
並行して進めるのが普通なので、
メンバーそれぞれが
ブランチを切って作業します。
ブランチ(2/6)
最初にローカルで
ブランチを作ります
作業の内容が
分かりやすいような
名前をつけましょう
(名前に日本語は
使わない)
ブランチ(3/6)
作成したブランチが
自動的に選択状態
(チェックアウト)に
なります
この状態でなにか編集
してコミットすると、
選択ブランチに反映さ
れ、他ブランチには
影響を与えません
ブランチ(4/6)
コミット後
プッシュすることで、
リモートリポジトリでも
ブランチが共有されます
ブランチ(5/6)
このように、
ブラウザでGitHubを
見てもブランチが
反映されています
(リモートブランチ)
ブランチ(6/6)
ゲームジャム中でも、帰宅後、自宅での作業中など
ブランチを切ることによって、他の人に影響することな
く、ローカル+クラウド上でバージョン管理できます。
ブランチを切らないと、プッシュする度にコンフリクト
が起きてしまうでしょう。相手がそばにいれば話しなが
ら競合を解決できますが、話せない状況ではそうもいき
ません。
使いどころ
ブランチのマージ
ブランチのマージ(1/9)
ブランチは便利な機能ですが、
あまり長期間それぞれ別ブランチで作業を続けていると、
コンフリクトする個所がどんどん増えていきます。
ブランチで予定していた機能が出来上がったら、
作業ブランチ(feature branch)を
マスターブランチ(master branch)に統合しましょう。
ブランチのマージ(2/9)
ブランチの切り替え
ブランチ名を
ダブルクリック
変更を全てコミット後、
作業していたブランチから、
マスターブランチに
切り替えます。
(チェックアウト)
ブランチが
切り替わる
ブランチのマージ(3/9)
統合したいブランチを
右クリックし、
「現在のブランチに
〇〇〇をマージ」を
選択します。
①右クリック
ブランチのマージ
ブランチのマージ(4/9)
統合されたコミットが
できるので、プッシュして
リモートに反映します
ブランチのマージ(5/9)
統合が済んだブランチは、
削除しておきます。
ローカルブランチの削除
ブランチのマージ(6/9)
作業ブランチを
プッシュしていた場合は、
リモートブランチも
削除する必要があります。
ブラウザでGitHubを開き、
リモートブランチを削除し
ます
リモートブランチの削除
削除ボタン
ブランチのマージ(7/9)
リモートブランチを削除
していても、
いつまでもプルのリストに
削除済みブランチが
表示されてしまうことがあ
ります。
削除済みリモートの掃除
ブランチのマージ(8/9)
「リモートで消えた
追跡ブランチを消去」に
チェックを入れてフェッチ
することで、
削除済みブランチが
リストから消えます
削除済みリモートの掃除
ブランチのマージ(9/9)
二人でそれぞれ作業
ブランチを作り、
何か編集した後、
ブランチをマージして
みよう。
やってみよう
★順番
① 各自、ブランチを切る
② 各自、何かコードを編集/追加する
③ 各自、コミット、プッシュ
④ ここまで二人とも完了しているのを確認
⑤ 自分のブランチをmasterにマージ
⑥ masterをプッシュ
⑦ ローカル、リモートのブランチを削除
用語集
リポジトリ ファイルやディレクトリの状態を記録する場所
ローカルリポジトリ
ユーザ一人ひとりが利用するために、自分の手元のマシン上に
配置するリポジトリ
リモートリポジトリ 専用のサーバに配置して複数人で共有するためのリポジトリ
クローン リポジトリを複製する操作
コミット
ファイルやディレクトリの追加・変更を、
自分のリポジトリに反映する操作
プッシュ 自分のリポジトリをリモートリポジトリに送信して取り込ませる操作
プル リモートリポジトリの更新部分を自分のリポジトリに取り込む操作
ブランチ 履歴の流れを分岐して登録するもの
マージ 特定のブランチに対して別のブランチの差分を適用する操作
コンフリクト(競合)
マージ対象のブランチ間で同じファイルやディレクトリで
異なる変更をしていた状況

More Related Content

PDF
Gitはじめの一歩
PDF
ノンプログラマでも今日から使える「Git」でバージョン管理
PDF
いつやるの?Git入門 v1.1.0
PDF
新人Git/Github研修公開用スライド(その1)
PDF
ドメイン駆動設計という設計スタイル
PDF
ドメイン駆動設計の捉え方 20150718
PDF
ドメイン駆動設計をゲーム開発に活かす
PDF
はじめてのGit forデザイナー&コーダー
Gitはじめの一歩
ノンプログラマでも今日から使える「Git」でバージョン管理
いつやるの?Git入門 v1.1.0
新人Git/Github研修公開用スライド(その1)
ドメイン駆動設計という設計スタイル
ドメイン駆動設計の捉え方 20150718
ドメイン駆動設計をゲーム開発に活かす
はじめてのGit forデザイナー&コーダー

What's hot (20)

PPTX
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
PDF
やりなおせる Git 入門
PDF
いつやるの?Git入門
PDF
社内Git勉強会向け資料
PDF
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
PPTX
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
PPTX
DeNAの最新のマスタデータ管理システム Oyakata の全容
PDF
世界でいちばんわかりやすいドメイン駆動設計
PDF
ドメイン駆動設計に15年取り組んでわかったこと
PDF
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
PDF
はじめようGit
PDF
Concourseで快適な自動化の旅
PDF
カスタムメモリマネージャと高速なメモリアロケータについて
PDF
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
PDF
こわくない Git
PDF
プログラミング勉強会「オトナのGit入門」
PDF
Unityでオニオンアーキテクチャ
PDF
例外設計における大罪
PDF
ゲームサーバ開発現場の考え方
PDF
Unityでパフォーマンスの良いUIを作る為のTips
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
やりなおせる Git 入門
いつやるの?Git入門
社内Git勉強会向け資料
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
DeNAの最新のマスタデータ管理システム Oyakata の全容
世界でいちばんわかりやすいドメイン駆動設計
ドメイン駆動設計に15年取り組んでわかったこと
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
はじめようGit
Concourseで快適な自動化の旅
カスタムメモリマネージャと高速なメモリアロケータについて
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
こわくない Git
プログラミング勉強会「オトナのGit入門」
Unityでオニオンアーキテクチャ
例外設計における大罪
ゲームサーバ開発現場の考え方
Unityでパフォーマンスの良いUIを作る為のTips
Ad

Viewers also liked (8)

PDF
How to Become a Thought Leader in Your Niche
PPTX
4つの規律
KEY
Slideshareをwordpressに投稿する方法まとめ
PDF
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
PPTX
掲載されやすいプレスリリースの作り方
PPTX
How To Embed SlideShare Shows Into WordPress.com
PDF
Hype vs. Reality: The AI Explainer
PDF
Build Features, Not Apps
How to Become a Thought Leader in Your Niche
4つの規律
Slideshareをwordpressに投稿する方法まとめ
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
掲載されやすいプレスリリースの作り方
How To Embed SlideShare Shows Into WordPress.com
Hype vs. Reality: The AI Explainer
Build Features, Not Apps
Ad

Similar to Git SourceTreeでバージョン管理しよう (20)

PDF
サイト運用者に向けたバージョン管理について
PDF
バージョン管理システムを使ってみようじゃないか
ODP
Next-L Enju 開発ワークショップ #02
PDF
バージョン管理システムチュートリアル
PDF
Git&GitHub入門
PDF
Git -分散バージョン管理システム-
PDF
バージョン管理とGit
PDF
VCS - Version Control System at Security and Programming camp 2011
PPTX
Git社内勉強会資料
PPTX
Git 入門ちょい手前
PPTX
【閲覧用】新人教育向け_バージョン管理システム.pptx
PDF
Github勉強会~Git・Githubを用いて共同開発・バージョン管理をしよう~
PPTX
git入門(講義っぽく)
PPTX
GitHubワークショップ
PDF
ディレクターやデザイナーのためのリテラシー向上講座 git入門編
PDF
Version Control System Tutorial バージョン管理システムチュートリアル
PDF
SVNのすすめ&Redmineでプロジェクト管理
PDF
バージョン管理Git
PDF
KinectとC#を用いた 実践的VRアプリ開発 第2回 2015/10/13 Github CLI編
PDF
Github入門2014
サイト運用者に向けたバージョン管理について
バージョン管理システムを使ってみようじゃないか
Next-L Enju 開発ワークショップ #02
バージョン管理システムチュートリアル
Git&GitHub入門
Git -分散バージョン管理システム-
バージョン管理とGit
VCS - Version Control System at Security and Programming camp 2011
Git社内勉強会資料
Git 入門ちょい手前
【閲覧用】新人教育向け_バージョン管理システム.pptx
Github勉強会~Git・Githubを用いて共同開発・バージョン管理をしよう~
git入門(講義っぽく)
GitHubワークショップ
ディレクターやデザイナーのためのリテラシー向上講座 git入門編
Version Control System Tutorial バージョン管理システムチュートリアル
SVNのすすめ&Redmineでプロジェクト管理
バージョン管理Git
KinectとC#を用いた 実践的VRアプリ開発 第2回 2015/10/13 Github CLI編
Github入門2014

Git SourceTreeでバージョン管理しよう