Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
671
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

gitコマンドチートシート

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>
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
671
Help us understand the problem. What are the problem?