history
コミット履歴を確認する
git log❯ glog* 8df5a4c 4 seconds ago by"kurage" Merge branch 'feature/test' (HEAD -> main)|\| * 46c1fe2 35 minutes ago by"kurage" feat: Add test (feature/test)|/* 78a95a2 36 minutes ago by"kurage" feat: Add README.mdHEADの考え方
Section titled “HEADの考え方”HEADとは、自身が今いるポインタを意味している。
HEADはブランチを指している状態の時attach状態
Commitのhash値を指している時、detach状態となる。
上記、git logの例で言うと、
この直線の部分のみがcommitされている数となる。
restore
Section titled “restore”stageに上がったものをworktreeに戻す
git resotre --staged <filename or .>worktreeの変更をなかったことにする(復元不可)
git resotre (--worktree) <filename or .>昔は、 git checkout を使用(Git 2.23以降、restoreに変更)
git reset <option> HEAD~<commitNumber>
| モード | コミット | ステージング | 作業ディレクトリ | 使いどころ |
|---|---|---|---|---|
--soft | 取り消す | 残る | 残る | コミットメッセージだけ直したい |
--mixed(default) | 取り消す | 消える | 残る | add からやり直したい |
--hard | 取り消す | 消える | 消える | すべてなかったことにしたい |
先ほどの例でいうと、
仮に、ADD README.md まで戻したい場合、46c1fe2 は、HEADの数に入らず git reset HEAD~1 とする。
以下のような、Mergeの方法がある。
例として:
- main
- feature/test (A,B)
mainに対して、feature/testをmergeすることを考える。
fast-forward merge --ff (default)
Section titled “fast-forward merge --ff (default)”gitGraph commit id: "feat: Add README.md" branch feature/test checkout feature/test commit id: "feat: Add test" checkout main merge feature/test
* 46c1fe2 28 minutes ago by"kurage" feat: Add test (HEAD -> main, feature/test)* 78a95a2 29 minutes ago by"kurage" feat: Add README.mdno-fast-forward merge --no-ff
Section titled “no-fast-forward merge --no-ff”gitGraph commit id: "feat: Add README.md" branch feature/test checkout feature/test commit id: "feat: Add test" checkout main merge feature/test id: "Merge branch 'feature/test'"
❯ glog* 8df5a4c 4 seconds ago by"kurage" Merge branch 'feature/test' (HEAD -> main)|\| * 46c1fe2 35 minutes ago by"kurage" feat: Add test (feature/test)|/* 78a95a2 36 minutes ago by"kurage" feat: Add README.mdsquash merge --squash
Section titled “squash merge --squash”gitGraph commit id: "feat: Add README.md" branch feature/test checkout feature/test commit id: "wip: work in progress" commit id: "fix: typo" commit id: "feat: Add test" checkout main commit id: "feat: Add test (squashed)"
❯ git statusOn branch mainChanges to be committed: (use "git restore --staged <file>..." to unstage) new file: test.md