Mercurial ユーザのための git メモ

[2013/10/24 追記]今後は、Mercurialユーザのためのgitメモ — A Day in Serenity (Reloaded) — PHP, FuelPHP, Linux or something を更新しますので、そちらをご覧ください。

git の学習中のメモです。間違いなどありましたら、ご指摘いただけるとありがたいです。

ログ

ログの表示にページャを使わない
$ GIT_PAGER= git log
$ hg log
グラフログを表示する
$ git log --graph
$ hg glog
ログにブランチ名を表示する
$ git log --graph --all --color --pretty=format:'%h %cn %s%Cred%d%Creset'
$ git log --oneline --decorate
$ hg log
ブランチを指定してログを表示
$ git log ブランチ名
$ hg log -b ブランチ名
ログに変更されたファイル名を表示する
$ git log --name-only
$ hg log -v

diff

diff のタブ幅を 4 にする
$ git config --global core.pager 'less -x4'
diff 表示を折り返す
$ git config --global core.pager 'less -r'
リビジョンを指定して差分を見る
$ git show リビジョン
$ hg diff -c リビジョン

作業領域のファイルを元に戻す

$ git checkout -- ファイル名
$ hg revert ファイル名

作業領域のすべてのファイルを元に戻す

$ git checkout -- *
$ hg revert -a

コミットしたファイルの変更を管理対象から外す

$ git update-index --assume-unchanged `git ls-files`

管理対象外のファイルは git ls-files -v で状態が小文字で表示される。

コミットの修正

直前のコミットを取り消す
$ git reset --soft HEAD^
$ hg rollback
複数のコミットをまとめる
$ git rebase -i HEAD~3
$ hg histedit チェンジセット
チェンジセットを取り消す変更をコミットする
$ git revert チェンジセット
$ hg backout チェンジセット

リビジョンを指定してアップストリームから pull する

$ git fetch アップストリーム
$ git merge リビジョン
$ hg pull -r リビジョン アップストリーム
$ hg update

間違ったブランチに pull してしまったので取り消す

$ git reset --hard ORIG_HEAD
$ hg rollback

ブランチ

ブランチの一覧を表示する
$ git branch
$ hg branches

リモートのブランチも表示する場合は、

$ git branch -a
ブランチを作成する
$ git branch ブランチ名

ブランチは作成されるだけで、そのブランチに移動しない。

$ hg branch ブランチ名

そのブランチに移動する。次のコミット時にブランチが作成される。

ブランチを変更する
$ git checkout ブランチ名
$ hg update ブランチ名
ブランチを削除する
$ git branch -d ブランチ名

リモートブランチを削除する場合は、

$ git push origin :ブランチ名

hg ではブランチは削除できません。close することは可能ですが。

指定のチェンジセットが含まれるブランチを調べる
$ git branch --contains チェンジセット

リモートのリポジトリの表示

$ git remote -v

「origin」は最初にクローンした時に自動的に登録される。

$ hg paths

設定を確認する

$ git config --list
$ hg showconfig

日本語ファイル名を git status などで表示する

$ git config core.quotepath false

サブモジュールの削除

  1. .gitmodules から該当行を削除
  2. .git/config から該当行を削除
  3. git rm --cached path/to/submodule (最後に"/"は付けない)