Git関連

提供: 文具堂 Wiki三昧
移動先: 案内検索

公式サイト

http://git-scm.com/

オンラインマニュアル

Pro Git オンライン版

初期設定

Pro Git - Git の基本 タグ

git config --global user.name "Hitoshi Kurokawa"
git config --global user.email contact@bungu-do.jp
git config --global color.ui auto
ページャをcatにする
git config --global core.pager cat
シフトJISのファイルが入っていて文字化けする場合
git config core.pager "lv -c | cat"

sedによる一括置換

git grep -l 'foo' | xargs sed -i -e 's/foo/bar/g'

エイリアス

git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status

通常作業

show

特定コミットのファイルを表示

git show v1.0:file.php

ログ

コミットの系図をコンソールで表示

git log --graph --pretty=oneline

差分 diff

コミット間の差分

git diff HEAD HEAD^ file.rb

ステータス status

statusですべてのファイルを表示する

git status -uall

アーカイブ

tgz tar.gz形式

git archive --format=tar --prefix=project-`date +%Y%m%d`/ HEAD | gzip > bar-`date +%Y%m%d`.tgz

zip形式

git archive --format=zip --prefix=project-`date +%Y%m%d`/ HEAD > project-`date +%Y%m%d`.zip

やり直し

Pro Git - 作業のやり直し

コミットコメントの修正
git commit --amend
ステージ(add)し忘れたファイルを追加してコミットし直す
git add file.rb
git commit --amend
間違ってコミットしてしまった コミット前の状態に戻す
git reset HEAD~
ファイルの状態はそのままにしてコミット前の状態にもどす
git reset --soft HEAD~
直前のコミットを取り消す
git reset --hard HEAD~
直前のコミットの状態にファイルを戻す
git checkout -- file.rb
カレントディレクトリ以下サブディレクトリのファイルも元に戻す
git checkout -- .
特定のバージョンにファイルを戻す
git checkout HEAD~ path/to/file
ステージ(add)した全てのファイルの取り消し
git reset HEAD
ステージ(add)した特定ファイルの取り消し
git reset HEAD file.rb
マージを途中で中止してファイルを元に戻す
git reset --hard ORIG_HEAD

rebaseを使って2個以上前のコミットを書き換える

書き換えたいコミットの一つ前を指定する
git rebase -i a0e6cac0e05132d87d123782f62c922232

書き換えたいコミットの文頭をeditに編集して保存
edit 171cd37 toolsのindexページ追加
pick ac18524 pageのindexテスト追加
:wq

編集作業

git commit --amend
git rebase --continue

コミットを統合

git rebase -i HEAD~~

pick 171cd37 toolsのindexページ追加
squash ac18524 pageのindexテスト追加
:wq

コミットメッセージを編集
:wq

削除

削除
git rm filename

ファイルを管理対象から外す (ファイルは削除しない)
git rm --cached filename

タグ

Pro Git - タグ

アノテーション付きタグ作成
git tag -a v0.1 -m "version 0.1"
git tag -a v0.1

git tag -a release-20121229 -m "20121229リリース版"
タグをリモートにプッシュ
git push origin v1.5
git push origin --tags
git push --tags
一覧
git tag -l
git tag -l -n (コメント付き)

ブランチ

作成
git checkout -b branch-name
git branch branch-name
git checkout branch-name
確認
git branch
確認 (ローカルブランチとリモートブランチ)
git branch -a
切替
git checkout master
git checkout branch-name
マージ
git checkout master
git merge branch-name
削除
git branch -d branch-name

リモートブランチ

Pro Git -「リモートブランチ」

ブランチのプッシュ
git push origin develop
リモートブランチの削除
git push origin :remote-branch
リモートブランチのチェックアウト
git checkout -b develop origin/develop
[branch "1.2"]
        remote = origin
        merge = refs/heads/1.2
[branch "1.3"]
        remote = origin
        merge = refs/heads/1.3

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

コマンドで確認
git remote show origin

定義ファイルで確認 
cat .git/config
リモートからの情報取得更新 (リポジトリ情報など)
git fetch origin

logやdiffでlessなどのページャを使わない

git config --global core.pager ''

.gitignore

*~
*.log
\#*
.#*
.DS_Store

# CakePHP
/app/tmp/*
!/app/tmp/

/app/tmp/cache/*
!/app/tmp/cache/
!/app/tmp/cache/empty

/app/tmp/cache/models/*
!/app/tmp/cache/models/
!/app/tmp/cache/models/empty

/app/tmp/cache/persistent/*
!/app/tmp/cache/persistent/
!/app/tmp/cache/persistent/empty

/app/tmp/cache/views/*
!/app/tmp/cache/views/
!/app/tmp/cache/views/empty

/app/tmp/logs/*
!/app/tmp/logs/
!/app/tmp/logs/empty

/app/tmp/sessions/*
!/app/tmp/sessions/
!/app/tmp/sessions/empty

/app/tmp/tests/*
!/app/tmp/tests/
!/app/tmp/tests/empty

lftp mirrorコマンド

mirror -R -X .git/ -X .gitignore -X .DS_Store


cd project
git init
git add .
git commit -m "first commit"

git commit -a -m "comment"
git remote add origin git@github.com:nextseed/bungu-do.git
git push origin master