実践的な事例で紹介!Gitのよく使うコマンドまとめ
Gitでよく使うコマンドをまとめました。
業務で使う機会が多いコマンドや事例を中心に紹介しており、コマンド全てを紹介する記事ではありませんので予めご了承下さい。
作業時に使うコマンド
差分があるかの確認
git status
以下のようにオプションを付けると、短縮表示になります。
git status --short --branch
インデックスに登録
git add ファイル名
-Aオプションを付けると、全てのファイルをインデックスに登録することが出来ます。
git add -A
コミット
git commit -m "コミットメッセージ"
複数行でメッセージを残すには-m "コミットメッセージ"の組み合わせを増やしてあげます。
git commit -m "一行目" -m "二行目" -m "三行目"
直前のコミットメッセージを変更することも出来ます。
git commit --amend -m "修正後のコミットメッセージ"
リモートリポジトリにコミットを反映
git push
ローカルリポジトリとリモートリポジトリが紐付いていない場合は、以下コマンドで紐付かせます。
git push -u origin ブランチ名
リモートリポジトリの内容をローカルリポジトリに反映
git pull origin ブランチ名
ブランチ関係
ブランチを作成
git branch ブランチ名
ブランチを表示
■ ローカルリポジトリのブランチを表示
git branch
git branch -l
■ リモートリポジトリのブランチを表示
git branch -r
■ 全てのブランチを表示
git branch -a
ブランチを削除
■ マージ済みのローカルブランチを削除
git branch -d ブランチ名
■ マージの有無に関わらずローカルブランチを削除
git branch -D ブランチ名
■ マージ済みのローカルブランチを全て削除
git branch --merged | grep -v '*' | xargs -I % git branch -d %'
■ リモートブランチを削除
git push --delete origin ブランチ名
ブランチを移動
git checkout ブランチ名
-bオプションを付けることで、ブランチを作成して移動まで行ってくれます。
git checkout -b ブランチ名
別ブランチのコミットを現在のブランチにコピーする
git cherry-pick コミットのハッシュ値
コミットの履歴を確認する:log
git log
git logには様々なオプションがありますが、実際の業務で使うものは数が限られてくると思います。
以下では、私が業務で使ったことがあるオプションの組み合わせです。
ログの表示をシンプルに見やすくしたものです。マージコミットは表示されないので注意して下さい。
git log --abbrev-commit --no-merges --date=short --date=iso
プッシュしていないローカルコミットを表示します。
git log --abbrev-commit --no-merges --date=short --date=iso origin/ブランチ名..ブランチ名
コミットメッセージをgrepして表示することも出来ます。
git log --abbrev-commit --no-merges --date=short --date=iso --grep 検索したい文字列
色々な操作を取り消す
操作を取り消す場合、git statusで差分を確認してから作業内容を取り消すのが一般的だと思います。
操作を取り消した後に「やっぱり取り消す前に戻したい!」ということが不可能な場合もありますので、十分注意して下さい。
addする前の変更点の取り消し
git checkout ファイル名
.で全ての変更点を取り消すことも出来ます。
git checkout .
addの取り消し
■ addを取り消し、変更点も取り消す
git checkout HEAD ファイル名
こちらも.を使うことで全を対象にすることが出来ます。
git checkout HEAD .
■ addを取り消し、変更点はそのまま
git reset ファイル名
こちらも.を使うことで全を対象にすることが出来ます。
git reset .
直前のcommitの取り消し
■ commitを取り消し、変更点も取り消す
git reset --hard HEAD^
■ commitを取り消し、変更点はそのまま
git reset --soft HEAD^
取り消しの取り消し
git resetなどで「コミットの操作を取り消したけど、やっぱり元に戻したい」というときは、
git reflog
というコマンドを使用します。詳しい使い方はググったらたくさん出てくるので、一度調べてみてはいかがでしょうか。
差分の確認:diff
addしていないファイルの差分の確認
git diff
diffにもlog同様、オプションが多数存在します。
diffのオプションは下記のひとつだけを覚えておけば、ひとまずは良いかと思います。
git diff --name-status
このオプションを付けることで、ファイルの変更内容ではなく、ファイル名を表示することが出来ます。
コミットを指定して差分を確認
git diff コミットのハッシュ値A コミットのハッシュ値B
最新のコミットとそのひとつ前のコミットの差分を確認
git diff HEAD^
リモートリポジトリの情報を反映:fetch
git fetchはリモートリポジトリから情報のみをローカルリポジトリに反映させます。
ここで重要なのは情報のみということです。コミットやブランチなどの情報がローカルリポジトリに反映されます。
つまり、git fetchを実行してもファイルの内容自体は変更されません。git fetch実行後は、以下のような操作をすることが出来ます。
■ リモートブランチの情報をgit fetchで取得後、ローカルブランチに反映(マージ)させる
git merge origin/ブランチ名
■ リモートリポジトリで削除したブランチをローカルにも反映させる
git fetch -p
Gitの初期設定:init
カレントディレクトリ(現在のディレクトリ)でGitを使えるようにする
git init
作業内容を退避:stash
■ 作業内容を退避
git stash
■ 退避した内容一覧を表示
git stash list
以下のように一覧が表示されます
■ 退避した内容を全て元に戻す
git stash apply
以下のようにstashを指定することも出来ます。
git stash apply stash@{1}
■ 保存されている退避した内容を全て削除
git stash clear
以下のようにstashを指定することも出来ます。
git stash drop stash@{1}
設定関係
登録されている設定一覧を表示
git config --list
登録されている設定を変更
下記は名前とメールアドレスを変更するコマンドになります。
git config --global user.name "名前"
git config --global user.email "メールアドレス"
リモートやりとりをする際に毎回パスワードを聞かれるのを省く設定
git remote set-url origin https://ユーザーID:パスワード@github.com/name/project.git
上記コマンドでユーザーIDとパスワードを設定後、git config --listを実行してremote.origin.urlが先程設定した内容に書き換わっていたら成功です。
まとめ
Gitのコマンドでの操作を覚えるには実際に使って覚えるのが一番効果的です。私自身、業務で使うようになってからコマンドを覚えられるようになって、さらにGit自体の知識も深まりました。
Gitのコマンド操作に慣れてきたら作業スピードも格段に上がるので、実際にどんどん使っていきましょう。