Edited at

gitでもっと早く使っておけばよかったコマンド・オプション

More than 1 year has passed since last update.

今やソースコードのバージョン管理に欠かせないGit。現在では殆どの方が使いこなしている人も多いかと思います。


今回はそんなGitのコマンドで、もっと早くに知っていればよかったなというコマンドを紹介します。


バージョン


  • 2.x系の最新バージョン


log編


グラフ表示する

$ git log --graph


1行で表示する

$ git log --oneline


マージコミットは表示しない

$ git log --no-merges


変更したファイルを表示

$ git log --name-status


上記を組み合わせる

$ git log --one-line --graph --no-merges --name-status

スクリーンショット 2016-01-28 0.02.00.png


ブランチやタグを表示する

$ git log --decorate


ファイル内の行ごとの最終更新を見る

$ git blame file


ログと一緒にdiffも見る

$ git whatchanged -p


参考

http://qiita.com/take4s5i/items/15d8648405f4e7ea3039

http://qiita.com/masarufuruya/items/7480854d4bc2f0443fc1


diff編


ステージングに追加分の差分を表示

$ git diff --cached


差分ファイル名のみ表示

$ git diff --name-only <diff_branch>


diffのアルゴリズムを指定する

$ git diff --histgram(--patience)


参考

http://qiita.com/takaakikasai/items/3d4f8a4867364a46dfa3


変更を一時退避する


一時領域に保存

$ git stash save "message"


一時領域に保存したリストを表示

$ git stash list


一時領域に保存したファイルを適用

$ git stash apply


適用と削除を同時に行う

$ git stash pop


使用ケース


  • ある機能を作成中に別のタスクが入ってしまった場合


参考

http://qiita.com/fukajun/items/41288806e4733cb9c342


status編


シンプルに表示する

$ git status -s


ブランチを表示する

$ git status -b


組み合わせ

$ git status -sb

スクリーンショット 2016-01-28 0.22.52.png


commit編


コミットメッセージを修正する

$ git commit --amend


コミットをまとめる

$ git rebase -i


リベース前に変更内容をスタッシュ

$ git rebase  --autostash


特定のコミットのみを適用する

$ git cherry-pick


コミットメッセージとは別のメモ的な

$ git notes add -m '要リファクタリング'


参考

http://qiita.com/LOUIS_rui/items/8bc0c9058a69a3d6de97

http://rfs.jp/server/git/gite-tech/git-cherry-pick.html


merge編


マージコミットの自動生成をしない

$ git merge --squash


参考

http://d.hatena.ne.jp/sinsoku/20111025/1319497900


問題箇所を特定する

$ git bisect


参考

http://qiita.com/usamik26/items/cce867b3b139ea5568a6


grep編


論理演算を使用する

$ git grep -e 'a' --and -e 'b'

$ git grep -e 'a' --or -e 'b'


過去のコミットから対象文字列を含むコミットを検索

$ git log -S 'hoge'


参考

http://qiita.com/tbaba/items/a67c8d79c6c4d0dc9b73

http://qiita.com/LOUIS_rui/items/86cf7802c4abc6fa4c1e


branch編


追跡ブランチを確認する

$ git branch -vv


追跡ブランチを追加する

$ git branch --set-upstream-to origin/[branch-name]


ブランチ作成と同時に追跡ブランチを追加する

$ git checkout -t branch_name


同じルート リポジトリのチェックアウト済みワークツリーを複数保持する

$ git worktree add branch_name


参考

http://snowlong.hatenablog.com/entry/2015/03/12/212455

http://japan.blogs.atlassian.com/2015/10/cool-features-git-2-x/


revert編


コミットをしない

$ git revert -n


tag編


sort順の変更

$ git tag --sort <type>


参考

http://qiita.com/naoty_k/items/2b9d9560381bbe316818


追記

2016/1/28 Github落ちましたねー

スクリーンショット 2016-01-28 9.40.48.png

ユニコーンさんが激おこでしたw