git, github超入門
DESCRIPTION
Gitの勉強会をする機会があったのでその資料をアップします I had a opportunity to open a small study session about Git and Github so I just uploaded the materials here.TRANSCRIPT
, 超入門 @tstomoki
目次• • • 関連ツール• 概念• 基本的なコマンド• 練習
https://github.com/darashi/horesa.se
とは• グループ開発用の Version 管理システム– Linux の生みの親 Linus Torvalds 氏が開発( 現在のメンテナンスは濱野純氏 )
• 他の Version 管理システムとの比較時間軸的には
Linus TorvaldsがNVIDIAに対し中指を突き立てF発言(Gigazine)
Linus君がボクを後継者に指名した理由参考
TortoiseCVS
なぜ を使うのか• が一番優れているから
エディタ戦争(wiki)
参考Git 対 Subversion: 長引く争い
Share 率 ( 左から Bazzar, CVS, Git, Mercurial, Subversion) Git と Subversion が要求される職の相対的な成長度
と の違い•
– 単一リポジトリ– Commit したら即反映– Add するのは新規にファイルを追加するときだけ– リビジョン番号は数字– 考えるのは「ローカル」と「リポジトリ」の2つだけ
• – 分散リポジトリ ( マスターは1つ )– Commit しても個人リポジトリにしか反映されない (push すると反映 )– Commit 前には毎回 add する必要あり– リビジョン番号はハッシュ値– 考えるのは「ローカル」と「インデックス」と「個人リポジトリ」、「マ
スターリポジトリ」の4つ
参考 subversionを使っていた人がgit便利だなと感じたこと
の概念
リポジトリ
ローカル ローカル ローカル
Commit/update
Commit/update
Commit/update
・ネット環境がないと commit ができない・リポジトリの肥大化
の概念マスターリポジ
トリ
個人リポジトリ個人リポジトリ
個人リポジトリ
Push/fetch
merge or rebase / commit
ローカルローカル ローカル
インデックスインデックス インデックス
Push/fetch
Push/fetch
merge or rebase / commit
merge or rebase / commit
add
add
addファイル更新
ファイル更新 ファイル更新
の概念マスターリポジ
トリ
個人リポジトリ個人リポジトリ
個人リポジトリ
Push/fetch
merge or rebase / commit
ローカルローカル ローカル
インデックスインデックス インデックス
Push/fetch
Push/fetch
merge or rebase / commit
merge or rebase / commit
add
add
addファイル更新
ファイル更新 ファイル更新
ここまでローカルで完結
の概念• branch 機能
– 並行して行われる複数の機能追加やバージョン管理支援機能
サルでもわかるGit入門「ブランチとは」引用 :
https://github.com/darashi/horesa.se
とは• Git リポジトリのホスティングサービス
– 開発者やチームが高速で良い品質のコードを生み出すためのコラボレーション機能の提供
• 革新的機能 ( 科学者達の化学反応、創発 )– Fork– Pull request– Issue
• 開発されている言語– Ruby on Rails– node– jQuery– Symfony2– Bootstrap– elixir, etc
Github
https://github.com/darashi/horesa.se
関連ツール• GUI ツール– Source Tree, GitX– EGit
• テスト–
• デプロイ– – Fabric – Cinnamon(https://github.com/kentaro/cinnamon)
参考
Jenkinsを本気で怒らせたらこうなる
ぼくとJenkinsおじさんの360日戦争
基本的なコマンド• 代表的なコマンドをいくつか– 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つの心構え参考 :
練習• 練習用リポジトリを fork して使ってください• 内容としては– fizzbuzz.py ( アルゴリズムの変更、可読化 )– novel.txt ( 小説の作成 )– typos.txt ( 誤字脱字の修正 )
• 好きなようにやって commit等しながら学ぶスタイル• git status, add, commit, reset, revert, log, merge, rebase, stash,
reflog, cherry-pick, conflict くらいが見れればいいかなと。
環境設定• windows, Mac, ubuntu の初期環境設定については簡単に
まとめました →
• 自分の環境に合わせて好きなクライアント等でやってみてください
• リポジトリの作り方とかも色々– zshの設定と.zshrcをgit,dropboxでマシン別に一元管理する方法– Ubuntu上にgitサーバの構築
gitの初期設定まとめ
参考・推薦サイト等• サイト
– gitとsubversionのコマンド対応表 ( subversion から来た人はここから)– Git初心者が見るべきサイトまとめ (この辺全部見とけばどうにかなる)– チーム開発に必要なgit コマンドを神速で習得しよう!-酒と泪とRubyとRailsと
(効率的に学べる気がする)– LearnGitBranching (Git の Branch をクイズ形式で学べるサイト )
• slideshare, SpeakerDeck– いつやるの?Git入門 (これみれば Git 内部の動きが理解できる)– こわくないGit (branch, merge, rebase についての恐怖をなくしたいならこれ )
– Git 7つの心構え (rebase についてちゃんと学べる )
• 参考図書– 大塚弘記 , 「 GitHub 実践入門 - Pull Request による開発の変革」 , 技術評論社