Archive

Git Memo

個人的なGitメモです。「WEB+DB PRESS 第50号」の中の「特集2 はじめてのGit」を基礎としています。

書式

レポジトリ

/home/hoge/repositry ... ローカルのファイル形式
host:/home/repositry ... scp形式

各コマンド

git init

レポジトリの作成

git init --bare ... ワークツリー無し
git init --shared ... ワークツリー無し
※ 共有ディレクトリを作成する場合はumaskを002(グループ以外にも書き込み許可)とか007(グループ以外には読み込みも付加)

git status

状態表示

git diff

差分をとる。gitの場合、状態はワークツリー、インデックス(キャッシュ)、レポジトリの3種類ある。それぞれのdiffは下のかんじ。

ダイアグラム

git add

ワークツリーの状態をindexへ記録

git add -u ... ワークツリーの状態を一括してindexへ
git add -p ... diffのハンク毎にaddする(対話式)
git add -A ... git add . && git add -u

git reset

状態を戻る(git revertとは異なりcommitを無かったことにする)

git reset HEAD^ ... HEADを一つ前のコミットまで戻る(インデックスも含め直近のコミットまでを取り消す)
git reset --soft HEAD^ ... 作業ツリーはそのままでレポジトリのポインタをHEADの一つ前まで戻る
git reset --hard HEAD  ... ワークツリーの状態を含めてHEADまで戻る(ワークツリー上の変更をインデックスも含め取消)
git reset --hard HEAD^ ... ワークツリーの状態を含めてHEADの一つ前まで戻る
git reset --hard master~4 ... ブランチmasterから4つ前までを取り消す

git commit

indexに記録された状態をレポジトリへ

git commit -a ... git add -u && git commit
git commit -v ... git diff --cached の内容も表示する
git commit --amend ... 直前コミットの取消 (git reset --soft HEAD^ && edit && git commit -c ORIG_HEAD)

git log

ログ

git log -p ... パッチ形式で取得
git log --pretty=short ... サマリー(最初の段落)のみ取得
git log --stat ... 変更されたファイル名なども含め表示

git brame

一行毎に表示

git revert

レポジトリ内の履歴を打ち消す(逆のパッチをあてるような感じ?)

git show

git logとの違いが把握できていない

git push

レポジトリに記録を反映させる

git push <repositry> <branch> ... <repositry>の<branch>に反映

git pull

レポジトリから反映させる

git push

レポジトリに記録を反映させる

git push <repositry> <branch> ... <repositry>の<branch>に反映

git stash

現在のコミットしてない変更状況を保存

git stash ... 現在の状況を保存
git stash pop ... 保存した状況を再読み込み

git branch

git branch ... branchのリストを表示/現在のブランチを確認
git branch <branch> ... <branch>とする(新規作成もそのままOK?)

git checkout

git checkout <branch> ... <branch>にスイッチ
git checkout -b <branch> ... git branch <branch> && git checkout <branch>

git merge

git merge <branch> ... 現在のブランチと<branch>をマージ (git pull . <branch>)

git rm

git rm --cached ... キャッシュの中からのみ取り除く(間違えてaddした場合など)