Gitコマンド一覧
Gitコマンド一覧
備忘録
グローバルオプション
全てのコマンド共通のオプション。
コマンドの前に指定する。
オプション | 説明 | 備考 |
---|---|---|
-c [config-name] [parameter] | 設定値を上書きする |
clone
git clone ブランチ名(もしくはURL)
リモートリポジトリのブランチを複製してカレントディレクトリに保存する。
その際、ローカルリポジトリも作成される。
init
# カレントディレクトリ
git init
# ディレクトリを指定
git init ディレクトリ名
ローカルリポジトリを新規作成する。
コマンド実行後に指定したディレクトリが管理対象となり、「.git」ディレクトリが作成される。
remote
# リモートリポジトリ名を表示
git remote
# リモートリポジトリ名とURLを表示
git remote -v
リモートリポジトリの操作を行う。
リモートリポジトリはリモートリポジトリ名/ディレクトリパス(URL)で構成される。
デフォルトのリモートリポジトリ名はorigin。(リモートリポジトリ名はURLのエイリアス)
remote add
git remote add リモートリポジトリ名 URL
# ローカルリポジトリにgithubに作成されたリモートリポジトリを登録する
git remote add origin https://github.com/github-username/repository
ローカルリポジトリにリモートリポジトリを追加する。
remote rm
git remote rm リモートリポジトリ名
リモートリポジトリを削除する。
remote set-url
git remote set-url リモートリポジトリ名 URL
# originのURLをsshに変更する例
git remote set-url origin ssh-hostname@github.com:user/repository.git
リモートリポジトリのURLを変更する。
remote rename
git remote rename 変更前 変更後
# originをhogeに変更
git remote rename origin hoge
リモートリポジトリ名を変更する。
remote show
git remote show リモートリポジトリ名
リモートリポジトリの詳細情報を表示する。
branch
# ローカルリポジトリのbranchを一覧表示
git branch
# リモートリポジトリのbranchを一覧表示(git fetchしておくこと)
git branch -a
# branchを削除(mergeされていないbranchのみ)
git branch -d ブランチ名
# branchを削除
git branch -D ブランチ名
ローカルリポジトリのブランチを操作する。
checkout
# ブランチの切り替え
git checkout ブランチ名
# コミットの切り替え(ステージングの内容はそのまま)
git checkout コミット値
# ブランチの作成
git checkout -b ブランチ名
ブランチの作成や切り替えを行う。
また、作業を行ったブランチを元に戻す。
コミットの切り替えも可能。
(後述のgit switchとgit restoreに機能を分割)
リモートリポジトリから取得
ローカルリポジトリに存在せず、リモートリポジトリに存在するブランチを指定した場合、リモートのブランチの内容をコピーしたローカルリポジトリを作成する。
特定ブランチのファイル/ディレクトリを取得
# 取得データはステージングに反映される
git checkout 対象ブランチ名 ファイルパス|ディレクトリパス
# ファイル名を変更して取得
git checkout 対象ブランチ名:ファイルパス|ディレクトリパス > リネーム名
指定したブランチのファイル、もしくはディレクトリをカレントブランチに適用する。
switch
# ブランチの切り替え
git switch ブランチ名
# ブランチの作成
git switch -c ブランチ名
# 強制的に作成
git switch -C ブランチ名
# デタッチモードでブランチを作成
git switch -d ブランチ名
ブランチの切り替えや作成を行う。
restore
# ステージングに反映していないファイルを元に戻す
git restore . # 全て戻す
git restore ファイル名
# ステージングの内容を元に戻す
git restore --staged ファイル名
# コミットの切り替え(ステージングの内容を削除)
git restore -s コミット値
ブランチの作業内容を元に戻す。
add
# 全ファイル
git add .
# 変更ファイルのみ
git add -u
# ファイルを指定
git add ファイル名
# 変更されたファイルのみステージング
git add -n .; git diff —name-only
指定したファイル名、もしくはオプションに応じたファイルをステージングする。
「git add -u」でステージングを行うと削除ファイルもインデックスに反映される。
status
git status
# 省略表示
git status -s
ステージングされたファイルの一覧を表示する。
rm
git rm 削除ファイル名
削除したファイルを指定し、ステージングする。
リモートリポジトリに削除ファイルを反映するにはrmでステージングを行った後にコミットする必要がある。
commit
git commit
# コミットメッセージを付与
git commit -m “コミットメッセージ”
インデックスに登録されたファイルをリモートリポジトリにコミットする。
push
git push
# 実行内容の確認(実行はされない)
git push -n
ローカルリポジトリの変更内容をリモートリポジトリに送信し、コミットを更新する。
pull
# リモートリポジトリの全ての変更内容を取得
git pull
# 指定したリポジトリのブランチの変更内容を取得
git pull リモートリポジトリ名 ブランチ名
# デフォルトのリモートリポジトリ名はorigin
git pull origin ブランチ名
リモートリポジトリの内容を取得し、作業中のブランチに取り込む。(fetchとmergeを同時に行う)
(マージ後、「esc」+「:」+「q」を入力)
pull —rebase
git pull —-rebase リポジトリ名 ブランチ名
マージを行う際は通常プルリクエスト先準拠でコミットを統合するが、--rebaseオプションを付与するとプルリクエスト元準拠で統合する。
プルリクエスト元準拠なのでマージコミットが発生しない。
conflict
マージ後、「CONFLICT (content): Merge conflict in .....」 と表示されたファイルは変更内容がコンフリクト(衝突)している。
該当ファイルを開くとコンフリクト箇所は「HEAD」で区切られるので修正を行った後「git add 該当ファイル名」を実行。
fetch
git fetch
git fetch ブランチ名
git fetch リモートリポジトリ名/ブランチ名
ローカルリポジトリとリモートリポジトリを同期し、変更情報を取得する。
ブランチ名を指定した場合、指定したブランチの変更情報を取得する。
変更情報はリモート追跡ブランチに保存される。(ワークツリーに影響はない)
merge
git merge ブランチ名
ローカルブランチ内の別ブランチの全コミットを作業中のブランチにマージする。
また、fetchしたブランチのマージを行う際に指定する。
marge reset
git merge —abort
マージ後に編集を行なっていなければ上記コマンドでリセット出来る。
cherry-pick
git cherry-pick コミット値
# 複数選択も可能(選択順にマージ)
git rebase コミット値1 コミット値2 コミット値3 ...
指定したコミットを作業中のブランチにマージする。
rebase
# カレントディレクトリのコミットを指定したブランチに適用
git rebase ブランチ名
# 適用元のブランチを第二引数に指定可
git rebase コミットを適用するブランチ 元となるブランチ
# rebase確認メッセージのスキップ
git rebase --continue
# rebaseのスキップ(conflict解消に利用)
git rebase --skip
# rebaseの中断
git rebase --abort
指定したブランチのコミットをカレントブランチに適用し、コミットを再編成する。
再編成の際、重複しているコミットはスキップされる。
また、コミットを別ブランチの指定位置に移動させたり、複数コミットを一つのコミットに再定義したりできる。
破壊的な履歴変更を行うため、他メンバーのpull/pushに支障が出る恐れがある
そのため、push済みコミットのrebaseは絶対に行わないこと(pushしていないローカルブランチにのみ適用)
rebase -onto
git rebase -onto ブランチ 派生ブランチ1 派生ブランチ2
派生ブランチ1からcheckoutされた派生ブランチ2のコミットのみブランチに適応する。
git rebase -onto main develop feature/local
上記のように指定するとfeature/localがmainではなくdevelopからブランチを切っていた場合にdevelopの内容を排除できる。
rebase -interactive
git rebase -interactive コミット値
# -iに省略可能
git rebase -i コミット値
# git configで起動するエディタは指定できる(デフォルトはvim)
インタラクティブモードでコミットの編集ができる。
実行すると以下の編集モードが開かれ、編集したい内容に応じてキーワードを指定して編集を行う。
キーワード コミット値 コミットメッセージ
キーワード コミット値 コミットメッセージ
キーワード コミット値 コミットメッセージ
...
rebase -interactive キーワード
キーワード | 機能 |
---|---|
pick | p | 現状維持(デフォルト) |
reword | r | コミットメッセージを変更 |
edit | e | ファイルを修正 |
squash | s | 直前のコミットと統合 |
fixup | f | 直前のコミットと統合(コミットメッセージの変更なし) |
exec | e | shellで実行 |
rebase -interactive 編集例
~ $ git log --onlline
# 以下の3つのコミットがある
xxxxxx add: ファイルの追加
yyyyyy update: ファイルの更新
zzzzzz fix: ファイルの修正
~ $ git rebase -i xxxxxx
# 以下の編集画面が表示される
pick yyyyyy update: ファイルの更新
pick zzzzzz fix: ファイルの修正
# rebase xxxxxx..zzzzzz onto xxxxxx
# ...
# 目的に応じて編集して保存
pick yyyyyy update: ファイルの更新
reword zzzzzz fix: xxxをyyyに修正
:wq
~ $ git log --onlline
# 変更されている
xxxxxx add: ファイルの追加
yyyyyy update: ファイルの更新
zzzzzz fix: xxxをyyyに修正
show
git show コミットのハッシュ値 or HEAD
指定したコミットの履歴を参照する。
log
git log [ブランチ]or[ファイル名]
コミットの履歴と詳細を表示する。
また、コミット履歴の検索も可能。
引数にブランチやファイル名を指定した場合、指定した引数に関連するログのみを出力。
log --online
git log —-online
コミット値とメッセージのみ表示する。
log -S
git log -S “検索値”
コミットメッセージとコミット内容を検索する。
log -grep
Git log -grep=“検索値”
コミットメッセージのみを検索する。
log —since / log —until
git log —since=yyyy-mm-dd
git log —until=yyyy-mm-dd
git log —since=yyyy-mm-dd —until=yyyy-mm-dd
—sinceは指定日付以降のログを表示する。
—untilは指定日付以前のログを表示する。
組み合わせることで出力範囲の絞り込みができる。
reflog
git reflog
コミットの履歴を表示する。
削除したコミットの履歴も確認できる。
「reset —hard」でコミットを巻き戻すときの履歴の確認に役立つ。
reset
git reset オプション コミット値
# 例
# どちらも現在作業中のコミットのインデックスを削除する
git reset --mixed HEAD
git reset HEAD
インデックスに登録されたファイル一覧を削除したり、ブランチをコミット前の状態に戻す操作を行う。
resetコマンドではリセットしたい内容に応じて主に「—soft」「—mixed」「—hard」の3つのオプションを指定する。
リセットはローカルリポジトリ内に反映される。
reset --soft
git reset --soft コミット値
コミット値に指定したコミットを削除する。
インデックスとワーキングツリーはそのまま。
コミット値にHEAD^を指定することで直前のコミットを取り消す。
reset --mixed
git reset --mixed コミット値
コミット値に指定したコミットとインデックスを削除する。
addコマンドでステージングした内容を削除する場合に指定する。(オプションを省略した場合の引数はmixed)
reset --hard
git reset --hard コミット値
コミット値に指定した「コミット」「インデックス」「ワーキングツリー」全て削除する。
作業中の内容を全てリセットする場合に指定する。
直前のリセットの取り消し
# 「ORIG_HEAD」をコミット値に指定すると直前のリセットを取り消しできる
git reset --hard ORIG_HEAD
revert
git revert コミット値
指定したコミットの打ち消しを行う。
stash
git stash
作業中ブランチの内容を退避する。
作業内容はスタッシュとして「WIP on {作業ブランチ名}: {親コミット値} {親コミットメッセージ}」で保存される。
コミットせずにブランチの切り替えを行いたいときや、作業するブランチを間違えたときに使用する。
スタッシュすると作業中のコミットの変更がリセットされ、applyやpopで退避した内容を戻すと再度適用される。
stash push
git stash push [ファイル名][ファイル名]…
ファイルを指定して退避する。
stash apply
git stash apply
git stash apply stash@{番号}
退避したスタッシュを作業中のブランチへ適用する。
退避したスタッシュが複数ある場合はstash@{番号}で指定出来る。
stash save
git stash save “任意のコメント”
スタッシュの内容に任意のコメントをつける。
stash list
git stash list
保存したスタッシュの一覧を表示する。
stash show
git stash show
保存したスタッシュの詳細を表示する。
stash pop
git stash pop
git stash pop stash@{番号}
退避したスタッシュを作業中のブランチに適用する。
applyとは違い、適用後に保存したスタッシュをlistから削除する。
stash drop
git stash drop
git stash drop stash@{番号}
直前のスタッシュを削除。
番号を指定した場合、該当のスタッシュを削除できる。
(競合が発生した際に別ブランチに復元→編集→checkoutなどで復元する用途などで使用)
stash clear
git stash clear
スタッシュを全て削除。
stash branch
git stash branch ブランチ名
スタッシュのpopを行う際、新規にブランチを作成して適用する。
ブランチはstashしたブランチのコミットから作成される、
checkout stash
git checkout stash@{番号} ファイル名
指定したファイルをスタッシュから適用する。
スタッシュは削除されない。
stashの復元
stashした内容を誤ってclearしてしまった場合は下記を参考にする。
diff
# ステージングした内容を表示
git diff —cached
git diff —staged
# 前回コミット時の内容と比較
git diff HEAD^
# コミット同士を比較
git diff 変更前コミット値 変更後コミット値
# ローカルブランチ同士を比較
git diff ブランチ名1 ブランチ名2
# ローカルリポジトリとリモートリポジトリの比較
git diff ローカルブランチ名 リモート名/ブランチ名
git diff HEAD origin/ブランチ名
git diff origin/ブランチ名 HEAD (push箇所の確認等)
# ファイルの変更点の表示
git diff — ファイルパス
git ブランチ名1 ブランチ名2 — ファイルパス
# 変更内容をゲージで表示
git diff —stat
# 変更されたファイルのパスのみ表示
git diff ブランチ名|コミット値 --name-only
# 空白や改行コードの違いを無視
git diff -w
# 空行を無視
git diff —ignore-blank-lines
# 差分を上側に表示
git diff -compaction-heuristic
コミットやローカルブランチとリモートブランチの差分を表示する。
索引
コマンド | 実行内容 |
---|---|
clone | リポジトリのクローンを作成する |
init | リポジトリを新規作成する、または既存のリポジトリを初期化する |
remote | リモートリポジトリを関連付けする |
fetch | リモートリポジトリの内容を取得する |
pull | リモートリポジトリの内容を取得し、現在のブランチに取り込む(「fetch」と「merge」を行う) |
push | ローカルリポジトリの変更内容をリモートリポジトリに送信する |
add | ファイルをインデックスに追加する(コミットの対象にする) |
rm | ファイルをインデックスから削除する |
mv | ファイルやディレクトリの名前を変更する |
reset | ファイルをインデックスから削除し、特定のコミットの状態まで戻す |
revert | コミットの打ち消しを行う |
status | ワークツリーにあるファイルの状態を表示する |
show | ファイルの内容やコミットの差分などを表示する |
diff | コミット同士やコミットと作業ツリーの内容を比較する |
commit | インデックスに追加した変更をリポジトリに記録する |
tag | コミットにタグを付ける、削除する、一覧表示する |
log | コミット時のログを表示する |
grep | リポジトリで管理されているファイルをパターン検索する |
branch | ブランチを作成、削除、一覧表示する |
checkout | 作業ツリーを異なるブランチに切り替える/変更をリセットする |
switch | 作業ツリーを異なるブランチに切り替える |
restore | ファイル、ステージング、コミット等の変更をリセットする |
merge | 他のブランチやコミットの内容を現在のブランチに取り込む |
rebase | コミットを再適用する(ブランチの分岐点を変更したり、コミットの順番を入れ替えたりできる) |
config | 現在の設定を取得、変更する |
Discussion