Git
用語
インデックス
コミットとワークツリーの中間に位置する要素。
git add で、インデックスへ登録される。
git commit で、インデックスをもとにコミットが作成される。
ステージ
インデックスに記録すること。
git config
各種設定を行う
ユーザ名設定
git config --global user.name "NAME"
メールアドレス
git config --global user.email "EMAIL"
出力カラーリング
git config --global color.ui auto
コマンドエイリアス
git config --global alias.[別名] command
pullではrebaseを実施する(mergeではなく)
git config --global pull.rebase true
--globalオプションで、設定内容が $HOME/.gitconfig に書き出される。
- -l:設定一覧表示
git init
リポジトリの初期化
実行ディレクトリに.git というリポジトリが作成され、
実行ディレクトリを、ワークツリーにする。
- --bare コマンド実行ディレクトリ自体をリポジトリとする
git add
引数を次のコミット時の記録対象とする
(対象が、ディレクトリの場合は、その中のバージョン管理下のファイル全てが対象になる)
-uオプション
バージョン管理下のファイルすべてを次回コミットの対象とする。
-pオプション
変更点ごとに、インデックスに記録するか否かを選択できる。
-Aオプション
ワークツリー内の全ファイル(.gitignoreで指定されたものは、対象外)をインデックスへ登録する。
(バージョン管理外だったものも含む)-i
インタラクティブに選択
git status
ワークツリーとインデックスの差分や、インデックスとコミットの差分等の情報表示。
(次に実行するコマンドの助言も記載されている)
git diff
インデックスとワークツリー間の違いの表示
引数
- コミットオブジェクト名
指定のコミット時の記録とワークツリーの差分が表示される
- ブランチ
ブランチ間の差分表示(merge前に確認できる)
--cached
インデックスと引数のコミット間の違いの表示(コミット未指定時は、HEADと比較)
git commit
git add済みをリポジトリに記録する。(インデックスをもとにコミットを作成する) ファイルを引数に指定すると、そのファイルのみに関するコミットが作成される。
-aオプション
バージョン管理下のファイル全てを、リポジトリに記録する。(git add不要)
-vオプション
コミット時の差分を表示する。
--amend
直前のコミットを上書くコミットを行う
git log
HEADから順に、コミットオブジェクトの内容を表示する。
引数
パス指定で、対象の変更を含むコミットのみ抽出
-pオプション
各コミットでの、ファイルの変更内容も表示する。
--stat
各コミットでの、変更したファイル情報を表示する。
-数字オプション
表示件数を制限する。
--pretty=short
ログメッセージについては、1段落目だけを表示する。
--grep=''
対象をログメッセージに含むコミットを抽出
--all-match
オプションでの抽出をANDにする(未指定時は、OR)
--graph
コミットやブランチをテキストで視覚的に表示する。
--oneline
一行表示(オブジェクト名とログ表示)
git reset
インデックスやコミットが効果対象。
インデックス操作
指定したファイルのインデックスの状態を最新のコミットと同じにする。addのキャンセル (ワークツリー上の状態は変化しない) ファイル名を引数に指定しない場合は、ワークツリー上の全ファイルが対象。
コミット操作
引数にコミットを指定すると、現在のポインタをそこまで戻す。 ワークツリー上のファイルは、実行時のままで、インデックスは、消去される。
--hard: 戻したコミットの状態へワークツリーも戻す。
git show
指定したコミットの内容(コメント、変更点等)を表示する。 (未指定時は、HEAD)
git blame
指定したファイルの各行の追加時コミットを表示
git revert (commit id)
引数のコミットをなかったことにするコミットを作成する。
既に、リモートリポジトリで共有されているコミットをなかった事にしたい場合に使える。
(リモートリポジトリに「reset」は使えないため。)
git checkout
ワークツリーが効果対象。
引数
- パス
指定したパスをインデックスの内容に戻す。
パスの前に HEAD等コミットを指定すると、その状態へ戻す。(インデックス内容も消える模様)- ブランチ名
ブランチ名を指定すると、指定ブランチへ切り替わる(ワークツリーも指定ブランチの状態になる)
-b ブランチの作成および移動
git rebase
現在のブランチの始まりを指定のブランチへ変更する。
-i
以前のコミットを書き換える
git push (repository) (branch)
指定ブランチの履歴を指定リポジトリへコピー
--delete
ブランチやタグの削除
git push repo :branch と同義--tags
git clone src dest
リポジトリのコピー コピー先では、コピー元をpush先としてデフォルト設定される
git pull
リモートリポジトリからコミット履歴を取ってきて、マージする。
- -r
--rebase
fetchした後、mergeではなくrebaseで統合する。
マージコミットを作らずに、ブランチでの開発を直線的に進められる。
git branch
ブランチ一覧の表示
ブランチ名指定で、ブランチ作成(git branch topic (src))
git show-branch
ブランチの派生を、階層構造で表示する。
git merge branch
指定ブランチの履歴を現在のブランチへマージ
--no-ff
fast-forwardで済むマージでも、新しいコミットを作成してマージする
--abort
コンフリクト時に実行する事で、マージ前の状態を復旧する
git stash
ワークツリーやインデックスの内容を一時保存できる
git stash pop で、保存内容を展開できる
git tag
タグの一覧表示
- タグ
特定のコミットにタグという目印を付けられる。
目印付けだけのタグとリリース用にGPGの署名やコメントを付けるタイプがある
git fetch
リモートリポジトリから更新を取得
(オブジェクトやリモートブランチ等)
- -p
--prune
fetch後に、既に存在しないリモートブランチを削除する。
(同名のローカルブランチが消えるわけではない。branch -a の結果から消える)
git cherry-pick
指定したコミットでの変更点をHEADにマージする。 (ブランチのマージとは異なり、指定したコミットの親コミットの変更点は取り込まない)
git remote
add (name) (url)
リモートリポジトリの登録
rm (name)
リモートリポジトリの登録解除
prune (name)
リモートリポジトリに存在しないブランチの削除(ローカルブランチの削除ではない)
- --dry-run 削除対象のブランチの確認
show
リモートリポジトリの表示
git reflog
予約語
- origin: clone元のリポジトリの別名
- HEAD: 現在チェックアウトしているコミットを指す名前
- HEAD^: HEADから一つ前のコミット(^追加でさらに遡る)
- HEAD~1: 同上
- ORIG_HEAD: 一つ前の時代のHEAD
参考資料
- WEB + DB vol.50
- 公式Book: http://git-scm.com/book/ja
- チュートリアル: http://k.swd.cc/learnGitBranching-ja/
- ドットインストール: http://dotinstall.com/lessons/basic_git
- コマンド
- スライド集: http://www.find-job.net/startup/7-git-slides
- Naver: http://matome.naver.jp/odai/2136491451473222801
- 基本: http://www.atmarkit.co.jp/ait/articles/1307/05/news028.html
- サルでも: http://www.backlog.jp/git-guide/