Priner of git
-
Upload
fumio-sagawa -
Category
Technology
-
view
272 -
download
3
description
Transcript of Priner of git
自己紹介
Name:
佐川 夫美雄@albatrosary
http://ameblo.jp/sgw3a/
Users Group:Tokyo.R/html5j.org/jsug/mybatis-users/(ソフトウェア品質技術者のための)データ分析会
今日はハンズオンですので実際にコマンド叩きます途中ミスってもそれはそれで、デモですので空気を呼んで心広い対応をお願いします
では、はじめます
初級編の目標
・よく使う git コマンドを覚える
・git の基本動作を身につける
・1人 git でがんばれる(複数人 git はまた今度)
git の特徴
・分散型バージョン管理システム
・多くのオープンソースプロジェクトで使われている ← オープンソースを利用するときに git の知識を持っている方がよりよい
・1人バージョン管理、チームでのバージョン管理など気軽にファイル管理できる
git のイメージ
Repository
Repository
Repository
IndexWorking Tree
Repository
ローカルOrigin
push/pull
commit/checkoutadd/reset
自分の Repositoryを壊しても誰からも怒られない
それぞれのファイルの差分を個別に管理
スナップショットとしてデータを管理
git と svn の違い
ちなみに
gitgithubgithub:E(github Enterprise)
これ違うものです
git は 分散型バージョン管理システムgithub は git を使うためのハブgithub:E(github Enterprise) は github の イメージ(VMを含め)をローカル環境に置けるもの
世の中どのくらい git が気になっているかトレンド
http://www.google.com/trends/explore#cat=0-5&q=Git%2C%20Subversion&cmpt=q
ようやく本題!!
git のインストールMAC だと既に入ってます。MacPortsからダウンロードWindows では下記 url からダウンロードします。msys版とcygwin版がありますが、msys版がおすすめ
http://code.google.com/p/msysgit/downloads/list
git の状態Working Tree:git 配下でユーザが作業する場所Index:リポジトリー登録する前の一時領域git はスナップショット(ファイルの固まり)として管理しているため Index というバケツを用意しているRepository:管理するファイルを蓄積するデータベース。CVS、Subversionでは全体として1つの管理だが、git ではローカルにもリポジトリーが存在する。
この概念を頭に入れてファイル管理するのでかなり面倒覚えると超ハッピー!!
git の状態遷移git init
git add git commit
git checkout
git diff git diff --cached
git diff HEAD
Sample.txtSample.txt Sample.txt
demo.txtdemo.txtdemo.txt
Sample.txtSample.txt
demo.txtdemo.txt
Index RepositoryWorking Tree
git reset
git checkout
よく使うコマンドgit config:git の設定をするgit init:git の管理下にディレクトリを設定するgit add:インデックスへのファイル登録git commit:リポジトリへファイルを登録するgit rm:git からファイルを削除する。Working Treeから実態を削除git show:コミット情報を表示するgit status:リポジトリの状態を確認するgit checkout:変更前に移動したりもとに戻ったりするgit reset:変更をなかったことにするgit revert:コミットをなかったことにする(commit を作る)git diff:各ステージの差分を確認するgit log:コミットログの確認をする
.gitignoreファイル:リポジトリの管理対象外にする定義ファイル
.gitconfigファイル:git configコマンドで発行された設定情報を保持する
ハンズオン
$ mikdir temp$ cd temp
git 用の作業ディレクトリ作成
$ git init
git 用に初期化
.gitディレクトリが作成されます
.git の中身を確認
$ git config --global user.name “Fumio SAGAWA”$ git config --global user.email [email protected]
git の設定
git config --global:ユーザ(ログインユーザ)の git 設定git config --system:システム全体の git 設定git config:リポジトリの git 設定
git config
ここまでが git を使う準備ですsample.txt というファイルを使って実際にコマンドを叩いて行きます
$ echo hogehogehoge > sample.txt
git に管理させるファイルを生成
$ git add sample.txt
git add の発行
git addでこれが生成されている
$ git diff$ git diff --cached$ git diff HEAD
Working Tree, Index, Repositoryの違いを確認
HEAD:最新のコミットHEAD~:HEADの一つ前HEAD~~:HEADの二つ前HEAD~2:HEAD~~と同じHEAD^: HEAD~と同じHEAD^^: HEAD~~と同じ
HEAD について
$ vi sample.txt
ファイルの中身を変更しWorking Tree, Index, Repositoryの違いを確認
$ git add sample.txt$ git commit -m “first commit”
変更をすべて適用し commit
git commitでこれが生成されている
Working Tree, Index, Repositoryの違いを確認
$ git add sample.txtsample.txt を編集し git add
Working Tree, Index, Repositoryの違いを確認
更に sample.txt を編集しWorking Tree, Index, Repositoryの違いを確認
$ git status
git status は?
$ git log
git log は?
$ git show
git show は?
Woring Treeで定義された内容をgit commit し
git status, git log, git showを確認する
再度commit します
コマンドの打ち間違え
$ git status
git status は?
$ git log
git log は?
$ git show
git show は?
$ git rm sample.txt
git からファイルを削除する
この状態でgit status, git log, git show, git diff
を確認する
$ git status
git status は?
$ git log
git log は?
$ git show
git show は?
$ git diff$ git diff --cached$ git diff HEAD
git diff は?
$ git checkout HEAD sample.txt
git から check out してみる
次回(来週)は、複数人で利用するための方法をやります
・merge・branch・push / pull・tag・clone
・svn 連携
参考書
ご清聴ありがとうございました