LoginSignup
32
32

More than 5 years have passed since last update.

Gitチートシート

Last updated at Posted at 2014-05-30

git log

log全体を見やすく表示
$ git log --decorate --oneline --graph
変更したファイルも表示したい
$ git log --stat
ファイルA.cppを変更したcommitのみを表示したい
$ git log A.cpp

--statオプションを付けると分かりやすくなるかもしれません。
N file changedの表記は全てが表示されなくなりますので注意。

Testというコメントをつけているcommitのみを表示したい
$ git log --grep Test
複数のbranchのlogを同時に見たい
$ git log branchA branchB branchC
$ git log --all
$ git log --remotes

--allはremoteとlocalの全て、--remotesはremoteだけを表示する

git add

unstageしたい
$ git reset HEAD filename

add して既にstageに乗ってしまったものを、やっぱりcommitしたくない! という時にunstageしたくなります。そんな時に。
HEAD という事は……他にも便利に使えそうですね。
このファイルだけ昔の状態に戻したり

git checkout

branchを作成してcheckoutしたい
$ git checkout -b new_branch <src_branch>

新しいブランチを切る時はgit branchよりも使いやすい

commitしてないファイルがあるせいでcheckoutできない
$ git stash; git checkout branch
$ git checkout -f branch

commitしていないデータを残したいのなら上のコマンドを、残したくないのなら下のコマンドを使うと良いかも。
stashはstackにcommitしていないファイルを保存する最強コマンドの1つ。後述。

git branch

branchのHEAD位置を移動したい
$ git branch -f branch_name dst_commit

今いるbranchは移動できません

remoteにあるbranchを知りたい
$ git branch -a
$ git branch -r

前者はリモートとローカル両方、後者はリモートだけを表示。

git fetch

もう存在しないremote branchがいつまでも残ってる
$ git fetch --prune

git diff

単語単位の賢いdiffが見たい
$ git diff --color-words

git merge

コンフリクトのお供に
$ git merge-tool

deleteの衝突

$ git rm --cached file
$ git rm file

前者はgitへの登録のみを削除し、後者はファイルの実体も合わせて削除する。

non fast forwardにしたい

$ git marge --no-ff branch_name

fast forwardだとマージするbranchの存在がログ上から分からなくなるので、developへのマージに使う事がしばしば。

git stash

まだcommitしていないファイルをstack上に移動し、最新のcommitの状態に戻す

$ git stash
$ git stash pop
$ git stash clear

stashで保存した物をpopで取り出す。clearでstack上のものを削除する。
例えば、作業をbranchを切り替える前に初めてしまったなんて時にstash -> checkout -> stash pop (自動マージ)の手順で使えます。

ignoreされているファイルもstashしたい

$ git stash -a

ignoreされているファイルに依存して、テストが通らない時に使える

複数分のstackを扱いたい

$ git stash list
$ git stash pop --index stash@{0}

listでstackを表示し、指定したものをpopする

git blame

誰がこの行を弄ったのか知りたい

$ git blame -L 1,1 A.cpp

結果

^9b6ca83 (soranoba 2014-06-25 14:49:25 +0900 1) #include<iostream>

-L start,end で行の範囲指定ができる。
結果は「コミットハッシュ値 (checkout ハッシュ値で飛べる), コミットした人, 内容」で表示される

git clean

git cloneした時の状態に戻したい

$ git clean -f -x -d

// 確認をする時はこちら
$ git clean -n -x -d 

外部モジュールが~ とかよくある奴への対策の1つ。submoduleには使えないと思いますので、必ずしもgit cloneした時の状態と同じにはならないので注意。
本当は、gitに関連づけられていないファイル/ディレクトリを削除するコマンドです。

32
32
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
32
32