SlideShare a Scribd company logo
1 of 36
チームで開発するために
              - Git の使い方 -




2013/2/13      1       UT Startup Gym
UT Startup Gym とは?



            アイデアをカタチにするプログラム

            プロジェクト
            企画から実装まで
            スタートアップ



2013/2/13               2          UT Startup Gym
スケジュール
                                              Keywords:

              • プログラミング入門            ソーシャルウェブアプリケーション, API,
   Oct, 12                           bot, HTML5
           • プラニング
                                     リーンスタートアップ, ビジネスプラニン
   Nov, 12 • プロジェクトスタート
                                     グ, HTML, CSS, PHP, javascript
           • 開発開始
   Dec, 12 • 冬季開発合宿                  チーム結成, 企画, ディスカッション
                                     git, フレームワーク, MySQL, Apache
            • ウェブデザイン
    Jan, 13 • 週間報告会
                                     シナリオ, ペルソナ, ワイヤフレーム,
                                     サイトマップ, DB スキーム
              • jQuery, 中間発表
   Feb, 13
                                     ゲーミフィケーション, 仮説検証, データマ
                                     イニング, アクセシビリティ
              • 作業会
   Mar, 13

                                     レスポンシブデザイン, プレゼンテーショ
              • リリース会                ン
    Apr, 13


2013/2/13                        3                         UT Startup Gym
M        D        講師(敬称略) タイトル                       要素
10 13 飯塚                  かんたん Facebook アプリをつくる      HTML, CSS, js
             21 飯塚        かんたん Twitter アプリをつくる       UNIX, vim, PHP
             27 川上        かんたん アンケートフォームをつくる         MySQL, MVC
    11        4 AWS 高山様   サーバを立てよう                   AWS
             10 飯塚・石村     スタートアップの心構え                ビジネスプラン、リーンスタートアップ
             17 飯塚・佐藤     プロダクトデザイン                  シナリオ、ペルソナ、ワイヤフレーム
             24           お休み(飯塚@ジャカルタ)
12            1 ゆーすけべー様 ウェブサービスの企画のコツ                企画プロセス、ウェブサービス運用
              8 飯塚        ウェブから情報をあつめる               クローラ, XPath, 正規表現
             15           プロジェクトキックオフ                アンカンファレンス
             22 飯塚        チームで協力して開発するために
    1 12                  未定
             19 石村        ゲーミフィケーション
             26 松尾、川上     中間発表
    2         2           未定
              9 ぱろすけさん    AV顔画像認識とその周辺               画像認識、機械学習
             16 飯塚        レスポンシブデザイン                 Less. Twitter Bootstrap
    3                     作業会
    4 13                  プレゼンテーション
             20           リリース会
2013/2/13                                        4                             UT Startup Gym
動くかわからないコードを書くとき

function hoge (val) {

/*
work codes;                   不安なので、動いていた
*/                            ときのコードをコメント
                               アウトして書きます。
challenging codes;


}



                            こんな部分がたくさん出てきたら?
                            この間に他の部分も直さなければ
                            ならなくなったら?

2013/2/13               5               UT Startup Gym
コードのバックアップをするとき



                      zip で固めてます。




                  どの変更がどのファイルになされたか
                  覚えてられるか?ファイルの管理が煩雑
                  にならないか?

2013/2/13     6                 UT Startup Gym
コードを共有するとき



                       USB メモリとか DropBox
                           で共有してます




                    自分の不完全なコードも共有される
                    可能性は?逆に他人のコードに邪魔
                    される可能性は?コンフリクトは?

2013/2/13       7                    UT Startup Gym
そんなイケてない
            ファイル管理とは
            おさらばしよう!




2013/2/13              8   UT Startup Gym
バージョン管理ってなに?
              =変更履歴を管理するためのシステム。



                                          「誰が」「いつ」「ど
                                           こを」修正したか




                                     Mac OSX: Document Revisions
Google Drive: Revision History
  2013/2/13                      9                         UT Startup Gym
SCENARIO 1/3

• あなたは小説を執筆している
• いつも Word で書いていたが、できれば変更履
  歴が残るようにして、色々な表現を試してみた
  い
• 作家仲間が Git を使っていることを知り、自分
  も使って見ることにした



2013/2/13        10        UT Startup Gym
つくりはじめる
$ mkdir mynovel # 小説ディレクトリの作成
$ cd mynovel
$ vim overture.txt # ファイルをつくって保存
$ git init # レポジトリの作成
Initialized empty Git repository in...
$ ls –a
.        ..   .git    overure.txt
# この .git がレポジトリである。




2013/2/13               11               UT Startup Gym
(補足)初回の設定
$ git config --global user.name = “Shuhei Iitsuka” # 名前の
設定
$ git config --global user.email = “hoge@example.com” #
メールアドレスの設定
$ git config --global color.ui true #色分け




2013/2/13                   12                   UT Startup Gym
レポジトリとは
• ファイルの変更履歴を格納している場所
• スナップショット(コミット)を格納している
      – 内部的には差分のみを保存することで、軽量化


 commit: ca1aj commit: dc3f9 commit: a924s   commit: e3kvf




                                                                              t
2013/2/13                       13                           UT Startup Gym
コミットをつくる
$ git status # 状況確認
# Untracked files:...
# oveture.txt
$ git add overture.txt
$ git status
# Changes to be committed:
# new file: overture.txt
$ git commit -m “first set”
$ git status
# nothing to commit


2013/2/13                     14   UT Startup Gym
コミット



  インデックス




ワーキングツリー




作業ディレクトリ



 2013/2/13    15    UT Startup Gym
コミット



  インデックス




ワーキングツリー


                   modify


作業ディレクトリ



 2013/2/13    16            UT Startup Gym
コミット



  インデックス


                    add (ステージング)

ワーキングツリー




作業ディレクトリ



 2013/2/13    17         UT Startup Gym
コミット

                    commit
  インデックス




ワーキングツリー




作業ディレクトリ



 2013/2/13    18             UT Startup Gym
基本動作のつづき
$ git log # ログを見る
commit d090f5935f7ae281790acd0f4f1db98d8da32d61
Author: Shuhei Iitsuka <tushuhei@gmail.com>       コミットID
Date: Fri Dec 21 07:14:40 2012 +0900
   first set
$ vim overture.txt # 再度編集
$ git diff # 最新コミットとの差分を表示する
+ぴよ
$ git add . # 変更されたファイルすべてをステージング
$ git commit –m “add new line”




2013/2/13                    19                   UT Startup Gym
前の状態に戻す
$ git log --oneline
d6fd8cb add new line
d090f59 first set
$ git reset --hard d090f59 # コミットd090f59に戻す
$ git reset --hard d6fd8cb # やっぱりd6fd8cbに戻す
$ vim chapter1.txt
$ git add .
$ git commit –m “add chapter1”
[master b6101ea] add chaper1
# やっぱり overture だけ戻したい!
$ git checkout d090f59 overture.txt
$ git status
# changes to be committed: modified: overture.txt
$ git commit –m “roll back overture.txt”

2013/2/13                       20                  UT Startup Gym
git reset
• 特定のコミットに遡る
      – hard オプションをつけると、今のワーキングツリー
        にある変更を完全に破棄するので注意
      – (つけないと、さかのぼったファイルをワーキング
        ツリーに追加する(実際に挙動を見てみてくださ
        い))




参考 http://d.hatena.ne.jp/murank/20110327/1301224770
2013/2/13                                       21    UT Startup Gym
git checkout
• 今回は特定のファイルのみを任意のコミットの
  状態に復元するのに使った
      – そして、また新しくコミットをつくる
• ブランチの説明でまた出てきます。
• めちゃ奥が深いコマンドのひとつ。




2013/2/13          22        UT Startup Gym
SCENARIO 2/3

• ある日出版社の編集長とファイルを共有し、共
  同で編集していくことになった
• お互いにいつ・どこを編集したのか、確認しな
  がら進めたい。




2013/2/13        23        UT Startup Gym
レポジトリの構成

                                   EC2

                                         作業ディレクトリを持た
                       ベアレポジトリ           ないレポジトリ。

               push                      push
                      pull        pull




        ローカルレポジトリ                        ローカルレポジトリ
            あなたの書斎                          出版社

2013/2/13                    24                   UT Startup Gym
ベアレポジトリの作成
ubuntu@ec2.com ~$ ls
mynovel
ubuntu@ec2.com ~$ git clone --bare mynovel
Cloning into bare repository 'mynovel.git'... done.
ubnutu@ec2.com ~$ ls
mynovel mynovel.git これがベアレポジトリ



http://tushuhei.com/git-test.pem




2013/2/13                           25                UT Startup Gym
ローカルレポジトリの作成
you@home ~$ git clone
ssh://ubuntu@ec2.com/home/ubuntu/mynovel.git
you@home ~$ cd mynovel
you@home mynovel$ ls –a
いろいろなファイル                .git これがローカルレポジトリ。ここから
はシナリオ1と同じ。
you@home mynovel$ vim overture.txt
you@home mynovel$ git add .
you@home mynovel$ git commit –m “fix typos in overture”
you@home mynovel$ git pull origin master # push するまえに pull する
こと。他の人が変更を加えているかもしれない。
you@home mynovel$ git push origin master



2013/2/13                    26                     UT Startup Gym
origin master
• origin => ec2.com 上のベアレポジトリのこと
      – .git/config をみると確認できる


• master => master ブランチ
      – master? ブランチ??
        git にはブランチという機構があり、コミットツリー
        を分岐することができる。
        デフォルトのブランチの名前が master




2013/2/13              27        UT Startup Gym
【ワーク】コンフリクト
• みんなで overture.txt を編集して push しましょ
  う。
• CONFLICT という文字が出た人は手を挙げて教
  えてください。




2013/2/13        28           UT Startup Gym
【ワーク】犯人探し
you@home ~$ git blame overture.txt

# 「うんち」という文字列を埋め込んだ犯人を探してください。




2013/2/13                       29   UT Startup Gym
SCENARIO 3/3

• いままで書いた小説を連載としてウェブ上で公
  開することになった。
• 編集を終えたバージョンを公開する一方、裏で
  編集長と協力してアップデートを続けたい。
• しかし、編集中のものを公開するわけにはいか
  ない。



2013/2/13        30        UT Startup Gym
レポジトリとサーバの構成
                         pull (master)        公開中の
                                              ウェブサーバ

                ベアレポジトリ            ローカルレポジトリ

              push (master, staging)
               pull (master, staging)




 ローカルレポジトリ                      ローカルレポジトリ
     あなたの書斎                             出版社

2013/2/13                 31                  UT Startup Gym
ブランチ@家
you@home mynovel$ git branch staging # staging ブランチの作成
you@home mynovel$ git branch # ブランチの確認
* master
  staging
you@home mynovel$ git checkout staging # staging ブランチに切り替
え
you@home mynovel$ git branch
you@home mynovel$ vim overture.txt
you@home mynovel$ git add .
you@home mynovel$ git commit –m “modify overture”
you@home mynovel$ git pull origin staging
you@home mynovel$ git push origin staging



2013/2/13                  32                    UT Startup Gym
ブランチ@オフィス
editor@office mynovel$ git fetch –-all # ブランチ情報の更新
editor@office mynovel$ git branch –av # リモートブランチも含めて一
覧表示。編集長「お、staging というブランチを切ったのか」
editor@office mynovel$ git checkout staging
editor@office mynovel$ vim overture.txt
editor@office mynovel$ git add .
editor@office mynovel$ git commit –m “fix typo”
editor@office mynovel$ git pull origin staging
editor@office mynovel$ git push origin staging




2013/2/13                 33                  UT Startup Gym
ブランチ@リリース日
you@home mynovel$ git checkout master
you@home mynovel$ git merge staging # master に staging での一連
の変更が追加される。master が最新状態になる。
you@home mynovel$ git push origin master
...
ubuntu@webserver public/mynovel$ git pull origin master #リリー
ス!!


                                            master にマージ。
 master                              master には最終版だけが乗る。




            staging                            ←ここで最終確認

2013/2/13                    34                      UT Startup Gym
ブランチ構成の例
• master
      – 最終版、公開してOKなコードだけが乗る
• staging
      – テスト段階のコードが乗る
• dev
      – 開発中のコードが乗る
• topic_*
      – あるバグに取り組んでいる人、チームのみで共有す
        るブランチ



2013/2/13            35       UT Startup Gym
これからやるといいこと
• とりあえず、明日から何かひとつのディレクト
  リに Git レポジトリを導入してみましょう。
      – Excel や 画像などのバイナリファイルではなく、txt
        やプログラムなどのテキストファイルを管理する
        ディレクトリで
• GitHub を使ってみる




2013/2/13           36           UT Startup Gym

More Related Content

What's hot

Git講習会
Git講習会Git講習会
Git講習会galluda
 
コンセプトから理解するGitコマンド
コンセプトから理解するGitコマンドコンセプトから理解するGitコマンド
コンセプトから理解するGitコマンドktateish
 
「グーグルの自動運転Carの技術要素」勉強会 2014.08.29
「グーグルの自動運転Carの技術要素」勉強会 2014.08.29「グーグルの自動運転Carの技術要素」勉強会 2014.08.29
「グーグルの自動運転Carの技術要素」勉強会 2014.08.29Minoru Chikamune
 
hubotで快適BOT生活
hubotで快適BOT生活 hubotで快適BOT生活
hubotで快適BOT生活 Kazufumi Otani
 
新人Git/Github研修公開用スライド(その1)
新人Git/Github研修公開用スライド(その1)新人Git/Github研修公開用スライド(その1)
新人Git/Github研修公開用スライド(その1)pupupopo88
 
hubot-slack v4移行時のハマりどころ #hubot_chatops
hubot-slack v4移行時のハマりどころ #hubot_chatopshubot-slack v4移行時のハマりどころ #hubot_chatops
hubot-slack v4移行時のハマりどころ #hubot_chatopsknjcode
 
etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2
etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2
etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2Mitsutoshi Nakano
 
Hubotをはじめる
HubotをはじめるHubotをはじめる
Hubotをはじめるnasa9084
 
Gitの便利ワザ
Gitの便利ワザGitの便利ワザ
Gitの便利ワザktateish
 
@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門Takashi Imagire
 

What's hot (12)

Git講習会
Git講習会Git講習会
Git講習会
 
コンセプトから理解するGitコマンド
コンセプトから理解するGitコマンドコンセプトから理解するGitコマンド
コンセプトから理解するGitコマンド
 
「グーグルの自動運転Carの技術要素」勉強会 2014.08.29
「グーグルの自動運転Carの技術要素」勉強会 2014.08.29「グーグルの自動運転Carの技術要素」勉強会 2014.08.29
「グーグルの自動運転Carの技術要素」勉強会 2014.08.29
 
hubotで快適BOT生活
hubotで快適BOT生活 hubotで快適BOT生活
hubotで快適BOT生活
 
はじめてのGit
はじめてのGitはじめてのGit
はじめてのGit
 
新人Git/Github研修公開用スライド(その1)
新人Git/Github研修公開用スライド(その1)新人Git/Github研修公開用スライド(その1)
新人Git/Github研修公開用スライド(その1)
 
hubot-slack v4移行時のハマりどころ #hubot_chatops
hubot-slack v4移行時のハマりどころ #hubot_chatopshubot-slack v4移行時のハマりどころ #hubot_chatops
hubot-slack v4移行時のハマりどころ #hubot_chatops
 
etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2
etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2
etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2
 
Hubotをはじめる
HubotをはじめるHubotをはじめる
Hubotをはじめる
 
Gitの便利ワザ
Gitの便利ワザGitの便利ワザ
Gitの便利ワザ
 
Git 勉強会
Git 勉強会Git 勉強会
Git 勉強会
 
@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門
 

Viewers also liked

Generating sentences from a continuous space
Generating sentences from a continuous spaceGenerating sentences from a continuous space
Generating sentences from a continuous spaceShuhei Iitsuka
 
ウェブサイト最適化のためのバリエーション自動生成システム
ウェブサイト最適化のためのバリエーション自動生成システムウェブサイト最適化のためのバリエーション自動生成システム
ウェブサイト最適化のためのバリエーション自動生成システムShuhei Iitsuka
 
Procedural modeling using autoencoder networks
Procedural modeling using autoencoder networksProcedural modeling using autoencoder networks
Procedural modeling using autoencoder networksShuhei Iitsuka
 
デザイナのためのGit入門
デザイナのためのGit入門デザイナのためのGit入門
デザイナのためのGit入門dsuke Takaoka
 
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜Takashi Uemura
 
やりなおせる Git 入門
やりなおせる Git 入門やりなおせる Git 入門
やりなおせる Git 入門Tomohiko Himura
 

Viewers also liked (6)

Generating sentences from a continuous space
Generating sentences from a continuous spaceGenerating sentences from a continuous space
Generating sentences from a continuous space
 
ウェブサイト最適化のためのバリエーション自動生成システム
ウェブサイト最適化のためのバリエーション自動生成システムウェブサイト最適化のためのバリエーション自動生成システム
ウェブサイト最適化のためのバリエーション自動生成システム
 
Procedural modeling using autoencoder networks
Procedural modeling using autoencoder networksProcedural modeling using autoencoder networks
Procedural modeling using autoencoder networks
 
デザイナのためのGit入門
デザイナのためのGit入門デザイナのためのGit入門
デザイナのためのGit入門
 
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
 
やりなおせる Git 入門
やりなおせる Git 入門やりなおせる Git 入門
やりなおせる Git 入門
 

Similar to Git

かんたん Twitter アプリをつくろう
かんたん Twitter アプリをつくろう かんたん Twitter アプリをつくろう
かんたん Twitter アプリをつくろう Shuhei Iitsuka
 
かんたんキレイなウェブデザイン
かんたんキレイなウェブデザインかんたんキレイなウェブデザイン
かんたんキレイなウェブデザインShuhei Iitsuka
 
データベースを使おう
データベースを使おうデータベースを使おう
データベースを使おうShuhei Iitsuka
 
ウェブから情報をあつめる
ウェブから情報をあつめるウェブから情報をあつめる
ウェブから情報をあつめるShuhei Iitsuka
 
今さら聞けない人のためのGit超入門 GitLab 13対応版
今さら聞けない人のためのGit超入門 GitLab 13対応版今さら聞けない人のためのGit超入門 GitLab 13対応版
今さら聞けない人のためのGit超入門 GitLab 13対応版VirtualTech Japan Inc./Begi.net Inc.
 
バージョン管理
バージョン管理バージョン管理
バージョン管理Misa Kondo
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む2bo 2bo
 
20121017_アプリ制作勉強会@GMO Yours
20121017_アプリ制作勉強会@GMO Yours20121017_アプリ制作勉強会@GMO Yours
20121017_アプリ制作勉強会@GMO YoursYozo SATO
 
localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話
localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話
localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話真治 米田
 
できる!KickstartとAnsible!
できる!KickstartとAnsible!できる!KickstartとAnsible!
できる!KickstartとAnsible!Wataru NOGUCHI
 
あなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CIあなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CIWataru MIYAGUNI
 
今さら聞けない人のためのGit超入門 GitLab 14対応版
今さら聞けない人のためのGit超入門 GitLab 14対応版今さら聞けない人のためのGit超入門 GitLab 14対応版
今さら聞けない人のためのGit超入門 GitLab 14対応版VirtualTech Japan Inc./Begi.net Inc.
 
ブラウザだけで学ぶWebアプリ開発
ブラウザだけで学ぶWebアプリ開発 ブラウザだけで学ぶWebアプリ開発
ブラウザだけで学ぶWebアプリ開発 schoowebcampus
 
2018 07-18 git-hub講座
2018 07-18 git-hub講座2018 07-18 git-hub講座
2018 07-18 git-hub講座貴一 末田
 
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発Ricoh UCS for iPad でみる エンタープライズ アジャイル開発
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発Naoki Umehara
 
ロボットシステム学2015年第9回
ロボットシステム学2015年第9回ロボットシステム学2015年第9回
ロボットシステム学2015年第9回Ryuichi Ueda
 
XPagesDay 2013 Closing Session
XPagesDay 2013 Closing SessionXPagesDay 2013 Closing Session
XPagesDay 2013 Closing SessionAtsushi Sato
 

Similar to Git (20)

かんたん Twitter アプリをつくろう
かんたん Twitter アプリをつくろう かんたん Twitter アプリをつくろう
かんたん Twitter アプリをつくろう
 
かんたんキレイなウェブデザイン
かんたんキレイなウェブデザインかんたんキレイなウェブデザイン
かんたんキレイなウェブデザイン
 
データベースを使おう
データベースを使おうデータベースを使おう
データベースを使おう
 
ウェブから情報をあつめる
ウェブから情報をあつめるウェブから情報をあつめる
ウェブから情報をあつめる
 
今さら聞けない人のためのGit超入門 2019/11/21
今さら聞けない人のためのGit超入門 2019/11/21今さら聞けない人のためのGit超入門 2019/11/21
今さら聞けない人のためのGit超入門 2019/11/21
 
今さら聞けない人のためのGit超入門 GitLab 13対応版
今さら聞けない人のためのGit超入門 GitLab 13対応版今さら聞けない人のためのGit超入門 GitLab 13対応版
今さら聞けない人のためのGit超入門 GitLab 13対応版
 
バージョン管理
バージョン管理バージョン管理
バージョン管理
 
今さら聞けない人のためのgit超入門
今さら聞けない人のためのgit超入門今さら聞けない人のためのgit超入門
今さら聞けない人のためのgit超入門
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
 
20121017_アプリ制作勉強会@GMO Yours
20121017_アプリ制作勉強会@GMO Yours20121017_アプリ制作勉強会@GMO Yours
20121017_アプリ制作勉強会@GMO Yours
 
localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話
localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話
localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話
 
できる!KickstartとAnsible!
できる!KickstartとAnsible!できる!KickstartとAnsible!
できる!KickstartとAnsible!
 
あなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CIあなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CI
 
今さら聞けない人のためのGit超入門 GitLab 14対応版
今さら聞けない人のためのGit超入門 GitLab 14対応版今さら聞けない人のためのGit超入門 GitLab 14対応版
今さら聞けない人のためのGit超入門 GitLab 14対応版
 
今さら聞けない人のためのGit超入門
今さら聞けない人のためのGit超入門今さら聞けない人のためのGit超入門
今さら聞けない人のためのGit超入門
 
ブラウザだけで学ぶWebアプリ開発
ブラウザだけで学ぶWebアプリ開発 ブラウザだけで学ぶWebアプリ開発
ブラウザだけで学ぶWebアプリ開発
 
2018 07-18 git-hub講座
2018 07-18 git-hub講座2018 07-18 git-hub講座
2018 07-18 git-hub講座
 
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発Ricoh UCS for iPad でみる エンタープライズ アジャイル開発
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発
 
ロボットシステム学2015年第9回
ロボットシステム学2015年第9回ロボットシステム学2015年第9回
ロボットシステム学2015年第9回
 
XPagesDay 2013 Closing Session
XPagesDay 2013 Closing SessionXPagesDay 2013 Closing Session
XPagesDay 2013 Closing Session
 

More from Shuhei Iitsuka

Online and offline handwritten chinese character recognition a comprehensive...
Online and offline handwritten chinese character recognition  a comprehensive...Online and offline handwritten chinese character recognition  a comprehensive...
Online and offline handwritten chinese character recognition a comprehensive...Shuhei Iitsuka
 
Inferring win–lose product network from user behavior
Inferring win–lose product network from user behaviorInferring win–lose product network from user behavior
Inferring win–lose product network from user behaviorShuhei Iitsuka
 
バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会
バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会
バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会Shuhei Iitsuka
 
Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...
Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...
Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...Shuhei Iitsuka
 
Machine learning meets web development
Machine learning meets web developmentMachine learning meets web development
Machine learning meets web developmentShuhei Iitsuka
 
Python と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめるPython と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめるShuhei Iitsuka
 
リミックスからはじめる DTM 入門
リミックスからはじめる DTM 入門リミックスからはじめる DTM 入門
リミックスからはじめる DTM 入門Shuhei Iitsuka
 
【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...
【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...
【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...Shuhei Iitsuka
 
Asia Trend Map: Forecasting “Cool Japan” Content Popularity on Web Data
Asia Trend Map: Forecasting “Cool Japan” Content Popularity on Web DataAsia Trend Map: Forecasting “Cool Japan” Content Popularity on Web Data
Asia Trend Map: Forecasting “Cool Japan” Content Popularity on Web DataShuhei Iitsuka
 
【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ Rule
【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ Rule【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ Rule
【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ RuleShuhei Iitsuka
 
UT Startup Gym で人生が変わった話
UT Startup Gym で人生が変わった話UT Startup Gym で人生が変わった話
UT Startup Gym で人生が変わった話Shuhei Iitsuka
 
ウェブサイトで収益を得る
ウェブサイトで収益を得るウェブサイトで収益を得る
ウェブサイトで収益を得るShuhei Iitsuka
 
HTML で自己紹介ページをつくる
HTML で自己紹介ページをつくるHTML で自己紹介ページをつくる
HTML で自己紹介ページをつくるShuhei Iitsuka
 
ウェブサービスの企画とデザイン
ウェブサービスの企画とデザインウェブサービスの企画とデザイン
ウェブサービスの企画とデザインShuhei Iitsuka
 
データベースを使おう
データベースを使おうデータベースを使おう
データベースを使おうShuhei Iitsuka
 
第3期キックオフ説明会+勉強会
第3期キックオフ説明会+勉強会 第3期キックオフ説明会+勉強会
第3期キックオフ説明会+勉強会 Shuhei Iitsuka
 
ペルソナシナリオとプロトタイプ
ペルソナシナリオとプロトタイプペルソナシナリオとプロトタイプ
ペルソナシナリオとプロトタイプShuhei Iitsuka
 
ペルソナシナリオとプロトタイプ2
ペルソナシナリオとプロトタイプ2ペルソナシナリオとプロトタイプ2
ペルソナシナリオとプロトタイプ2Shuhei Iitsuka
 
UT Startup Gym とは @第2期製品発表
UT Startup Gym とは @第2期製品発表 UT Startup Gym とは @第2期製品発表
UT Startup Gym とは @第2期製品発表 Shuhei Iitsuka
 

More from Shuhei Iitsuka (20)

Online and offline handwritten chinese character recognition a comprehensive...
Online and offline handwritten chinese character recognition  a comprehensive...Online and offline handwritten chinese character recognition  a comprehensive...
Online and offline handwritten chinese character recognition a comprehensive...
 
Inferring win–lose product network from user behavior
Inferring win–lose product network from user behaviorInferring win–lose product network from user behavior
Inferring win–lose product network from user behavior
 
バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会
バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会
バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会
 
Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...
Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...
Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...
 
Machine learning meets web development
Machine learning meets web developmentMachine learning meets web development
Machine learning meets web development
 
Python と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめるPython と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめる
 
リミックスからはじめる DTM 入門
リミックスからはじめる DTM 入門リミックスからはじめる DTM 入門
リミックスからはじめる DTM 入門
 
【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...
【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...
【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...
 
Asia Trend Map: Forecasting “Cool Japan” Content Popularity on Web Data
Asia Trend Map: Forecasting “Cool Japan” Content Popularity on Web DataAsia Trend Map: Forecasting “Cool Japan” Content Popularity on Web Data
Asia Trend Map: Forecasting “Cool Japan” Content Popularity on Web Data
 
【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ Rule
【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ Rule【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ Rule
【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ Rule
 
UT Startup Gym で人生が変わった話
UT Startup Gym で人生が変わった話UT Startup Gym で人生が変わった話
UT Startup Gym で人生が変わった話
 
ウェブサイトで収益を得る
ウェブサイトで収益を得るウェブサイトで収益を得る
ウェブサイトで収益を得る
 
HTML で自己紹介ページをつくる
HTML で自己紹介ページをつくるHTML で自己紹介ページをつくる
HTML で自己紹介ページをつくる
 
ウェブサービスの企画とデザイン
ウェブサービスの企画とデザインウェブサービスの企画とデザイン
ウェブサービスの企画とデザイン
 
データベースを使おう
データベースを使おうデータベースを使おう
データベースを使おう
 
第3期キックオフ説明会+勉強会
第3期キックオフ説明会+勉強会 第3期キックオフ説明会+勉強会
第3期キックオフ説明会+勉強会
 
ペルソナシナリオとプロトタイプ
ペルソナシナリオとプロトタイプペルソナシナリオとプロトタイプ
ペルソナシナリオとプロトタイプ
 
ペルソナシナリオとプロトタイプ2
ペルソナシナリオとプロトタイプ2ペルソナシナリオとプロトタイプ2
ペルソナシナリオとプロトタイプ2
 
UT Startup Gym とは @第2期製品発表
UT Startup Gym とは @第2期製品発表 UT Startup Gym とは @第2期製品発表
UT Startup Gym とは @第2期製品発表
 
Webサーバ、HTML
Webサーバ、HTMLWebサーバ、HTML
Webサーバ、HTML
 

Git

  • 1. チームで開発するために - Git の使い方 - 2013/2/13 1 UT Startup Gym
  • 2. UT Startup Gym とは? アイデアをカタチにするプログラム プロジェクト 企画から実装まで スタートアップ 2013/2/13 2 UT Startup Gym
  • 3. スケジュール Keywords: • プログラミング入門 ソーシャルウェブアプリケーション, API, Oct, 12 bot, HTML5 • プラニング リーンスタートアップ, ビジネスプラニン Nov, 12 • プロジェクトスタート グ, HTML, CSS, PHP, javascript • 開発開始 Dec, 12 • 冬季開発合宿 チーム結成, 企画, ディスカッション git, フレームワーク, MySQL, Apache • ウェブデザイン Jan, 13 • 週間報告会 シナリオ, ペルソナ, ワイヤフレーム, サイトマップ, DB スキーム • jQuery, 中間発表 Feb, 13 ゲーミフィケーション, 仮説検証, データマ イニング, アクセシビリティ • 作業会 Mar, 13 レスポンシブデザイン, プレゼンテーショ • リリース会 ン Apr, 13 2013/2/13 3 UT Startup Gym
  • 4. M D 講師(敬称略) タイトル 要素 10 13 飯塚 かんたん Facebook アプリをつくる HTML, CSS, js 21 飯塚 かんたん Twitter アプリをつくる UNIX, vim, PHP 27 川上 かんたん アンケートフォームをつくる MySQL, MVC 11 4 AWS 高山様 サーバを立てよう AWS 10 飯塚・石村 スタートアップの心構え ビジネスプラン、リーンスタートアップ 17 飯塚・佐藤 プロダクトデザイン シナリオ、ペルソナ、ワイヤフレーム 24 お休み(飯塚@ジャカルタ) 12 1 ゆーすけべー様 ウェブサービスの企画のコツ 企画プロセス、ウェブサービス運用 8 飯塚 ウェブから情報をあつめる クローラ, XPath, 正規表現 15 プロジェクトキックオフ アンカンファレンス 22 飯塚 チームで協力して開発するために 1 12 未定 19 石村 ゲーミフィケーション 26 松尾、川上 中間発表 2 2 未定 9 ぱろすけさん AV顔画像認識とその周辺 画像認識、機械学習 16 飯塚 レスポンシブデザイン Less. Twitter Bootstrap 3 作業会 4 13 プレゼンテーション 20 リリース会 2013/2/13 4 UT Startup Gym
  • 5. 動くかわからないコードを書くとき function hoge (val) { /* work codes; 不安なので、動いていた */ ときのコードをコメント アウトして書きます。 challenging codes; } こんな部分がたくさん出てきたら? この間に他の部分も直さなければ ならなくなったら? 2013/2/13 5 UT Startup Gym
  • 6. コードのバックアップをするとき zip で固めてます。 どの変更がどのファイルになされたか 覚えてられるか?ファイルの管理が煩雑 にならないか? 2013/2/13 6 UT Startup Gym
  • 7. コードを共有するとき USB メモリとか DropBox で共有してます 自分の不完全なコードも共有される 可能性は?逆に他人のコードに邪魔 される可能性は?コンフリクトは? 2013/2/13 7 UT Startup Gym
  • 8. そんなイケてない ファイル管理とは おさらばしよう! 2013/2/13 8 UT Startup Gym
  • 9. バージョン管理ってなに? =変更履歴を管理するためのシステム。 「誰が」「いつ」「ど こを」修正したか Mac OSX: Document Revisions Google Drive: Revision History 2013/2/13 9 UT Startup Gym
  • 10. SCENARIO 1/3 • あなたは小説を執筆している • いつも Word で書いていたが、できれば変更履 歴が残るようにして、色々な表現を試してみた い • 作家仲間が Git を使っていることを知り、自分 も使って見ることにした 2013/2/13 10 UT Startup Gym
  • 11. つくりはじめる $ mkdir mynovel # 小説ディレクトリの作成 $ cd mynovel $ vim overture.txt # ファイルをつくって保存 $ git init # レポジトリの作成 Initialized empty Git repository in... $ ls –a . .. .git overure.txt # この .git がレポジトリである。 2013/2/13 11 UT Startup Gym
  • 12. (補足)初回の設定 $ git config --global user.name = “Shuhei Iitsuka” # 名前の 設定 $ git config --global user.email = “hoge@example.com” # メールアドレスの設定 $ git config --global color.ui true #色分け 2013/2/13 12 UT Startup Gym
  • 13. レポジトリとは • ファイルの変更履歴を格納している場所 • スナップショット(コミット)を格納している – 内部的には差分のみを保存することで、軽量化 commit: ca1aj commit: dc3f9 commit: a924s commit: e3kvf t 2013/2/13 13 UT Startup Gym
  • 14. コミットをつくる $ git status # 状況確認 # Untracked files:... # oveture.txt $ git add overture.txt $ git status # Changes to be committed: # new file: overture.txt $ git commit -m “first set” $ git status # nothing to commit 2013/2/13 14 UT Startup Gym
  • 16. コミット インデックス ワーキングツリー modify 作業ディレクトリ 2013/2/13 16 UT Startup Gym
  • 17. コミット インデックス add (ステージング) ワーキングツリー 作業ディレクトリ 2013/2/13 17 UT Startup Gym
  • 18. コミット commit インデックス ワーキングツリー 作業ディレクトリ 2013/2/13 18 UT Startup Gym
  • 19. 基本動作のつづき $ git log # ログを見る commit d090f5935f7ae281790acd0f4f1db98d8da32d61 Author: Shuhei Iitsuka <tushuhei@gmail.com> コミットID Date: Fri Dec 21 07:14:40 2012 +0900 first set $ vim overture.txt # 再度編集 $ git diff # 最新コミットとの差分を表示する +ぴよ $ git add . # 変更されたファイルすべてをステージング $ git commit –m “add new line” 2013/2/13 19 UT Startup Gym
  • 20. 前の状態に戻す $ git log --oneline d6fd8cb add new line d090f59 first set $ git reset --hard d090f59 # コミットd090f59に戻す $ git reset --hard d6fd8cb # やっぱりd6fd8cbに戻す $ vim chapter1.txt $ git add . $ git commit –m “add chapter1” [master b6101ea] add chaper1 # やっぱり overture だけ戻したい! $ git checkout d090f59 overture.txt $ git status # changes to be committed: modified: overture.txt $ git commit –m “roll back overture.txt” 2013/2/13 20 UT Startup Gym
  • 21. git reset • 特定のコミットに遡る – hard オプションをつけると、今のワーキングツリー にある変更を完全に破棄するので注意 – (つけないと、さかのぼったファイルをワーキング ツリーに追加する(実際に挙動を見てみてくださ い)) 参考 http://d.hatena.ne.jp/murank/20110327/1301224770 2013/2/13 21 UT Startup Gym
  • 22. git checkout • 今回は特定のファイルのみを任意のコミットの 状態に復元するのに使った – そして、また新しくコミットをつくる • ブランチの説明でまた出てきます。 • めちゃ奥が深いコマンドのひとつ。 2013/2/13 22 UT Startup Gym
  • 23. SCENARIO 2/3 • ある日出版社の編集長とファイルを共有し、共 同で編集していくことになった • お互いにいつ・どこを編集したのか、確認しな がら進めたい。 2013/2/13 23 UT Startup Gym
  • 24. レポジトリの構成 EC2 作業ディレクトリを持た ベアレポジトリ ないレポジトリ。 push push pull pull ローカルレポジトリ ローカルレポジトリ あなたの書斎 出版社 2013/2/13 24 UT Startup Gym
  • 25. ベアレポジトリの作成 ubuntu@ec2.com ~$ ls mynovel ubuntu@ec2.com ~$ git clone --bare mynovel Cloning into bare repository 'mynovel.git'... done. ubnutu@ec2.com ~$ ls mynovel mynovel.git これがベアレポジトリ http://tushuhei.com/git-test.pem 2013/2/13 25 UT Startup Gym
  • 26. ローカルレポジトリの作成 you@home ~$ git clone ssh://ubuntu@ec2.com/home/ubuntu/mynovel.git you@home ~$ cd mynovel you@home mynovel$ ls –a いろいろなファイル .git これがローカルレポジトリ。ここから はシナリオ1と同じ。 you@home mynovel$ vim overture.txt you@home mynovel$ git add . you@home mynovel$ git commit –m “fix typos in overture” you@home mynovel$ git pull origin master # push するまえに pull する こと。他の人が変更を加えているかもしれない。 you@home mynovel$ git push origin master 2013/2/13 26 UT Startup Gym
  • 27. origin master • origin => ec2.com 上のベアレポジトリのこと – .git/config をみると確認できる • master => master ブランチ – master? ブランチ?? git にはブランチという機構があり、コミットツリー を分岐することができる。 デフォルトのブランチの名前が master 2013/2/13 27 UT Startup Gym
  • 28. 【ワーク】コンフリクト • みんなで overture.txt を編集して push しましょ う。 • CONFLICT という文字が出た人は手を挙げて教 えてください。 2013/2/13 28 UT Startup Gym
  • 29. 【ワーク】犯人探し you@home ~$ git blame overture.txt # 「うんち」という文字列を埋め込んだ犯人を探してください。 2013/2/13 29 UT Startup Gym
  • 30. SCENARIO 3/3 • いままで書いた小説を連載としてウェブ上で公 開することになった。 • 編集を終えたバージョンを公開する一方、裏で 編集長と協力してアップデートを続けたい。 • しかし、編集中のものを公開するわけにはいか ない。 2013/2/13 30 UT Startup Gym
  • 31. レポジトリとサーバの構成 pull (master) 公開中の ウェブサーバ ベアレポジトリ ローカルレポジトリ push (master, staging) pull (master, staging) ローカルレポジトリ ローカルレポジトリ あなたの書斎 出版社 2013/2/13 31 UT Startup Gym
  • 32. ブランチ@家 you@home mynovel$ git branch staging # staging ブランチの作成 you@home mynovel$ git branch # ブランチの確認 * master staging you@home mynovel$ git checkout staging # staging ブランチに切り替 え you@home mynovel$ git branch you@home mynovel$ vim overture.txt you@home mynovel$ git add . you@home mynovel$ git commit –m “modify overture” you@home mynovel$ git pull origin staging you@home mynovel$ git push origin staging 2013/2/13 32 UT Startup Gym
  • 33. ブランチ@オフィス editor@office mynovel$ git fetch –-all # ブランチ情報の更新 editor@office mynovel$ git branch –av # リモートブランチも含めて一 覧表示。編集長「お、staging というブランチを切ったのか」 editor@office mynovel$ git checkout staging editor@office mynovel$ vim overture.txt editor@office mynovel$ git add . editor@office mynovel$ git commit –m “fix typo” editor@office mynovel$ git pull origin staging editor@office mynovel$ git push origin staging 2013/2/13 33 UT Startup Gym
  • 34. ブランチ@リリース日 you@home mynovel$ git checkout master you@home mynovel$ git merge staging # master に staging での一連 の変更が追加される。master が最新状態になる。 you@home mynovel$ git push origin master ... ubuntu@webserver public/mynovel$ git pull origin master #リリー ス!! master にマージ。 master master には最終版だけが乗る。 staging ←ここで最終確認 2013/2/13 34 UT Startup Gym
  • 35. ブランチ構成の例 • master – 最終版、公開してOKなコードだけが乗る • staging – テスト段階のコードが乗る • dev – 開発中のコードが乗る • topic_* – あるバグに取り組んでいる人、チームのみで共有す るブランチ 2013/2/13 35 UT Startup Gym
  • 36. これからやるといいこと • とりあえず、明日から何かひとつのディレクト リに Git レポジトリを導入してみましょう。 – Excel や 画像などのバイナリファイルではなく、txt やプログラムなどのテキストファイルを管理する ディレクトリで • GitHub を使ってみる 2013/2/13 36 UT Startup Gym