git

36
チチチチチチチチチチチ - Git チチチチ - 05/30/2022 UT Startup Gym 1

Upload: shuhei-iitsuka

Post on 26-May-2015

939 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Git

チームで開発するために- Git の使い方 -

04/12/2023 UT Startup Gym1

Page 2: Git

UT Startup Gym

UT Startup Gym とは?

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

04/12/2023 2

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

Page 3: Git

UT Startup Gym

スケジュール

04/12/2023 3

Oct, 12

• プログラミング入門

Nov,

12

• プラニング• プロジェクトスタート

Dec,

12

• 開発開始• 冬季開発合宿

Jan, 13

• ウェブデザイン• 週間報告会

Feb, 13

• jQuery, 中間発表

Mar,

13

• 作業会

Apr, 13

• リリース会

ソーシャルウェブアプリケーション , API,bot, HTML5

Keywords:

リーンスタートアップ , ビジネスプラニング , HTML, CSS, PHP, javascript

チーム結成 , 企画 , ディスカッションgit, フレームワーク , MySQL, Apache

シナリオ , ペルソナ , ワイヤフレーム , サイトマップ , DB スキーム

ゲーミフィケーション , 仮説検証 , データマイニング , アクセシビリティ

レスポンシブデザイン , プレゼンテーション

Page 4: Git

UT Startup Gym

M D 講師(敬称略) タイトル 要素

10 13飯塚 かんたん Facebook アプリをつくる HTML, CSS, js

  21飯塚 かんたん Twitter アプリをつくる UNIX, vim, PHP

  27 川上 かんたん アンケートフォームをつくる MySQL, MVC

11 4AWS 高山様 サーバを立てよう 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  リリース会  

04/12/2023 4

Page 5: Git

UT Startup Gym

動くかわからないコードを書くとき

04/12/2023 5

function hoge (val) {

/*work codes;*/

challenging codes;

}

不安なので、動いていたときのコードをコメント

アウトして書きます。

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

Page 6: Git

UT Startup Gym

コードのバックアップをするとき

04/12/2023 6

zip で固めてます。

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

Page 7: Git

UT Startup Gym

コードを共有するとき

04/12/2023 7

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

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

Page 8: Git

UT Startup Gym04/12/2023 8

そんなイケてないファイル管理とはおさらばしよう!

Page 9: Git

UT Startup Gym

バージョン管理ってなに?

04/12/2023 9

=変更履歴を管理するためのシステム。

Google Drive: Revision History

Mac OSX: Document Revisions

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

Page 10: Git

UT Startup Gym

SCENARIO 1/3

• あなたは小説を執筆している• いつも Word で書いていたが、できれば変更履

歴が残るようにして、色々な表現を試してみたい

• 作家仲間が Git を使っていることを知り、自分も使って見ることにした

04/12/2023 10

Page 11: Git

UT Startup Gym

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

04/12/2023 11

Page 12: Git

UT Startup Gym

(補足)初回の設定$ git config --global user.name = “Shuhei Iitsuka” # 名前の設定$ git config --global user.email = “[email protected]” # メールアドレスの設定$ git config --global color.ui true # 色分け

04/12/2023 12

Page 13: Git

UT Startup Gym

レポジトリとは• ファイルの変更履歴を格納している場所• スナップショット(コミット)を格納している

– 内部的には差分のみを保存することで、軽量化

04/12/2023 13

t

commit: ca1ajcommit: dc3f9commit: a924scommit: e3kvf

Page 14: Git

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

04/12/2023 14

Page 15: Git

UT Startup Gym

コミット

04/12/2023 15

作業ディレクトリ

ワーキングツリー

インデックス

Page 16: Git

UT Startup Gym

コミット

04/12/2023 16

作業ディレクトリ

ワーキングツリー

インデックス

modify

Page 17: Git

UT Startup Gym

コミット

04/12/2023 17

作業ディレクトリ

ワーキングツリー

インデックス

add ( ステージング )

Page 18: Git

UT Startup Gym

コミット

04/12/2023 18

作業ディレクトリ

ワーキングツリー

インデックス

commit

Page 19: Git

UT Startup Gym

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

04/12/2023 19

コミット ID

Page 20: Git

UT Startup Gym

前の状態に戻す$ git log --onelined6fd8cb add new lined090f59 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”

04/12/2023 20

Page 21: Git

UT Startup Gym

git reset

• 特定のコミットに遡る– hard オプションをつけると、今のワーキングツリー

にある変更を完全に破棄するので注意– (つけないと、さかのぼったファイルをワーキングツ

リーに追加する(実際に挙動を見てみてください))

04/12/2023 21

参考 http://d.hatena.ne.jp/murank/20110327/1301224770

Page 22: Git

UT Startup Gym

git checkout

• 今回は特定のファイルのみを任意のコミットの状態に復元するのに使った– そして、また新しくコミットをつくる

• ブランチの説明でまた出てきます。• めちゃ奥が深いコマンドのひとつ。

04/12/2023 22

Page 23: Git

UT Startup Gym

SCENARIO 2/3

• ある日出版社の編集長とファイルを共有し、共同で編集していくことになった。

• お互いにいつ・どこを編集したのか、確認しながら進めたい。

04/12/2023 23

Page 24: Git

UT Startup Gym

レポジトリの構成

04/12/2023 24

ベアレポジトリ

出版社

EC2

ローカルレポジトリ

あなたの書斎

ローカルレポジトリ

push pushpullpull

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

Page 25: Git

UT Startup Gym

ベアレポジトリの作成[email protected] ~$ [email protected] ~$ git clone --bare mynovelCloning into bare repository 'mynovel.git'... [email protected] ~$ lsmynovel mynovel.git これがベアレポジトリ

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

04/12/2023 25

Page 26: Git

UT Startup Gym

ローカルレポジトリの作成you@home ~$ git clone ssh://[email protected]/home/ubuntu/mynovel.gityou@home ~$ cd mynovelyou@home mynovel$ ls –aいろいろなファイル .git これがローカルレポジトリ。ここからはシナリオ1と同じ。you@home mynovel$ vim overture.txtyou@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

04/12/2023 26

Page 27: Git

UT Startup Gym

origin master

• origin => ec2.com 上のベアレポジトリのこと– .git/config をみると確認できる

• master => master ブランチ– master? ブランチ ??

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

04/12/2023 27

Page 28: Git

UT Startup Gym

【ワーク】コンフリクト• みんなで overture.txt を編集して push しま

しょう。• CONFLICT という文字が出た人は手を挙げて教

えてください。

04/12/2023 28

Page 29: Git

UT Startup Gym

【ワーク】犯人探しyou@home ~$ git blame overture.txt

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

04/12/2023 29

Page 30: Git

UT Startup Gym

SCENARIO 3/3

• いままで書いた小説を連載としてウェブ上で公開することになった。

• 編集を終えたバージョンを公開する一方、裏で編集長と協力してアップデートを続けたい。

• しかし、編集中のものを公開するわけにはいかない。

04/12/2023 30

Page 31: Git

UT Startup Gym

レポジトリとサーバの構成

04/12/2023 31

ベアレポジトリ

出版社

ローカルレポジトリ

あなたの書斎

ローカルレポジトリ

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

ローカルレポジトリ

pull (master) 公開中のウェブサーバ

Page 32: Git

UT Startup Gym

ブランチ @ 家you@home mynovel$ git branch staging # staging ブランチの作成 you@home mynovel$ git branch # ブランチの確認* master stagingyou@home mynovel$ git checkout staging # staging ブランチに切り替えyou@home mynovel$ git branchyou@home mynovel$ vim overture.txtyou@home mynovel$ git add .you@home mynovel$ git commit –m “modify overture”you@home mynovel$ git pull origin stagingyou@home mynovel$ git push origin staging

04/12/2023 32

Page 33: Git

UT Startup Gym

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

04/12/2023 33

Page 34: Git

UT Startup Gym

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

04/12/2023 34

master

staging ←ここで最終確認

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

Page 35: Git

UT Startup Gym

ブランチ構成の例• master

– 最終版、公開して OK なコードだけが乗る• staging

– テスト段階のコードが乗る• dev

– 開発中のコードが乗る• topic_*

– あるバグに取り組んでいる人、チームのみで共有するブランチ

04/12/2023 35

Page 36: Git

UT Startup Gym

これからやるといいこと• とりあえず、明日から何かひとつのディレクト

リに Git レポジトリを導入してみましょう。– Excel や 画像などのバイナリファイルではな

く、 txt やプログラムなどのテキストファイルを管理するディレクトリで

• GitHub を使ってみる

04/12/2023 36