http://sourceforge.jp/magazine/09/02/02/0655246
Ubuntu 10.10 でインストールしてみた。以下コマンド
sudo apt-get install git-core
git config
git config --global user.name "Shinichi Tsuchiya"
ユーザ名
git config --global user.email "[email protected]"
ユーザのメールアドレス
git config --global color.ui auto
uiの色??
ワークツリー ・・・・ git init を実行したディレクトリ以下
HEAD ・・・・ 直前の最後に commit したバージョン
インデックス ・・・・ 次回の commit でリポジトリへ反映させる
ディレクトリをgitの管理へ追加
git init
バックアップリポジトリを作る
git init --bare
共用リポジトリを作る
umask 002
mkdir -p [任意のディレクトリ] (例: /pub/repositories/gitusers.git )
cd [任意のディレクトリ]
chgrp gitusers . (gitusersというグループに開発者全員のユーザが存在すると仮定)
git --bare init --shared
その後、サーバローカルにて、
cd [ローカルリポジトリのディレクトリ]
git push /pub/repositories/gitusers.git master
として、共用リポジトリにpushする
共用リポジトリからclone
クライアントにて
cd [ベースディレクトリ]
git clone [サーバ名]:[共用リポジトリ] [ローカルリポジトリ名]
(例: git clone servername:/pub/repositories/gitusers.git gitusers.git)
ブランチ(枝)をコピーする
git push [リポジトリpath] [ブランチ名]
例:git push /pub/repository/gitusers.git master
git push origin master
git clone して作ったコピーの場合、元になるリポジトリはoriginという名前で指定できる。
これは、git clone元へ変更点をgit pushする。
git push
省略すると、cloneで作った場合に限り、clone元へ変更点をpushする。git push origin master と同じ。
リポジトリのコピーを作る
git clone [リポジトリpath] [ディレクトリ名]
カレントディレクトリに[ディレクトリ名]の子ディレクトリを作り、その中に[リポジトリpath]の内容をコピーする
インデックスに記録する。(=次のcommitで記録するようにリクエスト)
git add [filename1] [filename2] ...
[filename1]、[filename2] ... のみ対象とする
git add .
カレントディレクトリ以下の全てのファイルを対象とする
git add -u
ワークツリー内でgitで管理している全てのファイルを対象とする
git add -p
変更点を順に表示して、対話形式でインデックスに記録する部分を決める
ファイルを部分的に commit したい場合に有用
git add -A
git add -u に加え、gitで管理されてないファイルの内、.gitignore に記載の無いもの全てを対象にする
コミット
git commit
エディタが起動するので、コメントを書いて保存でコミット完了
1行目をコミットの要約、2行目を空行、3行目以降をコミットの内容 とするのが通例
git commit -m "こめんと"
エディタを起動せず、-mオプションの内容をコメントにしてコミット完了
git commit -a -m "こめんと"
= git add -u
git commit -m "コメント"
git commit -v
commit の内容を表示
git commit -m "割込み" [ファイル名]
インデックスの状態を保留して、[ファイル名]のファイルだけを commit する
git commit --amend -a -m "コミットのやり直し"
1つ前のcommitをやり直す
(実際は枝分かれする)
環境変数?
git var GIT_COMMITTER_IDENT
コミット者の名前
git var GIT_AUTHOR_IDENT
編集者の名前
変更差分表示
git diff
ワークツリー内で、現在のファイルと、最後に git add したファイルの差分を取る
※.git add すると差分は表示されない
git diff HEAD
ワークツリー内で、現在のファイルと、最後に commit したファイルの差分を取る
( git add していても、commit していない変更点を全て表示する)
git diff --cached
HEAD と、現在のインデックス記録との差分
git status
状態表示
.gitignore ファイル
バージョン管理から外すファイルを列記
git log
変更履歴を表示する
HEADを起点にし、遡り表示。
git log --pretty=short
commit の要約(1行目)だけリスト表示する
git log --pretty=short [ファイル名]
[ファイル名]の変更点の要約だけリスト表示する
git log --grep='abcde'
コミットメッセージに'abcde'とあるものだけ表示する
※.--grep を複数個付けると、「OR条件」になるので注意
git log --all-match --grep='abcde' --grep='ghijk'
複数のgrep条件をAND条件にする場合
git log --author='著者名'
著者名を表示条件にする
git log --committer='記録者名'
記録者名を表示条件にする
git blame [ファイル名]
[ファイル名]の1行1行が、どの commit で変更されたかを表示する
表示の左端の8桁の文字が、コミットID
git show
git show HEAD
最後の commit の内容を表示する
git reset
インデックスの内容を破棄する
git reset [ファイル名]
インデックスの内容から、[ファイル名]のファイルだけ除外する
(それだけHEADの状態に戻す)
git reset HEAD^
最終commitのポインタを、1つ前の所に戻す。=最終commitを破棄する。
現在のワークツリーの状態は変更しない。
※.実際には捨てられたcommitの状態も保存されており、1つ前のcommitから枝分かれさせる
git reset --hard HEAD^
最終commitを破棄し、ワークツリーの内容も1つ前のcommitの状態に戻す
git reset --hard HEAD
ワークツリーの変更を破棄する。最終commitの状態に戻す
git revert [コミットID]
[コミットID]でcommitした内容を打ち消す
git rebase -i HEAD~3
最新含む3つ前のcommitの状態まで戻し、それ以降のcommitを対話形式で修正可能にする
エディタが起動し、指示票が表示されるので、修正したいcommitの行の「pick」を「edit」に変えてエディタ保存すると、
そのcommitの直後の状態になる。ここで再修正し、git commit --amend -a を実行すると、修正したいcommitは修正される。
(枝分かれする)
その後、最新までの2つのcommitは修正せずに適用させる為に、git rebase --continue を実行すると、3つ前のcommit情報のみ
修正した状態になる。
git rebase --continue
前述の git rebase -i で戻して修正したcommit以外のcommit処理を再度行う
git checkout [ファイル名]
[ファイル名]の状態を、インデックスの状態(最終add)に戻す
[ファイル名]を省略すると、ワークツリー全体が対象
git checkout HEAD [ファイル名]
[ファイル名]の状態を、最終commitの状態に戻す
[ファイル名]を省略すると、ワークツリー全体が対象
最終更新:2012年04月26日 17:43