87
84

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

.gitconfigから学ぶGitコマンド

Last updated at Posted at 2016-10-30

目的

色々な方の.gitconfigを参考にして.gitconfigを作ったのでGitのお勉強としてまとめます。

.gitconfig

.gitconfig
[core]
		excludesfile = ~/.gitignore_global
		autocrlf = false
		quotepath = false
		pager = less -r
		editor = vim
[color]
		ui = auto

[push]
		default = current
[merge]
		ff = false
[pull]
		rebase = preserve
[alias]
		l = log --date=short --pretty=format:'%C(yellow)%h %Cgreen%cd %Cblue%cn %Creset%s'
		ll = log --stat --decorate=short --pretty=format:'%C(yellow)%h %Cgreen%cr %Cblue%cn%Cred%d %Creset%s %C(cyan)%b'
		lg = log --graph --date=short --decorate=short --pretty=format:'%C(yellow)%h %Cgreen%cd %Cblue%cn%Cred%d %Creset%s'
		lm = log --merges --pretty=format:'%C(yellow)%h %Cgreen%ci %Cblue%cn%Cred%d %Creset%s %C(cyan)%b'
		b = branch
		ba = branch -a
		co = checkout
		com = checkout master
		cob = checkout -b
		a = add
		aa = !git add -A && git s
		c = commit
		cm = commit -m
		cam = commit -a -m
		wip = commit -m 'WIP'
		amend = commit --amend -C HEAD
		d = diff
		dc = diff --cached
		dn = diff --name-only
		dw = diff --color-words
		um = !git --no-pager diff --name-only --diff-filter=U
		ft = fetch
		ftp = fetch --prune
		pl = pull
		ps = push
		info = remote show origin
		s = status --short --branch
		st = status
		r = reset
		rs = reset --soft
		rsh = reset --soft HEAD
		rh = reset --hard
		rhh = reset --hard HEAD
		rl = reflog show -n 20
		rb = rebase
		rbi = rebase -i
		rbh = rebase HEAD
		rbo = rebase --onto
		sync = !git checkout master && git pull origin master && git fetch -p origin && git branch -d $(git branch --merged | grep -v master | grep -v '*')
		ignore = "!f() { echo $1 >> \"${GIT_PREFIX}.gitignore\"; }; f"
		alias = !git config --list | grep 'alias\\.' | sed 's/alias\\.\\([^=]*\\)=\\(.*\\)/\\1\\\t => \\2/' | sort

基本設定

[core]

  • excludesfile = ~/.gitignore_global
    • ホームディレクトリ内に置いた.gitignore_globalを全gitプロジェクトに反映させる
  • autocrlf = false
    • 改行コードの自動変換の設定。WinとMac両方使うのでfalse
  • quotepath = false
    • 日本語ファイル名を表示
  • pager = less -r
    • pagerをlessに設定
  • editor = vim
    • editorをvimに設定

[color]

  • ui = auto
    • 色を自動設定

[push]

  • default = current
    • カレントブランチと同名のリモートブランチがあればpush

[merge]

  • ff = false
    • mergeは常に--no-ff

[pull]

  • rebase = preserve
    • 全ブランチで git pull –rebase を使う

alias

logコマンド

  • l = log --date=short --pretty=format:'%C(yellow)%h %Cgreen%cd %Cblue%cn %Creset%s'
    • コミットの簡易ログを表示
      l.png

  • ll = log --stat --decorate=short --pretty=format:'%C(yellow)%h %Cgreen%cr %Cblue%cn%Cred%d %Creset%s %C(cyan)%b'
    • コミットの詳細ログを表示
ll.png
  • lg = log --graph --date=short --decorate=short --pretty=format:'%C(yellow)%h %Cgreen%cd %Cblue%cn%Cred%d %Creset%s'
    • コミットのグラフログを表示
lg.png
  • lm = log --merges --pretty=format:'%C(yellow)%h %Cgreen%ci %Cblue%cn%Cred%d %Creset%s %C(cyan)%b'
    • マージログを表示
lm.png

branchコマンド

  • b = branch
  • ba = branch -a
    • ローカルリポジトリとリモートリポジトリを両方表示

checkoutコマンド

  • co = checkout
  • com = checkout master
  • cob = checkout -b
    • ブランチを作成してチェックアウト

addコマンド

  • a = add
  • aa = !git add -A && git s
    • 全てのファイルをaddして簡易statusを表示

commitコマンド

  • c = commit
  • cm = commit -m
    • コミットメッセージを指定
  • cam = commit -a -m
    • コミットメッセージを指定して変更されたファイルを全てコミット
  • wip = commit -m 'WIP'
    • コミットメッセージをWIPでコミット
  • amend = commit --amend -C HEAD
    • コミットをHEADに追加 (すごく便利)

diffコマンド

  • d = diff
  • dc = diff --cached
    • キャッシュとの差分を表示
  • dn = diff --name-only
    • ファイル名だけ表示
  • dw = diff --color-words
    • 記号やスペースで区切られた単語単位でのdiffを表示
  • um = !git --no-pager diff --name-only --diff-filter=U
    • まだマージされていないファイルを表示

fetchコマンド

  • ft = fetch
  • ftp = fetch --prune
    • リモートで削除されているリモートブランチを削除

pullコマンド

  • pl = pull

pushコマンド

  • ps = push

statusコマンド

  • st = status
  • s = status --short --branch
    • 簡易ステータスを表示

resetコマンド

  • r = reset
  • rs = reset --soft
  • rsh = reset --soft HEAD
  • rh = reset --hard
  • rhh = reset --hard HEAD

reflogコマンド

  • rl = reflog show -n 20
    • reflogを20行表示

rebaseコマンド

  • rb = rebase
  • rbh = rebase HEAD
  • rbi = rebase -i
    • エディタでrebase
  • rbo = rebase --onto
    • 第1引数に指定したコミットへ、第2引数に指定したコミットから 第3引数に指定したコミットの差分となるコミットを適用する

下の状態で

 o---o---o---o---o  master
      \
       o---o---o---o---o  next
                        \
                         o---o---o  topic

git rebase --onto master next topicすると

 o---o---o---o---o  master
     |            \
     |             o'--o'--o'  topic
      \
       o---o---o---o---o  next

複合

  • info = remote show origin
    • origin(リモートリポジトリ)の情報を表示
$ git info
* remote origin
  Fetch URL: git://github.com/schacon/grit.git
  Push  URL: git://github.com/schacon/grit.git
  HEAD branch: master
  Remote branches:
    gh-pages    tracked
    integration tracked
    master      tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)

  • sync = !git checkout master && git pull origin master && git fetch -p origin && git branch -d $(git branch --merged | grep -v master | grep -v '*')
    • 現在のmasterを最新のものにした上で過去のブランチは削除する
    • remote/masterが更新されたらこれをしておけばおk
      • !git checkout master
        masterにチェックアウト
      • git pull origin master
        origin/masterをpull
      • git fetch -p origin
        originで削除されているリモートブランチを削除
      • git branch -d $(git branch --merged | grep -v master | grep -v '*')
        マージされたブランチを削除

  • ignore = "!f() { echo $1 >> \"${GIT_PREFIX}.gitignore\"; }; f"
    • .gitignoreに追加
    • git ignore [ignoreするファイル名]

  • alias = !git config --list | grep 'alias\\.' | sed 's/alias\\.\\([^=]*\\)=\\(.*\\)/\\1\\\t => \\2/' | sort
    • 登録されているaliasを表示
$ git alias
a	 => add
aa	 => !git add -A && git s
amend	 => commit --amend -C HEAD
b	 => branch
ba	 => branch -a
c	 => commit
cam	 => commit -a -m
cm	 => commit -m
co	 => checkout
cob	 => checkout -b
com	 => checkout master
d	 => diff
dc	 => diff --cached
dn	 => diff --name-only
dw	 => diff --color-words
ft	 => fetch
ftp	 => fetch --prune
ignore	 => !f() { echo $1 >> "${GIT_PREFIX}.gitignore"; }; f
info	 => remote show origin
...

参考リンク

87
84
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
87
84

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?