Gitの「設定」「基本的な使い方」をまとめました。「ブランチ切り替え方法」「コミット方法」など頻繁に利用する機能から、「コミット変更履歴確認方法」など忘れやすい機能も取り上げています。
目次
設定とリポジトリ作成
config|設定
「~/.gitconfig」に書き込まれます。
git config --global user.name "hoge"
git config --global user.email "hoge@hogehoge.com"
設定ファイルについて
ファイル | 対象 | 確認コマンド |
---|
/etc/gitconfig | 全ユーザ | git config --system -l |
~/.gitconfig | 特定ユーザ | git config --global -l |
.git/config | 特定リポジトリ | git config --local -l |
git config -l
で最終的に適用される設定値を確認できます。
コミッタ情報を環境変数で設定
環境変数でもコミッタ情報を設定できます。下記4つの環境変数を登録します。
export GIT_COMMITTER_NAME="xxxxxxxxxxx"
export GIT_COMMITTER_EMAIL="xxxxxxxxxxx@xxxx.com"
export GIT_AUTHOR_NAME="xxxxxxxxxxx"
export GIT_AUTHOR_EMAIL="xxxxxxxxxxx@xxxx.com"
環境変数がconfigファイルの設定より優先されます。
init|リポジトリ作成
.git
が作成されます。.git
を削除すればgit管理を辞めることができます。
ブランチ作成 & 切り替え
branch|ブランチ操作
コマンド | 説明 |
---|
git branch | ローカルブランチの一覧表示 |
git branch -r | リモートブランチ一覧表示 |
git branch -a | リモートとローカルのブランチの一覧表示 |
git branch <ブランチ名> | ブランチ作成 |
git branch -d <ブランチ名> | ブランチ削除 |
git branch -b <ブランチ名> | ブランチ作成 & 切り替え |
git branch -m <古いブランチ名> <新しいブランチ名> | ブランチリネーム |
git branch -d <ブランチ名> | ブランチ削除 |
checkout|ブランチ切り替え
コマンド | 説明 |
---|
git checkout <ブランチ名> | ブランチ切り替え |
git checkout <ブランチ名> <ファイル名> | 特定ファイルだけブランチ切り替え |
checkoutにより、HEADを移動させることで、使用するブランチが変更されます。コミットしてない変更内容も移動先ブランチに移動されます。
git checkout HEAD <ファイル名>
とすることで、特定ファイルだけ変更してない状態に戻せます。
stash|一時退避
コマンド | 説明 |
---|
git stash | 一時退避 |
git stash list | 退避の一覧表示 |
git stash pop | 退避を戻す |
git stash apply <stash名> | stash名を指定して戻す |
git stash clear | 退避の消去 |
git stash drop <stash名> | 退避した作業を消す |
checkoutを行うと、元のブランチで行った変更内容は、移動先のブランチに移動されます。変更内容を移動させたくない場合、stashを使って退避させてからcheckoutを行います。
ステージング作業
add|登録
コマンド | 説明 |
---|
git add <ファイル名> | ステージングに登録 |
rm|削除
コマンド | 説明 |
---|
git rm -f <ファイル名> | ファイル削除 |
コミット
commit|コミット
コマンド | 説明 |
---|
git commit -m "コミットメッセージ" | コミット |
git commit --amend | 直前のコミットを修正 |
reset|取り消し
コマンド | 説明 |
---|
git reset HEAD <ファイル名> | ステージング登録取り消し |
git reset --hard HEAD^ | 直前のコミットを取り消す(ワークディレクトリの内容を書き換える) |
git reset --soft HEAD^ | 直前のコミットを取り消す(ワークディレクトリの内容をそのまま) |
HEADについて
revert|打ち消し
コマンド | 説明 |
---|
git revert <コミットID> | 指定コミットの変更内容を元に戻すための 新しいコミット を生成 |
merge|統合
コマンド | 説明 |
---|
git merge <ブランチ名> | 現在ブランチに指定ブランチの変更を統合 |
rebase|コミット改変
コマンド | 説明 |
---|
git rebase <ブランチ名> | 現在ブランチを指定ブランチの最新コミットにリベース |
rebaseの interactiveモード
を利用すると、コミット履歴を整理することができます。
あわせて読みたい
rebaseでコミットログを整理(順序入れ替え, 統合, メッセージ変更)
リベースのinteractiveモード( git rebase -i ) を利用すると、コミット履歴を綺麗に整理することができます。ここでは、rebaseを利用して、コミットの「順序入れ替え」「再編集」「統合」「メッセージ変更」をしてみます。
cherry-pick|他ブランチのコミット反映
コマンド | 説明 |
---|
git cherry-pick <コミットID> | 別ブランチの特定コミットをカレントブランチに反映 |
tag|タグ操作
コマンド | 説明 |
---|
git tag | タグ一覧を表示 |
git tag <タグ名> | 特定のコミットに対してtagを付与 |
git tag -a <タグ名> -m 'コメント' <コミットID> | コミットを指定してtagを付与 |
git push origin <タグ名> | ローカルで作成したタグをリモートを反映 |
作業状況 & 履歴確認
status|ローカル変更を確認
コマンド | 説明 |
---|
git status | ローカル変更を確認 |
show|指定コミットの変更点を確認
コマンド | 説明 |
---|
git show <コミットID> | 指定コミットの変更点を確認 |
log|コミット変更履歴確認
コマンド | 説明 |
---|
git log | コミットログ履歴を表示 |
git log --oneline | 1行表示 |
git log -p | コミットの変更内容も表示 |
以下、コミットを絞り込むためのオプションです。
コマンド | 説明 |
---|
git log --since="7 days ago" --pretty=format:"" --name-only | 1週間で変更があったファイル |
git log <ファイル名> | 特定ファイルの履歴を表示 |
git log -L 10,15:<ファイル名> | 特定ファイルの10〜15行目の履歴を表示 |
git log -G '正規表現' | コミットの変更内容から正規表現で検索して表示 |
git log -S '文字列' | コミットの変更内容から文字列で検索して表示 |
-G
-S
オプションは、昔存在したコードがいつ削除されたか確認するときに役立ちます。
blame|誰がいつ変更したか確認
コマンド | 説明 |
---|
git blame <ファイル名> | 特定ファイルの各行について、誰がいつ変更したか確認 |
diff|変更差異を確認
コマンド | 説明 |
---|
git diff <ブランチ名> <ブランチ名> | ブランチ間の差分を表示 |
git diff HEAD | 最新コミットとの差分を表示 |
git diff --compact-summary | 差分の要約を表示 |
git diff -- target_path | 指定ファイルのみの差分を表示 |
リモート連携
remote|リモートリポジトリ登録
コマンド | 説明 |
---|
git remote -v | リモートリポジトリ一覧 |
git remote add <リモート名> <リモートリポジトリ> | リモートリポジトリ登録 |
git remote set-url <リモート名> <リモートリポジトリ> | リモートリポジトリを変更 |
git remote prune --dry-run <リモート名> | リモートで削除されているが、ローカルで残っているブランチを表示 |
git remote prune <リモート名> | リモートで削除されているが、ローカルで残っているブランチを削除 |
リモートリポジトリの登録例
# HTTPS接続の場合(GitHubアカウントのユーザー名、パスワードによる認証)
git remote add origin https://github.com/ユーザ名/リポジトリ名
# SSH接続の場合(公開鍵認証)
git remote add origin git@github.com:ユーザ名/リポジトリ名
origin
が リモートリポジトリ
の場所を表す 別名(識別子)
として利用できます。
origin/masterとmasterの違い
- origin/master
- リモートリポジトリ「origin」のブランチ「master」です。
- master
- ローカルリポジトリのブランチ「master」です。
fork元リポジトリを登録
通常、fork元リポジトリには upstream
という名前をつけます。
git remote add upstream git@github.com:fork元ユーザ名/リポジトリ名
これ以降、 upstream
が fork元リモートリポジトリ
の場所を表す 別名(識別子)
として利用できます。
clone|リモートリポジトリ取得
コマンド | 説明 |
---|
git clone <リモートリポジトリ> | リモートリポジトリ取得 |
git clone -b <ブランチ名> <リモートリポジトリ> | ブランチを指定して取得 |
fetch|リモートの変更を取得
コマンド | 説明 |
---|
git fetch <リモート名> | リモートの変更を取得 |
PRの動作確認をローカルで行いたい場合、以下のように行います。
# 1. ブランチをローカルに取り込む。(forkしているならupstreamです。)
git fetch origin pull/PR番号/head:ブランチ名
# 2. 取り込んだブランチに移動する。
git checkout ブランチ名
pull|リモートの変更を取得して反映
コマンド | 説明 |
---|
git pull <リモート名> <ブランチ名> | リモートの変更を取得して反映 |
push|リモートに変更を反映
コマンド | 説明 |
---|
git push <リモート名> <ブランチ名> | カレントブランチをリモートリポジトリの特定ブランチに反映 |
git push --set-upstream <リモート名> <ブランチ名> | リモートでブランチ生成も行う |