27
UT Startup Gym Git をはじめよう! 飯塚 修平 UT Startup Gym

Git をはじめよう

Embed Size (px)

DESCRIPTION

UT Startup Gym (https://www.facebook.com/utgym) の Git 勉強会での講義資料です。

Citation preview

Page 1: Git をはじめよう

UT Startup Gym

Git をはじめよう!飯塚 修平

UT Startup Gym

Page 2: Git をはじめよう

UT Startup Gym

使用者の声

なんかここんとこ最近腰とか頭とかマジ痛くて吐き気もするしスゲー調子悪かったんスけど、Git 使うようになってから、そういうの全部なくなっちゃったんスよね。その体の調子の変わり目の時に何かしたかっていったら、ホントに Git をインストールしてあとちょっと薬飲んだくらいだし。インストールしてから数時間でなんか体の調子もよくなってきちゃって。インストールしたときはこれだけでこんなに変化するなんて思ってもなかったんスけど。ホントに Git 様々って感じっスわ。

22歳男性・東京都

ターミナルにscreenではなくbyobuを使うべき100の理由 - 馬鹿と天才は紙一重 http://d.hatena.ne.jp/shim0mura/20111005/1317819710

Page 3: Git をはじめよう

UT Startup Gym

Git のこんなところが便利• お前の書いたコードのお陰で動かなくなったんだけど?

• でも大丈夫!• 動いてた時点まで戻せばいいもんね!

HEAD

Page 4: Git をはじめよう

UT Startup Gym

Git のこんなところが便利• お前の書いたコードのお陰で動かなくなったんだけど?

• でも大丈夫!• 動いてた時点まで戻せばいいもんね!

HEAD

Page 5: Git をはじめよう

UT Startup Gym

Git のこんなところが便利• あ、マシンにお茶こぼしたー。あー、あー、あー。• でも大丈夫!• サーバのリポジトリから clone すればいいもんね!

サーバのリポジトリ

push

pullclone

NEW!

Page 6: Git をはじめよう

UT Startup Gym

Git のこんなところが便利• このコードいつ誰が書いたの?消してもいいの?• でも大丈夫!• コミットログを見ればいいもんね!

Page 7: Git をはじめよう

UT Startup Gym

Git をはじめよう!

ONE PLAYER GAMEMULTI PLAYER GAMEADVANCED MODE

Page 8: Git をはじめよう

UT Startup Gym

Git のインストールubuntu の方(VirtualBox とか EC2 とか)

# apt-get で git をインストールする $ sudo apt-get install git-core

mac OSX の方

# Homebrew のインストール$ ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"

# git のインストール$ brew install git

Page 9: Git をはじめよう

UT Startup Gym

Git のしくみ

master

topic

コミット= スナップショット

ファイルのスナップショットの集合のように考える。

Pro Git - Pro Git 1.3 使い始める Gitの基本 http://progit.org/book/ja/ch1-3.html

未来過去

ONE PLAYER GAME

Page 10: Git をはじめよう

UT Startup Gym

コミットのしくみONE PLAYER GAME

インデックス

ワーキングツリー

Page 11: Git をはじめよう

UT Startup Gym

コミットのしくみONE PLAYER GAME

インデックス

ワーキングツリー

Page 12: Git をはじめよう

UT Startup Gym

コミットのしくみONE PLAYER GAME

インデックス

ワーキングツリー

committed

git add

git commit

git status

Page 13: Git をはじめよう

UT Startup Gym

コミットのしくみONE PLAYER GAME

git log

git diff

Page 14: Git をはじめよう

UT Startup Gym

$ git init #レポジトリ (スナップショットの集合) の作成$ touch hoge $ git status$ git add hoge$ git status$ git commit -m “first set”$ git log$ git status$ vim hoge #適当に編集$ git status$ git diff$ git add . #untrackedまたはmodifiedをすべてステージング$ git commit -m “modified hoge to ...”$ git log...

ONE PLAYER GAME

Page 15: Git をはじめよう

UT Startup Gym

もとに戻す• git add を取り消す$ git reset HEAD※ HEAD: 現在編集中のコミットのこと

• ファイル hoge をコミットID 785b... の時点に戻したい$ git checkout 785b hoge-> 785b... の時点のものになった hoge がステージングされる-> 適宜修正して commit する

• HEAD^^^ = HEAD から3つ前のコミット• --soft オプションや --hard オプション• 実際は git が吐いてくれるコメント頼りです(丁寧!)。

ONE PLAYER GAME

git reset についてもまとめてみる-murankの日記- http://d.hatena.ne.jp/murank/20110327/1301224770

Page 16: Git をはじめよう

UT Startup Gym

Git の本領発揮は複数プレイ

• 高度なマージ機能• 常に最新のコードを共有• 詳細な編集ログ

MULTI PLAYER GAME

Page 17: Git をはじめよう

UT Startup Gym

ベアリポジトリ• ワーキングツリーを持たないリポジトリ-> コミットにしか興味を持っていません的な-> 実務的には push, pull が可能なリポジトリ  

MULTI PLAYER GAME

サーバのベアリポジトリdev.git

pushpull

clone

NEW!

ローカルのリポジトリdev/.git

ローカルのリポジトリdev/.git

ローカルのリポジトリdev/.git

clone --bare

Page 18: Git をはじめよう

UT Startup Gym

$ vim ~/.ssh/configHost ut-gym.jp IdentityFile /path/to/***.pem$ git clone [email protected]:/home/ubuntu/git/gittest.git$ cd gittest$ ごにょごにょ$ git commit -m “〇〇のために△△を××した”$ git config --global user.name "Your Name"$ git config --global user.email [email protected]$ git pull origin master$ コンフリクトするかも。解消するためにごにょごにょ$ git push origin master$ git log --graph

MULTI PLAYER GAME

Page 19: Git をはじめよう

UT Startup Gym

コンフリクトCONFLICT (content): Merge conflict in hogeAutomatic merge failed; fix conflicts and then commit the result.$ cat hoge<<<<<<< HEADabc=======hogepiyofuga>>>>>>> 7fhtq23...

git 的にどちらを優先すればいいのかわからない状態。コンフリクトに遭遇した人が責任をもって直します(笑)

Page 20: Git をはじめよう

UT Startup Gym

ブランチ• コミット列を分岐することが出来る。

未来過去master

topic_twitter

新機能開発!

いつでもリリースできる状態

完成したので合流!

ADVANCED MODE

Page 21: Git をはじめよう

UT Startup Gym

ブランチ(スロー)• コミット列を分岐することが出来る。

未来過去master

master

HEAD

ADVANCED MODE

Page 22: Git をはじめよう

UT Startup Gym

topic_twitter

ブランチ(スロー)• コミット列を分岐することが出来る。

未来過去master

$ git branch topic_twitter

master

topic_twitter

HEAD

ADVANCED MODE

Page 23: Git をはじめよう

UT Startup Gym

topic_twitter

ブランチ(スロー)• コミット列を分岐することが出来る。

未来過去master

$ git checkout topic_twitter

master

topic_twitter

HEAD

ADVANCED MODE

Page 24: Git をはじめよう

UT Startup Gym

topic_twitter

ブランチ(スロー)• コミット列を分岐することが出来る。

未来過去master

$ git add .$git commit -m “post to twitter complete!”

master

topic_twitter

HEAD

ADVANCED MODE

Page 25: Git をはじめよう

UT Startup Gym

topic_twitter

ブランチ(スロー)• コミット列を分岐することが出来る。

未来過去master

master

topic_twitter

HEAD

$ git checkout master

ADVANCED MODE

Page 26: Git をはじめよう

UT Startup Gym

topic_twitter

ブランチ(スロー)• コミット列を分岐することが出来る。

未来過去master

master

HEAD

$ git merge topic_twitter

topic_twitter

ADVANCED MODE

Page 27: Git をはじめよう

UT Startup Gym

花サプの例

ローカル1

master

ローカル2

master

stagingstaging

topic_mail topic_mail

topic_twitter

テスト用

master

staging

topic_mail

topic_twitter

デプロイ用

maint

staging

デプロイ時にマージ

デプロイ時にマージ

pushpullpullpush

pull

デプロイ