LoginSignup
655
663

More than 5 years have passed since last update.

gitコマンドチートシート

Last updated at Posted at 2012-12-26

Add

# 部分的にaddする
git add -p

# add済みのfileをadd(deletedを消すときにも使う)
git add -u

Apply

diffからworking treeに反映する

git diff <FILE> > pending.diff
git apply pending.diff

Archive

# zip形式でファイルを出力。
git archive <COMMIT> --format=zip -o <OUTPUT FILE>

Bisect

# スクリプトで渡す
git bisect run ./test_script #=> 成功 0, 失敗 1, スキップ 125で返すスクリプト

コミットを二分探索する

git bisect good v1.6.0
git bisect bad v1.6.2
git bisect good # 壊れてない
git bisect bad # こわれている
git bisect skip # スキップ
git bisect reset # 終了

Blame

# どのcommitでそのファイルが追加されたかみる
git blame <FILE>

Branch

# リモートのbranch一覧をみる
git branch -r
# ブランチ名を変更する
git branch -m <NEW_NAME>

# ローカルブランチを削除
git branch -d <BRANCH>
# ローカルブランチを強制削除
git branch -D <BRANCH>

# リモートブランチを削除
git push origin :<BRANCH>

# ローカルブランチをリネーム
git branch -m <OLD_BRANCH_NAME> <NEW_BRANCH_NAME>

Clean

# 管理されていない(.gitignoreにもない)ファイルを削除する -n は消去ファイル確認
git clean -n -f

Clone

# submodule も一緒に初期化
git clone --recursive <URL>

Checkout

# work treeの向き先を現在のcommitにする(detached HEAD)
git checkout HEAD^0

# fileをコミットからもどす
git checkout <COMMIT> file

# fileをインデックスから戻す
git checkout <FILE>

# remoteのブランチをとってきてcheckout
git checkout -t -b <BRANCH> origin/<BRANCH>

# 一つ前のbrachにcheckoutする
git checkout -

# 強制上書き
git checkout .
git pull

Cherry-pick

# 狙ったコミットをマージする
git cherry-pick <COMMIT>

Commit

commit.sh
# 追加してcommitする
git commit --amend

Diff

diff.sh
# 最新のコミットと、インデックスの間
git diff --cached

# コミット間の変更ファイル一覧
git diff --stat

# ファイル名と変更を表示
git diff --name-status

# カラーモード
git diff --color-words

Fetch

# 全てfetchする
git fetch <REMOTE> <BRANCH>

# fetchしたcommitをmergeする
git merge FETCH_HEAD

Format-patch

# 差分をpatch形式としてファイルで出力する
git format-patch <COMMIT..COMMIT>

Log

log.sh
# 出力するコミット数制限
git log -2

# 各コミットの変更をパッチ形式で出力
git log -p

# ログメッセージの最初の1行を出力
git log --pretty=short

# 内容に変更がある部分を探す
git log --pretty=short -S 'class Abc
  def aa
    p "aa"
  end
end' -- <FILE>

# 全てのログを見る
git log -g

# onelineでみる
git log --oneline

# ある特定のファイルのlogをみる
git log v1.0.0 -- path/to/file.c # v1.0.0タグ以降のfile.cのログを見る

# ある特定のユーザーのコミットをみる
git log --author="<USER NAME>"

Ls-files

# マージが必要なfileを出力
git ls-files -u

Merge

# マージする。デフォルトはff
git merge <BRANCH>

# ffでも<BRAHCN>の情報があったことを残してMergeする
git merge --no-ff <BRANCH>

# 公開したcommitを取り消す
git merge -s ours <COMMIT>

# 一つ前にいたbranchをmergeする
git merge -

Merge-base

# 共通のcommitオブジェクトを出力する
git merge-base <COMMIT> <COMMIT>

Push

# 2つ前のコミットでプッシュ先のmasterブランチを更新
git push REMOTE HEAD^^:master

# ローカルmasterでremoteのmaster更新
git push REMOTE master

# ブランチ削除
git push :temporary

# 強制的にpushする。(過去のcommitを変えちゃうかもしれない)
git push -f

Reset

# indexから全て削除
git reset

#indexからFILEを削除
git reset <FILE>

# commitを削除
git reset HEAD^

# commitを削除しファイルももとに戻す
git reset --hard HEAD

# resetを取り消す
git reflog
git reset --hard <リセットの前のCOMMIT>

# 直前の操作(commit, merge, rebase, reset等)を取り消す
git reset --hard ORIG_HEAD

Remote

# 現在Remoteとして設定されている一覧を取得
git remote -v

# Remoteを登録する
git remote add <REMOTE>

# Remoteとして登録しているのを削除する 
git remote rm <REMOTE>

# Remote の url を変更する
git remote set-url <REMOTE> <URL>

Rev-list

# 指定したディレクトリのコミットidを一覧表示
git rev-list HEAD^..HEAD -- DIR/

Revert

# 過去のcommitを打ち消すcommitをする
git revert <COMMIT>

# コミットを行わない
git revert -n <COMMIT> 

Rm

# Add取り消し
git rm --cached <FILE>

Rebase

# インタラクティブリベースを取り消す
git rebase --abort

過去のcommitを修正する

git rebase -i HEAD~<戻したいコミットの位置>
  # editorが起動するので直すコミットの横にあるコマンドを edit に変更
  # 実際に変更して git add で indexに追加
git commit --amend でcommit
git rebase --continue

リベースそのものを無かったことにする

git log -g # rebase -i 前のコミットを探す
git reset <COMMIT>

topicブランチ育て中にmasterブランチの変更を取り込む

git checkout feature
git fetch origin
git rebase origin/master

以下でも一緒

git checkout feature
git pull --rebase origin master
git checkout master
git pull --rebase

Shortlog

# コミットの(ユーザー毎の?)要約
git shortlog HEAD^..HEAD -- <DIR>

# ユーザー毎のコミット数を集計
git shortlog <COMMIT>..<COMMIT> --summary

Status

# 次のcommitに含まれるのを確認する 
git status

Stash

現在の変更を一時的によける

git stash 
git checkout <Other BRANCH> # edit files … 
git add 
git commit 
git checkout <Working BRANCH> 
git stash pop

Tag

remoteのタグを消す

# localのタグを消す
git tag -d <TAG_NAME>
# それをremoteに反映する
git push origin :refs/tags/<TAG_NAME>
655
663
8

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
655
663