gitのコマンド一覧 - 忘れるコマンドを管理する
gitでよく使うコマンドについてまとめてみました。コマンドの説明については#の部分に書いてありますが、基本的にはコピペ用に作成しています。
説明する環境は以下。
- macOS Mojar v10.14.6
- Visual Studio Code v1.39.2
この記事の目次
gitのコマンド一覧
基本的な流れ - ステージからプッシュまで
git init
# gitによる監視を開始
git add .
# すべてのファイル、ディレクトリをステージする
git commit -m "コミットします"
# コミットして、コメントを残す
git remote add origin https://github.com/ユーザ名/リモートリポジトリ.git
# リモートリポジトリとローカルリポジトリを繋げる
git push -u origin master
# 1度打てば今後git pushだけでリモートへプッシュできるようになる
リモートと紐づける
git remote -v
# これでリモートリポジトリのURLを確認する
git remote add origin https://github.com/ユーザ名/first-git.git
# リモートリポジトリの追加
git remote set-url origin [変更先のリポジトリ]
# リモートリポジトリの切り替え
リモートに反映する
git push origin master
# リモートのmasterブランチにコミットを反映させる
git push -f origin master
# 強制的にコミットをリモートに反映
git push -u origin master
# 1度打てば今後git pushだけでリモートへプッシュできるようになる
クローンする
git clone [クローンしたいリポジトリ]
# リモートリポジトリからクローンを作る
git clone [クローンしたいリポジトリ] ./
# ディレトクリの情報のみクローンする
# 余計なディレクトリを作成しない
リモートからデータを取得
git fetch origin
# リモートからデータを取得。反映させるにはマージが必要
# ローカルにリモート追跡用のブランチが作られる。
# リモートの変更履歴は以下で追える
# git log origin/master
git pull origin [ブランチ名]
# リモートからデータを取得し、さらにマージする。
fetchとmergeの違いや、どういったときにどちらを使えば良いかは以下の記事にわかりやすく説明されています。
データの統合
git merge origin/[ブランチ名]
# リモートブランチと同期したデータ、追跡ブランチをローカルリポジトリに取り込む
git merge [ブランチ名]
# カレントブランチに他のブランチを取り込む
ブランチの確認・作成
git branch
# ローカルブランチの一覧を表示する。
git branch -r
# リモートブランチの一覧を表示する。
git branch -a
# ローカル、リモート両方のブランチの一覧を表示する。
git branch [新しいブランチ名]
# 新しいブランチを作成するが、切り替えは行わない
git branch -d [削除したいブランチ名]
# 指定したブランチを削除する
git branch -D [削除したいブランチ名]
# マージの状態に関わらず指定したブランチを削除する
git branch -m [新しい名前のブランチ]
# 現在チェックアウトしているブランチ名を[新しい名前のブランチ]に変更する。
git branch --unset-upstream
# 現在チェックアウトしているブランチが追跡しているリモートブランチがあった場合、そのひもづきを解除する。
ブランチの切り替え
git checkout [ブランチ名]
# 指定したブランチに切り替える
git checkout -b [新しいブランチ名]
# 新しいブランチを作成して、さらに切り替えも行う。
取り消し
git reset --mixed HEAD^
# 直前のステージ、コミットの取り消し。ワークツリーの内容は現状維持。mixedがgit resetのデフォルト値。
git reset --hard HEAD^
# 直前のステージ、コミットを取り消し。ワークツリーの内容も1つ前のコミットの状態に戻す。
git reset --hard ハッシュ値
# 特定のハッシュ値まで戻す。
git reset --soft HEAD^
# 直前のコミットのみ取り消し。ステージは残す。ワークツリーの内容は現状維持。
# HEAD^は直前のコミットを指す
# HEAD^^は2つ前のコミット
# HEAD~2と書くこともできる。HEADの部分は@で置き換えることも可能。
# 例えばgit reset --hard @~2ともできる。
間違えた取り消しを戻す
git reflog
# 操作ログを参照
git reset --hard [戻りたいコミットID]
特定のコミットを打ち消すコミットの作成
git revert [打ち消したいコミットID]
# 打ち消すコミットの作成
# コメントの入力を求められる
git revert [打ち消したいコミットID] --no-edit
# 打ち消すコミットを作成する
# コメントの入力はしない
git revert -e [打ち消したいコミットID]
# 打ち消したコミットを作成して、コメントも編集する場合
git revert -n [打ち消したいコミットID]
# 打ち消し実行後、打ち消すコミットは作成しない
状態の確認
git status
# addされているか、commitされているか、修正されているか、コンフリクトを起こしているかなど確認できる
git log
# コミットした履歴を表示
git log -1
# 最近のログを1件だけ表示
git log --oneline
# 履歴を1列で表示
git log master
# masterのみのログを表示
git log --first-parent [ブランチ名]
# 特定のブランチのログを表示
git log --first-parent --graph --abbrev-commit --decorate [ブランチ名]
# 特定のブランチのログを見やすく表示
差分の確認
git diff
# git add する前に変更した箇所とインデックスとの変更点が見る
git diff --cached
# git add した後にインデックスと最新のコミットとの変更点を見る
git diff HEAD^
# 「最新のコミット」と「最新のコミットのひとつ前」との差分を見る
git diff [変更前のコミットID]..[変更後のコミットID]
# コミット同士を比較する
コミットの統合
git rebase -i HEAD~~~~
# 直近の4つのコミットを統合
# git rebase -i HEAD~4でも同じ意味
# sを使って直前のpickを指定したコミットに統合
# その後エディタが開くのでコメントを残して保存
rebaseはコマンドを1回打つだけでは終わりません。打ったあとの流れについては以下の記事がわかりやすく書かれています。
コミットしたコメントの編集
git commit --amend
# 直前のコミットのコメントをエディタで変更するときに使う
git commit --amend -m "コミット内容を修正"
# 直前のコミットのコメントを変更するだけならこれでオーケー
作業を一時退避させる
git stash
# あるブランチで作業のときに、まだコミットしたくないとき
git stash list
# stashした一覧を見る
# 以下のように出力される
# stash@{0}: WIP on test: xxxx
# stash@{1}: WIP on commit-sample: xxxx
git stash apply stash@{0}
# stash@{0}の状態に戻す
# addしていた変更もaddされていない状態で戻る
git stash apply stash@{0} --index
# addした状態で戻す場合はindexをつける
git stash drop stash@{0}
# 退避した作業を消す
git stash save "一時退避させる"
# stashにコメントをつける
# $git stash list
# stash@{0}: On test: 一時退避させる
git stash clear
# stash listで表示されていた退避した作業をすべて削除
さいごに
gitを使えるようになれば、例えば突然データが消えてしまっても戻すことができたり、複数人で1つのプロジェクトを進めながら全員で同じデータを管理することが可能になります。ワークスペースにあるデータをすべてターミナル上で管理できるためファイルやフォルダが散らかることがないのが魅力です。
VScodeなどのエディタにある拡張機能を使えばターミナルでコマンドを打たなくてもgitは使えます。WEB制作には欠かせないツールなので最低限のコマンドは使えるようにしましょう。