LoginSignup
93
99

More than 5 years have passed since last update.

忘れがちなGitコマンドのチートシート

Last updated at Posted at 2014-10-25

こういうのはtigでやるのが楽なんですけど覚えておいて損はないですね。

基本操作

(WIPなプルリクのために)空コミットする

$ git commit -m '空コミット' --allow-empty

ステージングの変更と直近のコミット内容を比較する

$ git diff --cached

Gitでの追跡をやめる(ステージングエリアから削除する)

$ git rm --cached <ファイル名>

特定のコミットだけを取ってきて適用する

# コミット
$ git cherry-pick <コミット>

# コミット範囲指定
$ git cherry-pick <開始コミット>..<終了コミット>

作業やり直し

直前のコミットコメントを変更する

$ git commit -m "直前のコミット"
$ git commit --amend 

直前のコミットを取消し

# 直前のコミットのみを元に戻す
$ git reset --soft HEAD~

# 直前のコミットとインデックスを元に戻す
$ git reset HEAD~

# 直前のコミットとインデックスと作業ファイルを元に戻す
$ git reset --hard HEAD~

マージの取り消し

$ git reset --hard ORIG_HEAD

やらかしたときに直前に戻る

# 戻りたいコミットをしらべる
$ git reflog 

# 調べたコミットに戻る
$ git reset --hard <調べたコミット>

複数のコミットをまとめる

# 例) git rebase -i HEAD~~ 
$ git rebase -i <コミット>

rebase内で使えるコマンド

コマンド 説明
p, pick コミットをそのまま採用する
r, reword コミットを採用するが、メッセージのみ書き換える
e, edit コミットを採用するが、修正のために立ち止まる
s, squash コミットを採用するが、前のコミットと合体させる
f, fixup squashと同様だが、コミットログメッセージは捨てる
x, exec シェルを使ってコマンドを実行する
# 修正を適用する
$ git rebase --continue

特定のコミットを打ち消す

# 打ち消しコミットが発生する(元のコミットはログとしては残る)
$ git revert <コミット>

マージコミットを打ち消す

# リリース後になにかあって切り戻す時などに利用
$ git revert -m 1 <コミット>

ブランチの管理

ブランチを削除する

$ git branch -d <ブランチ名>

マージ済みまたは未マージのブランチ一覧を表示する

# マージ済み
$ git branch --merged

# 未マージ
$ git branch --no-merged

リモートブランチをローカルにチェックアウトする

$ git checkout -b <ローカルブランチ名> origin/<リモートブランチ名>

# または以下
$ git checkout -t origin/<リモートブランチ名>

# リモートにあってローカルにない場合は以下でもOK
$ git checkout <リモートブランチ名>

ローカルブランチをリモートブランチにプッシュする

$ git push origin <ローカルブランチ名>:<リモートブランチ名前>

ブランチ名を変更する

$ git branch -m <変更前ブランチ名> <変更後ブランチ名>

リモートブランチを削除する

$ git push origin :<リモートブランチ名>

ブランチ間の差分を比較する

$ git diff <ブランチ1>..<ブランチ2>

フェッチした内容をマージする

$ git fetch
$ git merge FETCH_HEAD

履歴の閲覧

単語単位で差分を比較する

$ git log -U1 --word-diff

コミットを1行で出力する

$ git log --pretty=oneline

コミットごとに変更したファイル名を表示する

$ git log --pretty=oneline --name-only

コミットログを整形して表示する

$ git log --pretty=format:"<フォーマット>"

フォーマットに指定できるオプションは以下のとおり。

オプション 内容
%H コミットのハッシュ
%h コミットのハッシュ (短縮版)
%T ツリーのハッシュ
%t ツリーのハッシュ (短縮版)
%P 親のハッシュ
%p 親のハッシュ (短縮版)
%an Author の名前
%ae Author のメールアドレス
%ad Author の日付 (--date= オプションに従った形式)
%ar Author の相対日付
%cn Committer の名前
%ce Committer のメールアドレス
%cd Committer の日付
%cr Committer の相対日付
%s 件名

作業内容を退避する

作業中のファイルを一時退避して別ブランチで作業する

$ git stash
$ git checkout <移動先ブランチ>
$ git checkout <元のブランチ>
$ git stash pop

退避した内容から別ブランチを作成する

$ git stash branch <ブランチ名>

デバッグ

特定ファイルの特定行を変更した人を特定する

# -w でホワイトスペースを無視
$ git blame -w -L <行番号> <対象ファイル>
93
99
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
93
99