インフラ勉強会で始めるgit

スピーカー

inductor さん

概要

gitとか全然わからん!

そんなあなたと一緒に、gitを基本から説明します。 コードを書かないというあなたにもおすすめの、バージョン管理システムの素晴らしさをインフラから勉強していきましょう!

gitってなんだっけ

  • Linuxを作ったすごいおじさんがつくったバージョン管理システム
    • あのLinuxを作った人が!!というだけで信頼できそう
  • git コマンドを駆使してファイルの変更管理をする
  • SourceTree
    • ボタンぽちぽちして管理ができるので便利
    • でもコマンドは使えた方が良い
  • 特徴
    • ブランチ/ローカル・リモートリポジトリによる分散管理
  • 主にOSSやWEB系開発で使われることが多い

バージョン管理のいろいろ

  • ファイルや仕様をいつ、だれが変更したかの記録を残すために考案された
  • 日付管理、Excel管理は履歴を追ったり変更を戻したりするのが大変
    • できればやりたくない
  • CVS:明治大正時代のシステム
  • SVN:昭和感残るバージョン管理システム
  • CVS/SVNは集中型バージョン管理システム
  • Gitは分散型バージョン管理システム

SVNの利点と問題点

  • 利点
    • コマンド体系がシンプル
    • リポジトリをcloneしなくてもいい
      • サーバ上に大本のリポジトリがあってそれをローカルに借りてきて管理する
  • 欠点
    • 全てのcommitが中央リポジトリに集中
      • ローカルで一時的に変更を適用したりブランチを切った管理がやりづらい
    • 今時バージョン管理やるならgitぐらい知っとこ!

SVNとGitの違い

歴史の積み重ねの仕方が違う

  • SVN
    • 「ここが違う」「ここが違う」と記録
    • 「真の意味の差分」
  • Git
    • 「今はこれ」「今はこれ」と記録

gitとかgithubってどう違うの

  • Git: 分散型バージョン管理システムの名前
  • Github: Gitを使ったソフトウェア開発を手助けするホスティングサイト
  • Githubはサービスなのでオンプレ環境で云々するものではない
  • 閉じたNetwork向けに Github Enterprise と呼ばれるオンプレ設置可能なサービスも提供している
  • Gitホスティングサービスは他に Gitlab, Bitbucket, Backlog?, Gitbucket など...

ブランチ管理とは

  • ブランチ=枝
  • Gitではcommitする時にbranchと呼ばれる枝を指定することができる
  • commit前に変更を検証したり、複数同時にいろいろな変更を加えても影響が少ないようにできる
  • 自分の変更のみに集中できる

やってみよう

使ったコマンド

git clone git status git add . git commit -m "aiueo" git log tig git checkout git version git init git branch git diff git reset git reflog git blame
  • tig

    • gitに入ってるツール
    • Githubを見に行かなくても何が起こっているかわかるので便利
  • git init

    • .git/ が生成される
    • git 管理に関係するファイルが入る
  • git はリセットできる

    • git reset --hard <hash>
    • シュタゲを見るべし(2011年)
    • 歴史改変できるが歴史は残る
  • .gitignore

    • 特殊なファイル
    • ここに記載したファイル名は管理対象からはずされる
    • .gitignore のいろんなサンプル:github/gitignore