■ はじめに
https://dk521123.hatenablog.com/entry/2020/07/11/182959
の続き。 上記の関連記事で関係したGitの文法やGitコマンドについて、まとめる。
目次
【1】関連する基本文法 1)HEAD 2)^ (キャレット) 3)~ (チルダ) 【2】関連するコマンド 1)git log 2)git reset 3)git revert 4)git checkout 5)git push -f (--force)
【1】関連する基本文法
1)HEAD 2)^ (キャレット) 3)~ (チルダ)
※補足
「2)^ (キャレット)」と「3)~ (チルダ)」は 以下のサイトを読みと、図付きでいいかも。
https://qiita.com/chihiro/items/d551c14cb9764454e0b9
1)HEAD
* 最新コミット状態を表している * @でも同じ
2)^ (キャレット)
* HEAD^ => 指定したコミットの一番目の親 * HEAD^[番号] (e.g. HEAD^4) => 指定したコミットのN番目の親
3)~ (チルダ)
* HEAD~ => 指定したコミットの一世代前の親 * HEAD~[番号] (e.g. HEAD~4) => 指定したコミットのN世代前の親
【2】関連するコマンド
1)git log 2)git reset 3)git revert 4)git checkout 5)git push -f (--force)
1)git log
* コミット履歴の閲覧
構文
git log ([オプション])
例
# 一行表示 git log --oneline # 差分表示 - 変更箇所 git log -p # 差分表示 - どのファイルに何か所変更があったか git log --stat
2)git reset
* 過去の状態に戻す => ファイルをインデックスから削除し、特定のコミットまで戻す
使用上の注意
* git reset --hard [ハッシュ値] を使った際に、 間のものは全て捨てることになる
https://qiita.com/Yorinton/items/e0e969d961b17a359e19
構文
git reset ([オプション]) # git reset --hard <戻りたい地点の過去のコミット> git reset --hard [ID/HEAD/HEAD^]
例
# 最新のコミットを捨てる git reset --hard HEAD^ # git resetしたあとにそれを取り消す git reset --hard ORIG_HEAD
3)git revert
* コミットを打ち消して、元に戻す => ログには残る => 特定のコミットを元に戻すのにも使える cf. revert = 元に戻す
構文
# コミットを打ち消す git revert [コミットID]
例
# i) git log で戻す対象のハッシュ値を調べる git log commit aa1ecxxxxxxxx ... # ii) git revert [ハッシュ値] で戻したいコミットIDを指定して実行 git revert aa1ecxxxxxxxx
4)git checkout
* 変更を戻す
構文
# 変更を戻す git checkout -- [ファイル]
参考文献
https://qiita.com/muran001/items/dea2bbbaea1260098051
5)git push -f (--force)
* 強制的にリモートの履歴を上書きする
強制Pushの危険性
* 自分以外の開発メンバがPushできなくなる可能性がある
サンプル
# リモートの master を強制に コミットID aa1ecxxxxxxxx に戻す git push -f origin aa1ecxxxxxxxx:develop
参考文献
https://next.rikunabi.com/journal/20180209_t12_iq/
関連記事
Git ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2018/06/29/104028
Git ~ 基本編 / 基本コマンド ~
https://dk521123.hatenablog.com/entry/2020/10/02/000000
【Git】状態を戻す方法を考える
https://dk521123.hatenablog.com/entry/2020/07/11/182959
Githubで状態を戻す方法を考える
https://dk521123.hatenablog.com/entry/2022/08/03/000000