リポジトリ操作

ローカルリポジトリを作成

$ git init

リポジトリを削除

$ rm -rf .git

コミット

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

$ git add file/dir

ディレクトリを指定すると、それ以下のファイルをすべて追加する

スペースで区切って複数のファイルを指定することもできる

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

$ git commit

Vimが起動するのでコメントを入力して保存する

-a addしてからcommitする
-m "comment" Vimを起動せずにコメントを書く
--amend 直前のcommitに上書きする

リポジトリのコミット履歴を表示

$ git log
-p 変更箇所を表示
--stat 変更されたファイル名・変更箇所数を表示
--oneline 1行で表示

指定コミットの変更点を表示

$ git show commitID/HEAD[:file]
--pretty=fuller 詳細表示

未コミットのファイルを表示

$ git status
-s 詳細を非表示
-b -sをつけたときにブランチ名を表示

差分を表示

作業ディレクトリ↔ステージングエリア

$ git diff

ステージングエリア↔HEAD

$ git diff --cached

作業ディレクトリ↔HEAD

$ git diff HEAD

差分を左右に並べて表示

$ git difftool

過去のコミットに巻き戻す

HEADを指定コミットに戻す

$ git reset --soft commitID

ステージングエリアをHEADに戻す(addを取り消す)

$ git reset HEAD

HEAD・ステージングエリアを指定コミットに戻す

$ git reset commitID

ステージングエリア・作業ディレクトリをHEADに戻す

$ git reset --hard HEAD

HEAD・ステージングエリア・作業ディレクトリを指定コミットに戻す

$ git reset --hard commitID

reset(コミットの巻き戻し)を取り消す

$ git reset --hard ORIG_HEAD

指定ファイルをHEADに戻す

$ git checkout -- file

ファイル操作

ファイルを削除

$ git rm file

ファイルを移動 / ファイル名を変更

$ git mv file dir/new_file

ブランチ

branch - ブランチを作成

$ git branch branch_name

引数を未指定の場合、ブランチ一覧が表示される

現在のブランチを元に複製される

-d ブランチを削除

ブランチを切り替え

$ git checkout branch_name
-b ブランチが存在しない場合、作成してから切り替え

ブランチをマージ

$ git merge from_branch

マージ時のコンフリクト(衝突)を解決

$ git mergetool

タグ

タグを付ける

$ git tag tag_name commitID

commitID省略時:HEAD

-d tag_name タグを削除

リモートリポジトリ

リモートリポジトリを作成

$ git init --bare

リモートリポジトリを追加

$ git remote add name url/path

リモートリポジトリを削除

$ git remote rm name

ローカル→リモートに上書き

$ git push remote local_branch

リモート→ローカルにfetch+merge

$ git pull remote local_branch

リモート→ローカルに完全コピー

$ git clone url/path dir

リモート→ローカルにfetch

$ git fetch remote

最新情報を取得する

git diffgit logなどはFETCH_HEADで取得できる

設定

名前 / メールアドレスを設定

$ git config --global user.name "Name"
$ git config --global user.email "example@example.com"

カラーリングをオン

$ git config --global color.ui always

MergeTool使用時にバックアップファイル(.orig)を作成しない

$ git config --global mergetool.keepBackup false

Gitコマンドにエイリアスをつける

$ git config --global alias.alias_name alias_command

設定値の一覧を表示

$ git config -l

指定したファイルをGitの管理から除外する

$ vim .gitignore

ワイルドカード(*)も使用できる

空ディレクトリを管理対象にする

$ touch .gitkeep

適当なファイルを置く必要がある

用語

リポジトリ

ファイルの変更履歴を保存する場所

ステージングエリア / インデックス

コミット前のファイルの一時保管場所

作業ディレクトリ / ワークツリー / ワーキングツリー

ファイルがあるディレクトリ

HEAD

最終コミット