git, github超入門

15
, 超超超 @tstomoki

Upload: tomoki-saito

Post on 27-Nov-2014

1.883 views

Category:

Technology


0 download

DESCRIPTION

Gitの勉強会をする機会があったのでその資料をアップします I had a opportunity to open a small study session about Git and Github so I just uploaded the materials here.

TRANSCRIPT

Page 1: Git, Github超入門

    , 超入門 @tstomoki

Page 2: Git, Github超入門

目次•  • • 関連ツール• 概念• 基本的なコマンド• 練習

https://github.com/darashi/horesa.se

Page 3: Git, Github超入門

とは• グループ開発用の Version 管理システム– Linux の生みの親 Linus Torvalds 氏が開発( 現在のメンテナンスは濱野純氏 )

• 他の Version 管理システムとの比較時間軸的には

Linus TorvaldsがNVIDIAに対し中指を突き立てF発言(Gigazine)

Linus君がボクを後継者に指名した理由参考

TortoiseCVS

Page 4: Git, Github超入門

なぜ     を使うのか•       が一番優れているから

エディタ戦争(wiki)

参考Git 対 Subversion: 長引く争い

Share 率 ( 左から Bazzar, CVS, Git, Mercurial, Subversion) Git と Subversion が要求される職の相対的な成長度

Page 5: Git, Github超入門

   と     の違い•

– 単一リポジトリ– Commit したら即反映– Add するのは新規にファイルを追加するときだけ– リビジョン番号は数字– 考えるのは「ローカル」と「リポジトリ」の2つだけ

•  – 分散リポジトリ ( マスターは1つ )– Commit しても個人リポジトリにしか反映されない (push すると反映 )– Commit 前には毎回 add する必要あり– リビジョン番号はハッシュ値– 考えるのは「ローカル」と「インデックス」と「個人リポジトリ」、「マ

スターリポジトリ」の4つ

参考 subversionを使っていた人がgit便利だなと感じたこと

Page 6: Git, Github超入門

     の概念

リポジトリ

ローカル ローカル ローカル

Commit/update

Commit/update

Commit/update

・ネット環境がないと commit ができない・リポジトリの肥大化

Page 7: Git, Github超入門

     の概念マスターリポジ

トリ

個人リポジトリ個人リポジトリ

個人リポジトリ

Push/fetch

merge or rebase / commit

ローカルローカル ローカル

インデックスインデックス インデックス

Push/fetch

Push/fetch

merge or rebase / commit

merge or rebase / commit

add

add

addファイル更新

ファイル更新 ファイル更新

Page 8: Git, Github超入門

     の概念マスターリポジ

トリ

個人リポジトリ個人リポジトリ

個人リポジトリ

Push/fetch

merge or rebase / commit

ローカルローカル ローカル

インデックスインデックス インデックス

Push/fetch

Push/fetch

merge or rebase / commit

merge or rebase / commit

add

add

addファイル更新

ファイル更新 ファイル更新

ここまでローカルで完結

Page 9: Git, Github超入門

     の概念• branch 機能

– 並行して行われる複数の機能追加やバージョン管理支援機能

サルでもわかるGit入門「ブランチとは」引用 :

https://github.com/darashi/horesa.se

Page 10: Git, Github超入門

     とは• Git リポジトリのホスティングサービス

– 開発者やチームが高速で良い品質のコードを生み出すためのコラボレーション機能の提供

• 革新的機能 ( 科学者達の化学反応、創発 )– Fork– Pull request– Issue

• 開発されている言語– Ruby on Rails– node– jQuery– Symfony2– Bootstrap– elixir, etc

Github

https://github.com/darashi/horesa.se

Page 11: Git, Github超入門

関連ツール• GUI ツール– Source Tree, GitX– EGit

• テスト–   

•  デプロイ–  – Fabric – Cinnamon(https://github.com/kentaro/cinnamon)

参考

Jenkinsを本気で怒らせたらこうなる

ぼくとJenkinsおじさんの360日戦争

Page 12: Git, Github超入門

基本的なコマンド• 代表的なコマンドをいくつか– git init   (git の初期化 )– git status ( 現在の状況表示 )

(息を吸うように「 git status 」、なんなら alias しちゃいましょう)

– git add (file を index に追加 )– git commit (file をローカルリポジトリに追加 )

(svn から来てる人がよくやる git commit –a は御法度 )

– git diff ( 差分の確認 )– git branch(branch の確認 )(息を吐くように「 git branch 」、「すいません、違うブランチに push しちゃいました」はよくあるGit 事故 Top3 )

– git merge (branch のマージ )– git rebase (branch の rebase)

Git 7つの心構え参考 :

Page 13: Git, Github超入門

練習• 練習用リポジトリを fork して使ってください• 内容としては– fizzbuzz.py ( アルゴリズムの変更、可読化 )– novel.txt ( 小説の作成 )– typos.txt ( 誤字脱字の修正 )

• 好きなようにやって commit等しながら学ぶスタイル• git status, add, commit, reset, revert, log, merge, rebase, stash,

reflog, cherry-pick, conflict くらいが見れればいいかなと。

Page 15: Git, Github超入門

参考・推薦サイト等• サイト

– gitとsubversionのコマンド対応表  ( subversion から来た人はここから)– Git初心者が見るべきサイトまとめ (この辺全部見とけばどうにかなる)– チーム開発に必要なgit コマンドを神速で習得しよう!-酒と泪とRubyとRailsと 

(効率的に学べる気がする)– LearnGitBranching (Git の Branch をクイズ形式で学べるサイト )

• slideshare, SpeakerDeck– いつやるの?Git入門  (これみれば Git 内部の動きが理解できる)– こわくないGit (branch, merge, rebase についての恐怖をなくしたいならこれ )

– Git 7つの心構え (rebase についてちゃんと学べる )

• 参考図書– 大塚弘記 , 「 GitHub 実践入門 - Pull Request による開発の変革」 , 技術評論社