Gitコマンドの使い方(branch, commit, revertなど)

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 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について

  • HEAD^
    • 直前コミット
  • HEAD~{n}
    • n個前のコミット

revert|打ち消し

コマンド説明
git revert <コミットID>指定コミットの変更内容を元に戻すための 新しいコミット を生成

merge|統合

コマンド説明
git merge <ブランチ名>現在ブランチに指定ブランチの変更を統合

rebase|コミット改変

コマンド説明
git rebase <ブランチ名>現在ブランチを指定ブランチの最新コミットにリベース

rebaseの interactiveモード を利用すると、コミット履歴を整理することができます。

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 --oneline1行表示
git log -pコミットの変更内容も表示

以下、コミットを絞り込むためのオプションです。

コマンド説明
git log --since="7 days ago" --pretty=format:"" --name-only1週間で変更があったファイル
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元ユーザ名/リポジトリ名

これ以降、 upstreamfork元リモートリポジトリ の場所を表す 別名(識別子) として利用できます。

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 <リモート名> <ブランチ名>リモートでブランチ生成も行う
よかったらシェアしてね!
目次