2019.1.21

実践的な事例で紹介!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

以下のように一覧が表示されます

stash@{0}: WIP on master: e8b788c コミットメッセージ
stash@{1}: WIP on master: 672cc79 コミットメッセージ

 

■ 退避した内容を全て元に戻す

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のコマンド操作に慣れてきたら作業スピードも格段に上がるので、実際にどんどん使っていきましょう。

シェアする
フォローする
Web-Guided - web業界で働く方を少しだけ手助けするメディア