Gitは分散型のバージョン管理システムである。分散型バージョン管理システムは、リポジトリが複数あるバージョン管理システムである。Gitはリモートサーバにある中心リポジトリのコピーをローカル環境にコピーして、そのローカルリポジトリを使って作業を行う。

スポンサーリンク

Gitのインストール

  1. GitのWebサイトを開く。
    http://git-scm.com/
  2. 「Downloads」をクリックする。
  3. 「Windows」をクリックする。
  4. ファイルのダウンロードが始まる。
  5. ダウンロードしたファイルを実行する。
    Version 1.8.3の場合はGit-1.8.3-preview20130601.exe

gitコマンド

git [--version] [--help] [-c name=value] [--exec-path[=path]] [--html-path] [--man-path] [--info-path] [--p|--paginate|--nopager] [--noreplace-objects] [--bare] [--git-dir=path] [--work-tree=path] [--namespace=name] command [arg...]
--version
バージョンを表示する。
--help
コマンド一覧を表示する。
--exec-path
gitの中核(core)プログラムがインストールされているパスを表示する。
--html-path
gitのHTML文書がインストールされているパスを表示する。
--p, --paginate
すべての出力をページャ(less)で出力する。
--nopager
gitの出力をページャで出力しない。
--git-dir=path
リポジトリのパスを指定する。
--bare
リポジトリを裸(bare)のリポジトリとして扱う。

commandに指定できるコマンドを次に示す。

gitのサブコマンド
コマンド 説明
add 新しいファイルや修正したファイルのコンテンツを索引に追加する。
branch ブランチを作成又は削除する。
checkout チェックアウトする。
clone リポジトリを新しいディレクトリに複製する。
commit 記録された変更をローカルリポジトリに反映する。
init 空のGitリポジトリを作成する。または既存のリポジトリを再初期化する。
mv ファイルやディレクトリの名前を変更したり場所を移動する。
pull 他のリポジトリ又はローカルブランチをフェッチしてからマージする。
push リモートリポジトリを更新する。

git branch

git branchはブランチを作成するコマンドである。

git branch [branch-name]

branch-nameを省略した場合、ブランチの一覧を表示する。branch-nameを指定した場合、ブランチを作成する。

ブランチの一覧を表示する。

git branch

ブランチを作成する。

git branch foo

ブランチを削除する。

git branch -d foo

リモートのブランチを削除する。

git branch -d foo
git push origin :foo

git checkout

git checkoutはチェックアウトするコマンドである。

git checkout [-b] branch-name

ブランチを切り替える。

git checkout foo

ブランチを作成して、そのブランチに切り替える。

$ git checkout -b foo
Switched to a new branch 'foo'

$

git init

git initはGitリポジトリを新たに作成するコマンドである。このコマンドは、バージョン管理を行っていない既存のプロジェクトをGitリポジトリに変換する場合や、空の新規リポジトリを作成して初期化する場合に使用する。

git init [--bare] [directory]

directoryで指定したパスに空のGitリポジトリを作成する。directoryの指定を省略した場合は、カレントディレクトリをGitリポジトリに変換する。

git initコマンドには次に示すオプションを指定することができる。

--bare
作業ディレクトリを持たない空のGitリポジトリを作成する。共有リポジトリは必ず--bareフラグを指定して作成しなければならない。作業ディレクトリを持たないリポジトリでは、ファイルの編集やコミットをすることはできない。

git clone

git cloneは、既存のGitリポジトリのコピーを作成するコマンドである。リポジトリのクローンを行うと、元のリポジトリを指すoriginという名前のリモート接続が自動的に作成される。これにより、簡単に中央リポジトリとの通信を行うことができる。中央リポジトリから開発者の作業コピー(ローカルリポジトリ)を新たに作成する場合は、git cloneコマンドを使用する。

git clone [--template=template-directory] [-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror] [-o name] [-b name] [-u upload-peak] [--reference repository] [--separate-git-dir git-dir] [--depth depth] [--[no-]single-branch] [--recursive|--recurse-submodules] [--] repository [directory]

git config

git configはGit又はリポジトリの設定を行うコマンドである。Gitのインストール後にまず設定すべき属性は、著者の名前と電子メールアドレスである。

git cofig [--global] attribute values...

attributeには、次の表に示す属性を指定する。

属性 説明
user.name コミットに使われる著者の名前
user.email コミットに使われる著者の電子メールアドレス
alias.name Gitサブコマンドの別名
core.editor 使用するエディタ

リモートリポジトリを複製する例を次に示す。

$ git clone c:/repo
Cloning into 'repo'...
done.

git add

git addは、作業ディレクトリの内容をステージングエリアに追加するコマンドである。このコマンドは、個々のファイルの更新内容を次回コミットの対象となることをGitに指示する。

git add path

pathにはファイルまたはディレクトリのパスを指定する。ディレクトリのパスを指定した場合は、ディレクトリ内のすべての変更をステージして次回のコミットの対象とする。

git commit

git commitは、ステージされたファイルをローカルリポジトリにコミットするコマンドである。

git commit [-m "message"]

このコマンドには次に示すオプションを指定することができる。

-m "message"
コミットメッセージを指定する。-mオプションを指定しなかった場合は、テキストエディタが起動されてコミットメッセージの入力を求められる。

コミットする例を次に示す。

$ git commit -m "first commit"

git status

git statusは、作業ディレクトリの状態を表示するコマンドである。このコマンドを実行すると、ステージされた変更内容、ステージされていない変更内容及びGitによる追跡の対象外となっているファイルが表示される。

git log

git logは、コミット済みの履歴を表示するコマンドである。

git log [-n limit] [--oneline] [--stat] [-p]

このコマンドには次の示すオプションを指定することができる。

-n limit
表示するコミットをlimitに制限する。
--oneline
コミットの内容を1行に圧縮して表示する。
--stat
改変されたファイル及びその中での追加行数と削除行数を増減数で表示する。
-p
各々のコミットに対応するパッチを表示する。コミット履歴から取得できる詳細な情報である各々のコミットの完全な差分情報が表示される。
git log > /tmp/log.txt

git diff

git diff [options] [commit] [--] [path...]
git diff [options] --cached [commit] [--] [path...]
git diff [options] commit commit [--] [path...
git diff [options] blob blob
git diff [options] [--no-index] [--] path path

git fetch

git fetch [options] [repository [refspec..]]
git fetch [options] group
git fetch --multiple [options] [(repository|group)...]
git fetch --all [options]

git help

helpコマンドは、Gitに関するヘルプ情報を表示するコマンドである。

git help [-a|--all] [-g|--guide] [-i|--info|-m|--main|--web] [COMMAND|GUIDE]

git merge

git merge [-n] [--stat] [--no-commit] [--squash] [--[no-]edit] [-s strategy] [-X strategy-option] [--[no-]rerere-autoupdate] [-m msg] [commit...]
git merge msg HEAD commit...
git merge --abort

git mv

git mvは、ファイルやディレクトリの名前を変更したり、場所を移動するコマンドである。変更前のファイルを削除(git rm)して、変更後のファイルをステージング(git add)する。また、ワーキングコピーのファイルも実際に名前変更や移動が行われる。

git mv [-v] [-f] [-n] [-k] source destination
git mv [-v] [-f] [-n] [-k] source... destination-directory

ファイルfoo.phpbar.phpに変更する例を示す。

git mv foo.php bar.php

git pull

git pull [options] [repository [refspec..]]

git remote

リモートリポジトリに別名を付ける

gitコマンドでリモートリポジトリを指定する場合、URLで指定する。しかし、URLは文字数が多いうえ分かりにくい。そこで、短くてわかりやすい別名をリモートリポジトリに付けることができる。リモートリポジトリに付けた別名は.git/configファイルに保存される。

git remote add remote-name url

Gitの初期設定

  1. スタートメニューから[すべてのプログラム] - [Git] - [Git Bash]をクリックする。
  2. ユーザ名を登録する。
    $ git config --global user.name horiuchi
  3. メールアドレスを登録する。
    $ git config --global user.email horiuchi@foo.bar.baz
  4. 日本語を含んだファイル名が正しく表示されるよう設定する。
    $ git config --global core.quotepath off
  5. Gitの出力をカラーリングする。
    $ git config --global color.ui auto

共有リポジトリの作成

  1. ディレクトリ(フォルダ)を作成する。
  2. 作成したディレクトリ(フォルダ)に移動する。
  3. 共有として初期化する。
    $ git init --bare --shared=true

リポジトリの作成

  1. フォルダを作成する。
    C:\repo
  2. Git Bashを起動する。
  3. フォルダに移動する。
    $ cd /c/repo
  4. 初期化する。
    $ git init
    Initialized empty Git repository in c:/repo/.git/

リモートリポジトリの確認

  1. 存在するリモートリポジトリの一覧を表示する。
    $ git remote
  2. 存在するリモートリポジトリの詳細を表示する。
    $ git remote -v
  3. リモートリポジトリの情報を表示する。
    $ git remot show origin

フェッチとマージ

  1. フェッチする。
    $ git fetch
  2. ログを見る。
    $ git log FETCH_HEAD
  3. ローカルリポジトリに取り込んだ変更内容を確認する。
    $ git diff FETCH_HEAD
  4. マージする。
    $ git merge FETCH_HEAD
  5. リモートリポジトリの更新動作を確認する(実際には更新しない)。
    $ git push -n origin master:master
  6. リモートリポジトリを更新する。
    $ git push origin master:master

コンフリクト(競合)の解消

  1. コンフリクトしているファイルの一覧を表示する。
    $ git ls-files -u
  2. ファイルの状態を表示する。
    $ git status
  3. ファイルを修正する。
  4. 修正したファイルをインデックスに追加する。
    $ git add foo.php

コミットしたファイルの削除

  1. ファイルを削除する。
    $ git rm foo/bar
  2. 削除予定を確認する。
    $ git status
    # On branch master
    # Changes to be committed:
    #   (use "git reset HEAD <file>..." to unstage)
    #
    #       deleted:     foo/bar
    #
    
  3. コミットする。
    $ git commit -m "delete foo/bar"

リモートリポジトリの登録

git remote add name url

リモートリポジトリにプッシュ

git push repository refspec...

repositoryには以下のように指定する。

プロトコル 指定方法
rsync rsync://host-name/git-repository-path
HTTP http://host-name[:port-no]/git-repository-path
HTTPS https://host-name[:port-no]/git-repository-path
git git://host-name[:port-no]/git-repository-path
SSH ssh://[user-name@]host-name[:port-no]/git-repository-path
file [file://]git-repository-path

$ git push origin master

コミット時の状態に戻す

  1. 状態を確認する。
    $ git status
  2. チェックアウトする。
    $ git checkout foo/bar

リポジトリからプル

git pull repository refspec...

$ git pull origin master

.gitignore

Gitで管理しないファイルを明示的に指定するには、.gitignoreというファイルを作成し、その中にGitで管理しないファイル名を記述する。

.gitkeep

Gitでは、中身が空のディレクトリをバージョン管理下に入れることはできない。空のディレクトリをバージョン管理下に入れるためには、ディレクトリの中に何か適当なファイルを作成しておく必要がある。ファイル名は何でも構わないが、慣習的に.gitkeepというファイル名が用いられることが多い。

スポンサーリンク