Download - Git for beginners
Git入門
12年4月17日火曜日
自己紹介• 氏名:加門昭平
• @cameong
• id: kmn23
12年4月17日火曜日
目標• Gitのフローを把握する
• 一人でGitで遊べるようになる
12年4月17日火曜日
さてGit入門• Gitとは
• プログラムなどのソースコード管理を行う分散型バージョン管理システム。動作速度に重点が置かれている。
• Gitではワーキングディレクトリがレポジトリのすべての履歴を含んでいるため中央サーバーへのアクセス不可能な状態でもリビジョン間の履歴を調査することができる.
(引用http://ja.wikipedia.org/wiki/Git)
12年4月17日火曜日
バージョン管理システムいろいろ
• 個別バージョン管理システム• ファイル単位で個別システムでバージョン管理を行う• 例: RCS
• 集中型バージョン管理システム• レポジトリをサーバーで一元管理し、コミットなどの操作はクライアントから行う( サーバー・クライアント型 )
• 例:Subversion, CVS
• 分散型バージョン管理システム• レポジトリをクライアントでも管理する。このクライアント間でレポジトリを連携できる。
• 例: Git, Mercurial,BitKeeper, Bazaar
12年4月17日火曜日
Subversionの場合• 通常、サーバー・クライアント型の構成を取る。• リポジトリはサーバー上に格納されている。• リポジトリに対する操作はクライアント( PC )から行うが、ネットワーク的に繋がっていないといけない。• コミット情報は連番で管理• ファイルは差分管理
SNVサーバー
PC
ユーザ
コミット
アップデート
PC
ユーザ
コミット
アップデート
PC
ユーザ
コミット
アップデート
12年4月17日火曜日
Gitの場合リモートリポジトリ
PC
ユーザ
Push
Pull / clone
PC
Push
Pull / clone
PC
ユーザ
Push
Pull / clone
• レポジトリをサーバー上だけではなく、クライアント(CP)にも作成する。• コミットの差分や履歴はPC上のリポジトリを参照するため、サーバーに接続していなくても大丈夫。• コミット情報はハッシュ値で管理• ファイルをそのまま保持している
add /commit
add /commit
add /commit
12年4月17日火曜日
Gitの基本的な用語• リポジトリ
• バージョン管理システムにおいて、プログラムやファイルを蓄積しておく場所
• ローカルリポジトリ • 現在作業中のリポジトリ• git add やgit commit の対象となるリポジトリ
• リモートリポジトリ • ローカルリポジトリに対して、外部にあるリポジトリ• git clone やgit pull, git push の対象となるリポジトリ
• ワーキングツリー• ユーザが作業する場所
• Gitにおいては、ローカルレポジトリの. gitディレクトリがある場所
• コミット• ファイルの変更をローカルリポジトリに反映すること
12年4月17日火曜日
Gitの基本的なワークフロー
リポジトリの作成
ファイルの新規作成と編集
インデックスへの登録
コミット
1. リポジトリの作成2. ファイルの作成と編集3. インデックスへの登録4. リポジトリへのコミット
12年4月17日火曜日
リポジトリの作成
リポジトリの作成
ファイルの新規作成と編集
インデックスへの登録
コミット
git init : リポジトリを作成する
ホームディレクトリ直下にリポジトリsampleを作成する
$ mkdir sample$ cd sample$ git initInitialized empty Git repository in ~/sample/.git/$ ls -a. ←ワーキングツリー
.git ←ローカルリポジトリ
git init
12年4月17日火曜日
ファイルの新規作成と編集
リポジトリの作成
ファイルの新規作成と編集
インデックスへの登録
コミット
git status: 状態を確認する
先ほどのリポジトリにファイルを新規作成してみます
$ ls sample_bashrc$ git status# On branch master## Initial commit## Untracked files:# (use "git add <file>..." to include in what will be committed)## sample_bashrcnothing added to commit but untracked files present (use "git add" to track)
git init
12年4月17日火曜日
インデックスへの登録
リポジトリの作成
ファイルの新規作成と編集
インデックスへの登録
コミット
git add : インデックスに登録する
先ほどのファイルをインデックスに登録する
$ git add sample$ git status# On branch master## Initial commit## Changes to be committed:# (use "git rm --cached <file>..." to unstage)## new file: sample_bashrc#
git init
git add
12年4月17日火曜日
コミット
リポジトリの作成
ファイルの新規作成と編集
インデックスへの登録
コミット
git commit : ローカルレポジトリにインデックスに登録 された変更を反映するgit log : git commit の履歴をみる$ git commit -m “Tis is the first commit”[master (root-commit) 619d683] Tis is the first commit 0 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 sample_bashrc
$ git status# On branch masternothing to commit (working directory clean)
$ git logcommit 619d6838d6c48cfe856fd560abed16fb97aa12e8Author: kamon_shohei <[email protected]>Date: Mon Apr 16 01:05:17 2012 +0900
Tis is the first commit
git init
git add
git commit
12年4月17日火曜日
タイポしちまったときウワァァァァァァヽ(`Д´)ノァァァァァァン!
$ git logcommit 619d6838d6c48cfe856fd560abed16fb97aa12e8Author: kamon_shohei <[email protected]>Date: Mon Apr 16 01:05:17 2012 +0900
Tis is the first commit
12年4月17日火曜日
git commit --amendgit commit --amend : 直前のコミットメッセージを変更する
$ git commit --amend 1 Tis is the first commit ← この行を編集する 2 3 # Please enter the commit message for your changes. Lines starting 4 # with '#' will be ignored, and an empty message aborts the commit. 5 # On branch master 6 # 7 # Initial commit 8 # ...
$ git log ...This is the first commit ...
修正された12年4月17日火曜日
Gitの基本的なワークフロー(まとめ)
リポジトリの作成
ファイルの新規作成と編集
インデックスへの登録
コミット
1. リポジトリの作成2. ファイルの作成と編集3. インデックスへの登録4. リポジトリへのコミット
git init
git commit
git add
-
インデックスの確認:git status
コミットログの確認:git log12年4月17日火曜日
gitのインストール方法• Windows
• Cygwin / MinGW / TortioseGit
• Mac
• port install git-core
• brew install git
• Gnu Linux
• yum install git-core
• apt-get install git-core
12年4月17日火曜日
参考文献• Gitによるバージョン管理
岩松 信洋 (著), 上川 純一 (著), まえだこうへい (著), 小川 伸一郎 (著)
12年4月17日火曜日
ご清聴ありがとうございました
12年4月17日火曜日