Mercurialユーザのためのgitメモ post

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 commit --allow-empty

リポジトリの最初に空のコミットを作成しておくと、最初のコミットの差分も確認できる。

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

$ 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 ブランチ名

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

$ git checkout -b ブランチ名

ブランチを作成して移動する。

$ hg branch ブランチ名

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

ブランチを変更する

$ git checkout ブランチ名
$ hg update ブランチ名

ブランチを削除する

$ git branch -d ブランチ名

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

$ git push origin :ブランチ名

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

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

$ git branch --contains チェンジセット

ブランチ名の変更

$ git branch -m 現在のブランチ名 新しいブランチ名

指定したチェンジセットのみを現在のブランチに取り込む

チェンジセットの範囲を指定してcherry-pickする

$ git cherry-pick 古い方のチェンジセット^..新しい方のチェンジセット

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

$ 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 (最後に"/"は付けない)

関連

Date: 2013/10/24

Tags: git, mercurial