2020/10/30
今回は、実践でたまに使いそうなGitコマンドについてエントリーしたいと思います。
ちなみに、Gitの基本コマンドは以下のページでまとめました。
INDEX
リモートリポジトリ(git remote)
# 名前とリモートリポジトリを関連付けする(リモートリポジトリの追加)
$ git remote add [username] [remote repository PATH]
# 上記の実例
$ git remote add origin http://xxxxxx.xxx/xxxx
# リモートリポジトリを一覧表示
# -v オプションでURLなど詳細表示
$ git remote -v
# URLを変更
$ git remote set-url origin [変更先のURL]
# 上記の実例
$ git remote set-url origin https://xxxx@bitbucket.org/xxxx/xxx.com.git
別のブランチのコミットを現在のブランチにコピー(cherry-pick)
使い方
# developブランチにチェックアウト
$ git checkkout develop
# コミット履歴を確認
$ git log -5 --oneline
# stagingブランチにチェックアウト
$ git checkout staging
# developブランチの特定のコミットをコピー
$ git cherry-pick [commit id]
コンフリクトが発生したら
依存関係があるファイルがあった場合、コンフリクトが発生します。
とりあえず、取り消すコマンドはオプションで --abort
を打ちます。
# cherry-pickをやめる
$ git cherry-pick --abort
実演だとこんな感じ。
コミットログの確認(git log)
# コミットログを参照
$ git log
# コミットログの先頭7桁のコミットIDを表示
# "q" で終了
$ git log --oneline
# 個人的によく使うコマンド
$ git log -5 --oneline
# 特定のファイルの変更履歴を確認
$ git log -p path/to/file.txt
# gitで未プッシュのコミットを確認する(masterの場合)
$ git log origin/master..master
差異を表示(git diff)
# git pull する前にリモートとの変更点を見る
# git pull をする前にローカルの最新コミットとpull先のリモートリポジトリとの変更点が見たいときはこのコマンドで見れる
$ git diff HEAD..origin/master
# git push する前にリモートとの変更点を見る
$ git diff リモート名/ブランチ名..HEAD
# git add した後に変更点を見る
# git add した後にインデックスと最新のコミットとの変更点を見たいときは --cached を付けます
$git diff --cached
# 今回コミットした変更点を見る
# cherry-pick したときに、どんなファイルが更新されたかを調べたいときもこれで見れる
$ git diff HEAD^
# コミット間の差異を表示
$ git diff [commit id 1] [commit id 2]
# ブランチ間の差分を見たい
$ git diff [ブランチ名A] [ブランチ名B]
# ブランチ間の差分を見たい(使用例)
$ git diff master develop
# ブランチ間の差分を見たい + ファイル名だけ見る
$ git diff master develop --name-only
# ある1ファイルの変更点を見る
# git add する前に、ある変更したファイルに対しての変更点が見たい場合
# git が引数をファイルを推測できる場合は -- は省略可
$ git diff -- 対象のファイルパス
# 特定のファイルを別のブランチと比較したい場合はこんな感じになります。
$ git diff ブランチA..ブランチB -- 対象のファイルパス
# 別ファイル同士を比較する
# -- の後は常にパス
$ git diff -- ファイルパスA ファイルパスB
# ファイル名だけ見る
# 変更点を表示するときに、変更があったファイルのパスだけを表示してくれます。
$ git diff --name-only
ブランチの変更・Add前の変更の取り消し・コンフリクト対応(git checkout)
# ブランチを変更する
$ git checkout ブランチ名
# 特定のファイルの変更を取り消す
# add も commit もしていないファイルが対象
$ git checkout ファイル名
# コミットされた過去のファイルを復元する
$ git checkout コミットID ファイル名
# マージでコンフリクトしたときに情報を指定してファイル内容を採用
$ git checkout --ours ファイル名
# マージでコンフリクトしたときに下方を指定してファイル内容を採用
$ git checkout --theirs ファイル名
サブモジュール(git submodule)
「外部のリポジトリを現在のプロジェクトに追加」するためのコマンドです。
# サブモジュールの参照
# 現在のサブモジュールを確認
$ git submodule
# サブモジュールの追加
$ git submodule 外部リポジトリのパス
# 実例 Laradockをサブモジュール
$ git submodule add https://github.com/laradock/laradock.git
コミットの詳細を見る(git show)
コミットの詳細を見るコマンドです。
# HEADの差分を見る
$ git show
# 他のコミットを見る
$ git show コミットID
また気づいた箇所があれば順次、追加していきます。
以上です。
【改訂新版】Gitポケットリファレンス
Gitの初歩的なことは一通り勉強していて、さらにもっとGitを使いこなしたいと思っている人におススメの本です。中身は基本的にリファレンスです。ただ、コマンドレベルの説明だけではなく、「使い方」や「エラーと対処法」など実用レベルで記述されています。普段のルーチン作業だけでは、すぐに細かいコマンドとか忘れがちになります。何かあったときのための備えとして、または辞書としてお手元に置いておくのもありかと思います。
Amazonで詳細を見る
オススメ
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。