##概要
前回まででGit基礎として、Gitの基礎となる原理や考え方などについてまとめたので
今回も調べた結果、よく使うであろうコマンドなどについてまとめてみた
##参考:いまさらだけどGitを基本から分かりやすくまとめてみた
###commit
・直前のcommitを上書きする
タイポ等で新しくcommitを作成する必要がない場合などに使用する
コマンド例:git commit --amend
###tag
リリースバージョン等の重要なタイミングで印をつけるためのもの
git-flowモデルなどでreleaseブランチにtagを打ったりする
・タグ作成
コマンド例:git tag v1.0
・作成したタグをリモートリポジトリに反映する
コマンド例:git push origin v1.0
・タグ削除
コマンド例:git tag -d v1.0
###revert
特定のコミットをもとに戻すコマンド
指定のコミット以降に行われた処理をすべて戻すわけではない
revertによってコミットをもとに戻したこともコミットログとして残る
コマンドを使用するとエディタが開き、コミットメッセージを編集することができる
コマンド例:git revert
参考:いまさらのrevert
####PR後に問題が発覚した時の修正反映までのフロー
①GitHub上でPRをrevert
②ローカルでgit pull でrevertを取り込んで更新する
③ローカルでrevertを取り消す
一見①②が無駄にも見えるが、正しくログを残すうえでは必要な操作となる
④修正
⑤リモートにPush
⑥PR作成してマージしてもらう
###reset
特定のコミットをもとに戻すコマンド
resetによってコミットをもとに戻したことはコミットログとして残らない
リモートリポジトリにPushした内容について、resetでもとに戻してはならない
###pull
リモートリポジトリの内容をリモート追跡ブランチに反映し、ローカルブランチに反映するコマンド
オプションなしであれば fetch + merge の動作となる
つまり、マージコミットが積まれるようになる
・rebaseコマンド
git pull --rebaseとすることで fetch + rebase の動作となる
つまり、マージコミットを積まずにpullされる
流れとしては
①ローカルリポジトリでトピックブランチを切る
②変更をリモートリポジトリにPushする
③リモートリポジトリ側でmasterにトピックブランチの差分をマージ
④ローカルリポジトリ側でmasterブランチに移動
⑤git pull --rebaseを実行する
こうするとでトピックブランチの差分がそのまま最新のブランチとなる
オプションなしであればマージコミットが積まれる
つまり、masterブランチ側とトピックブランチ側の両方が親となるマージコミットができることになる
###stash
ローカルコミットしていない内容を一時的に避難させるコマンド
ユースケースが(今のところ)思い浮かばないので、リンクだけ貼っておく
参考:コミット前の内容を一時的に避けておく「git stash」の使い方
###cherry-pick
他ブランチの特定のコミットを現在のブランチに取り込むコマンド
コマンド例:git cherry-pick
参考:cherry-pickコマンド備忘録
###grep
リポジトリに対して検索し、検索文字列と一致した内容の該当行を出力する
コマンド例:git grep aaa