LoginSignup
42

More than 5 years have passed since last update.

gitチートシート

Last updated at Posted at 2014-06-06

主な用語

  • 作業ツリー/ワークツリー/ワーキングツリー:ローカルリポジトリ内でgit管理対象としたファイル群。ユーザの作業場所
  • インデックス/ステージングエリア:git addすると作業ツリーの内容がインデックスに保存される。インデックスに保存された内容がコミット対象になる。
  • ローカルリポジトリ:自分のコンピュータ上のリポジトリ
  • リモートリポジトリ:githubなど、リモートのリポジトリ。originっていう名前を付ける事が多いと思う。
  • HEAD:直近(最新)のコミット

gitコマンド

準備

グローバルなユーザ名とメアドを設定

git config --global user.name "ユーザ名"
git config --global user.email "メアド"

エイリアスを設定

git config --global alias.ls "log --stat"
git config --global alias.lp "log -p"
git config --global alias.lg "log --graph --pretty=oneline"
git config --global alias.cf 'commit -m "fixup! c"'
git config --global alias.conflict "diff --name-only --diff-filter=U"
git config --global alias.s "status"
git config --global alias.d "diff"
git config --global alias.aa "add -A"

メッセージを編集するエディタをemacsに設定

git config --global core.editor emacs

autosquash

git config --global rebase.autosquash true

個別のリポジトリ用のユーザ名とメアドを設定

cd 該当のリポジトリ
git config user.name "ユーザ名"
git config user.email "メアド"

リポジトリを初期化

cd 該当のリポジトリ
git init

既存のリモートリポジトリをローカルリポジトリにコピー ※GitHubの場合

git clone git@github.com:ユーザ名/リポジトリ名.git

リモートリポジトリを追加 ※GitHubのリモートリポジトリをoriginとして追加する場合

git remote add origin git@github.com:ユーザ名/リポジトリ名.git

ブランチ操作

ブランチを作成しそのブランチをチェックアウト

git checkout -b branch_name

ブランチをoriginにpush

git push -u origin branch_name

ローカルとリモートのブランチ一覧

git branch -a

マージ済みのブランチ削除

git branch -d ブランチ名

未マージのブランチ削除

git branch -D ブランチ名

diff

作業ツリーとインデックスとの差分を表示

git diff

インデックスとリポジトリとの差分を表示

git diff --cached

作業ツリーとHEADとの差分を表示

git diff HEAD filename

ブランチ間ので同一ファイルを比較

git diff ブランチ1 ブランチ2 filename

ブランチ間の差分があるファイルを表示

git diff --stat -name--status ブランチ1 ブランチ2

ブランチ間の差分があるファイルと内容を表示

git diff -name--status ブランチ1 ブランチ2

変更されたファイル名のみを表示

git diff --name-only

タグ操作

タグ一覧

git tag

タグ作成

git tag -a タグ名 -m '説明'

コミットを指定してタグ付け

git tag -a タグ名 -m '説明' コミットのID

タグを指定してチェックアウト

git checkout refs/tags/タグ名

タグを指定して指定したブランチにチェックアウト

git checkout -b ブランチ名 refs/tags/タグ名

タグ削除

git tag -d タグ名

タグの詳細を表示

git show タグ名

タグをoriginにpush

git push origin タグ名

log

直近2つだけのログを表示

git log -2

直近2つだけのログをパッチと共に表示

git log -2 -p

直近3つだけのログを変更のあったファイル名と共に表示

git log --name-status -3

グラフも表示

git log --graph --pretty=oneline

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

git log --no-merges

コミットログに"index"を含むコミットを表示

git log --grep index

"index"という文字列を含む行が追加もしくは削除されたコミットを表示

git log -S"index"

"index"という文字列を含む行が追加もしくは削除されたコミットの差分を表示

git log -S"index" -p

特定のファイルのコミット履歴を表示

git log -p ファイル

自分用

git log --name-status --no-merges

git --no-pager log --name-status --no-merges

ステージング操作

修正・追加したファイルをステージングに追加

git add . -A

ステージングの未コミットの指定ファイルの変更を元に戻す

git reset ファイル

ステージングの未コミットの指定ファイルの変更を元に戻し、ワーキングツリーの状態も修正前に戻す

git reset --hard ファイル

ステージングの未コミットの全ファイルの変更を元に戻す

git reset

直近のコミットを元に戻す(ファイルはそのまま)

git reset HEAD^

未整理

過去の操作の一覧を見る

git reflog

HEAD@{1}の状態に戻す

git reset --hard HEAD@{1}

作業ツリーの特定の変更を元に戻す

git checkout ファイル

作業ツリーの全ファイルの変更を元に戻す

git checkout .

トラックされてないファイルを削除

git clean -fd

.gitignoreに入ってるもの含めてトラックされてないファイルを削除

git clean -xfd

直近のコミットを取り消し、ファイルも元に戻す

git reset --hard HEAD^

以前のコミットを打ち消すコミットを作る

git revert コミットID

リモートリポジトリから削除されたブランチをローカルから削除

git pull --prune

変更が加えられたファイルを表示

git status

現在のワークツリーを退避する

git stash

現在退避してる内容を表示

git stash list

現在退避している内容を取得

git stash pop

指定したファイルのコミット履歴を表示

git blame ファイル名

設定一覧

git config --list

PR用に空のコミットを作成してpush

git commit --allow-empty -m "wip"
git push origin ブランチ

ブランチの分岐元を自動的に特定しsquash
※masterからブランチを作った場合

git rebase -i --keep-empty --autosquash $(git show-branch --merge-base master HEAD)

直前のコミットのコメントを修正

git commit --amend

squashとかした後にpush

git push --force-with-lease

特定のコミット時点のファイルを表示する

git cat-file -p ハッシュ:ファイルのパス

masterからrebase

git rebase master

conflictしたファイル一覧

git diff --name-only --diff-filter=U

一時的に変更しても変更しなかったことにしたい

git update-index --assume-unchanged 対象のファイル

↑の状態を解除したい

git update-index --no-assume-unchanged 対象のファイル

コンフリクトしたときにリモートリポジトリの内容を全て適用

git checkout --theirs .

コンフリクトしたときにローカルリポジトリの内容を全て適用

git checkout --ours .

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
42