add
指定したファイルをインデックスに登録しコミット対象にする。
git add <ファイル名>
git add -u or git add --update:バージョン管理下のファイルのみaddされる。
git add -A or git add --all:すべての変更ファイルがaddされる。
git add .:カレントディレクトリ以下の変更ファイルがaddされる。
| New File | Modified File | Deleted File | |
|---|---|---|---|
| git add -u | × | ○ | ○ |
| git add -A | ○ | ○ | ○ |
| git add . | ○ | ○ | ○ |
commit
リポジトリへ変更を記録する。
git commit -m <コミットメッセージ>
直前にコミットしたメッセージの変更
git commit --amend -m <新しいコミットメッセージ>
※2つ以上前のコミットメッセージを変更する場合は、rebaseを参照。
push
ローカルリポジトリの内容をリモートリポジトリへ反映する。
git push origin <ブランチ名>
※originはリモートリポジトリの場所の別名(デフォルト)を表す。
git push origin HEAD:カレントブランチをpushする。
git push -f origin <ブランチ名>:リモートブランチをローカルブランチの内容で上書きする。
git push -d origin <ブランチ名>:リモートブランチを削除する。
fetch
リモートリポジトリから最新情報をローカルリポジトリにダウンロードする。
git fetch origin <ブランチ名>
merge
指定したブランチの内容を統合する。
git merge <ブランチ名>
pull
リモートのブランチの内容をローカルのブランチに反映する。(git fetch+git merge FETCH_HEAD)
git pull origin <ブランチ名>
branch
ブランチの一覧表示、作成、削除を行う。
ローカルブランチの一覧表示
git branch
git branch -l
リモート追跡ブランチの一覧表示
git branch -r
リモート追跡ブランチとローカルブランチの両方を一覧表示
git branch -a
ローカルブランチを作成
git branch <ブランチ名>
ローカルブランチを削除
git branch -d <ブランチ名>
git branch -D <ブランチ名>
※-Dは--delete --forceのショートカット
checkout
ワークツリーの内容を指定したブランチに切り替える。
ブランチの切り替え
git checkout <ブランチ名>
git checkout -b <ブランチ名>:ブランチを作成し、切り替える。(git branch + git checkout)
clone
リポジトリのクローンを作成する。
git clone <リポジトリのURL>
git clone <リポジトリのURL> <ディレクトリ>
init
リポジトリを新規作成する、または既存リポジトリを初期化する
git init
git init <ディレクトリ名>
rm
ファイルを削除する、またはGitの管理対象から外す
git rm <ファイル名>
git rm -f <ファイル名>:指定したファイルが最後のコミット後に変更されていても削除する。
git rm -r <ディレクトリ名>:指定したディレクトリをGitの管理対象から外し、ワークツリーからも削除する。
git rm --cached <ファイル名>:ファイルをワークツリーに残したまま、Gitの管理対象から外す。
config
Gitの設定を確認・変更する。
設定一覧を表示
git config -l
git config --list
※local,system,globalの設定を個別に確認するには、オプション--local or --system or --globalをつける。
設定の確認
git config <設定項目名>
設定の変更
git config <設定項目名> <設定値>
git config -e
Gitの設定Tips
ユーザー名とメールアドレスを設定する。
※GitHubのユーザー名とメールアドレスと揃えるとよい。
git config --global user.name "<ユーザー名>"
git config --global user.email "<メールアドレス>"
シンボリックリンクを有効にする。
git config --global core.symlinks true
日本語のファイル名が文字化けしないようにする。
git config --global core.quotepath false
ファイルの大文字・小文字を区別して認識する。
git config --blobal core.ignorecase false
改行コードが混在している場合は変換しないようにする。
git config --global core.safecrlf true
commit または checkout時に改行コードを変換しない。
git config --global core.autocrlf false
コミットメッセージを編集する際に使用するエディタを指定する。
git config --global core.editor "'C:/Program Files (x86)/Hidemaru/Hidemaru.exe' //fu8 "
カレントブランチと同名のリモートブランチが存在する場合のみ、カレントブランチのpushが行われる。
git config --global push.default simple
GitHubと通信する際に使用するユーザー名とパスワードをキャッシュする。
git config --global credentia.helper wincred
remote
リモートリポジトリとの関連付けを管理する。
リモートリポジトリの名前を表示する
git remote
リモートリポジトリの名前と場所(URL)を表示する
git remote -v
指定したリモートリポジトリの詳細情報を表示する
git remote show <リモートリポジトリの名前>
リモートリポジトリを追加する
git remote add origin <リモートリポジトリの場所(URL)>
リモートリポジトリの場所(URL)を編集する
git remote set-url <リモートリポジトリの名前> <リモートリポジトリの場所(URL)>
リモートリポジトリの削除
git remote rm <リモートリポジトリの名前>
stash
変更をコミットせずに一時的に退避する。
変更差分を退避する。(未追跡ファイルを除く)
git stash
未追跡ファイルも含めて変更差分を退避する。
git stash -u
変更差分にメッセージを付けて退避する。
git stash save <メッセージ>
退避させた変更を一覧表示する。
git stash list
退避させた変更を戻す。
git stash apply stash@{<番号>}
git stash pop stash@{<番号>}
※<番号>はgit stash listで確認できる。
退避リストから削除する。
git stash drop stash@{<番号>}
git stash clear
退避した内容を確認する。
git stash show stash@{<番号>}
git stash show -p stash@{<番号>}
status
ファイルの状態を表示する。
git status
| 項目 | 意味 |
|---|---|
| Changes to be committed | インデックスに反映されているファイル |
| Changes not staged for commit | インデックスに反映されていない変更ファイル |
| Untracked files | 未追跡ファイル |
log
コミットログを表示する。
git log
git log <ファイル名 or ブランチ名>:指定ファイル(ブランチ)のコミットログを表示する。(複数ファイル指定可能)
git log --stat:コミット毎に各ファイルの変更概要を表示する。
git log --oneline:各コミットを一行ずつ表示する。
reset
現在のHEADを指定した状態にリセットする。
git reset HEAD^
git reset --mixed HEAD^
git reset --soft HEAD^:HEADとインデックスを一つ前のコミットに戻す。
git reset --hard HEAD^:HEADとインデックス、ワークツリーを一つ前のコミットに戻す。
| HEAD | インデックス | ワークツリー | |
|---|---|---|---|
| --soft | ○ | ||
| オプションなし(--mixed) | ○ | ○ | |
| --hard | ○ | ○ | ○ |
git resetを取り消す。
# 1.戻したいところを調べる。
git reflog
# 2.戻す
git reset --soft HEAD@{<1.で調べた番号>}
revert
既存のコミットを取り消す。
※取り消したいコミットを打ち消すコミットを作成する。
git revert <コミットID>
マージコミットを取り消す場合
マージした二つのコミットのうち、どちらに戻すのか指定する必要がある。
# マージした側のブランチに戻す場合
git revert -m 1 <コミットID>
# マージされた側のブランチに戻す場合
git revert -m 2 <コミットID>
cherrypick
既存コミットの変更を反映させる。
※他ブランチの特定コミットのみを反映するできるコマンド
git cherry-pick <コミットID>
rebase
2つ以上前のコミットのメッセージ変更
# 1.rebaseのTODOリストに対象コミットを追加
git rebase -i HEAD~[対象コミットの順番]
# 2.対象コミットを「pick」からeditに変更
# 3.コミットメッセージを変更
git commit --amend -m "変更後のコミットメッセージ"
# 4.rebaseを継続する
git rebase --continue
コミットをまとめる
# 1.rebaseのTODOリストに対象コミットを追加
git rebase -i HEAD~[対象コミットの中で最古ものの順番]
# or
git rebase -i [対象コミットの一つ前のコミットID]
# 2. 対象コミットの中で最新のものを「pick」にそれ意外を「s(squash)」また「f(fixup)」に変更
# 3.まとめたコミットのメッセージを変更