コンテンツにスキップ

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.md

HEADとは、自身が今いるポインタを意味している。
HEADはブランチを指している状態の時attach状態 Commitのhash値を指している時、detach状態となる。
上記、git logの例で言うと、 この直線の部分のみがcommitされている数となる。

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することを考える。

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.md
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.md
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 status
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: test.md