Kの雑記

最近忘れやすいので、備忘録がわり

Gitコマンドメモ

ほぼ「独習GIT」のまんまだが・・・

初期設定系

最初にやると、次回以降設定不要なやつ

git config

  • 名前をグローバル設定に追加
git config --global user.name "your name"
  • メアドをグローバル設定に追加
git config --global user.email "your email"
  • 全てのGit設定を表示
git config --list
  • 表示
git config user.name

基本コマンド系

git init

Gitレポジトリの初期化

git init

git status

Gitの作業ディレクトリの状態表示。

作業ディレクトリとステージングエリア、ステージングエリアとレポジトリのファイル状態が確認できる。

git status

git add

ファイルをステージングエリアに追加

git add <ファイル>

git addでなにが実行されるかを示す。実際にaddされるわけじゃない。

git add --dry-run

作業ディレクトリ内の新たしいファイルを全てステージングエリアに追加する。

git add .

ステージングエリアに追加する変更部分を手作業で選択する。ファイルの一部をステージングエリアにあげたい場合に利用。

git add -p

git commit

変更をGitレポジトリにコミットし、メッセージをつける。

メッセージのあと、1行あけて詳細な説明を書くこともできる。

git commit -m "メッセージ" #1行メッセージの場合
git commit  # 詳細メッセージ記入する場合。エディタが開く

エディタに記入

 10 first commit              #メッセージ
 11                             #1行開けて...
 12 some message.....   #詳細な説明を記述する
 13 detail.......  

git addgit commitを一度に実行する場合

git commit -a -m "メッセージ"

git log

Gitレポジトリのログ(ヒストリー)表示

git log

# ログとともに、変更されたファイルを表示する場合
git log --stat

#各コミットを1行で表示
git log --oneline

#ヒストリー表示。個々のコミット間の変更されたファイルの概要表示
git log --patch

# ヒストリー表示。patchとstatの組み合わせ
git log --patch-with-stat

#指定ファイルのヒストリー表示。
git log --oneline <ファイル>

# ヒストリー表示。親のSHA1 ID表示。
git log --parent
# SHA1 IDの短縮表示
git log --parent --abbrevcommit

# 履歴をコミットごとに1行で表示し、
# 各コミットで変更されたファイルのリストを1行で表示する場合
git log --shortstat --oneline

#レポジトリの履歴を表示する。全ブランチ分。
git log --graph --decorate --pretty=oneline --all --abbrev-commit

#上記コマンドのalias
git config --global alias.lol "log --graph --decorate --pretty=oneline --all --abbrev-commit"

git ls-files

レポジトリ内のファイルをリスト表示

git ls-files

git diff

作業ディレクトリ、ステージングエリア、レポジトリのファイル比較をする。ただし追跡用ファイルとして登録している必要があるのでgit addで登録されていないと対象外となる。

# 作業ディレクトリとステージングエリアのファイル比較
git diff

#ステージングエリアとレポジトリのファイル比較
git diff --staged

ブランチ間での比較をする

# BRANCH1とBRANCH2の差分比較
git diff BRANCH1...BRANCH2

#ブランチ間の違いを、ファイル名と状態で簡易表示
git diff --name-status BRANCH1...BRANCH2

git rm

ファイルをステージングエリアから削除(remove)する。

git rm <ファイル>

git mv

ステージングエリアで、ファイル1の名前をファイル2に変更する。

git mv <ファイル1> <ファイル2>

git reset

ステージングエリアをリセット(reset)して、ファイルをコミット予定から外す。このときステージングエリアに加えた変更は破棄されるが、作業ディレクトリに加えた変更はそのままなのは注意。

git reset <ファイル>

git checkout

ファイルの「最後にコミットしたバージョン」をチェックアウトして、ワーキングディレクトリに入れる。

git checkout <ファイル>

作業ディレクトリにSHA1IDのバージョンと一致させる。

git checkout <SHA1ID>

#作業ディレクトリにブランチを反映
git checkout <ブランチ>

git tag

SHA1IDを参照するタグを作成する。

git tag <TAG_NAME> -m "メッセージ" <MY_SHA1ID>

#タグのリストを出力
git tag

#タグの情報出力
git show <TAG_NAME>

git branch

ブランチのリスト出力。SHA1IDをつける場合は-v

git branch
git branch -v

#ブランチの新規作成
git branch <ブランチ>

#作業ディレクトリにブランチを反映
git checkout <ブランチ>

#MY_SHA1IDのブランチmy_branchを作成する
git branch my_branch MY_SHA1ID
#ブランチ作って、チェックアウトまで一回でやる場合
git checkout -b my_branch MY_SHA1ID

#ブランチ削除
git branch -d <ブランチ>

git cloneした場合、HEADで指しているブランチしか見えない。全てのブランチを見る場合

git branch --all

git reflog

これまでにgit checkoutによって行ったブランチ切り替えの全ての記録を表示する。

git reflog

git merge/merge-base

BRANCH2を現在の(カレント)ブランチにマージ

git merge BRANCH2

#ブランチ間のマージを中止
git merge --abort

# BRANCH1とBRANCH2に共通するベースコミットを表示
git merge-base BRANCH1 BRANCH2

使わない系

git stash

git stash
git stash list
git stash pop