* **在 Git 中,有兩個「偏移符號」:`^`和`~`**
`^`的用法:在`commit`的后面加一個或多個`^`號,可以把`commit`往回偏移,偏移的數量是`^`的數量。例如:`master^`表示`master`指向的`commit`之前的那個`commit`;`HEAD^^`表示`HEAD`所指向的`commit`往前數兩個`commit`。
`~`的用法:在`commit`的后面加上`~`號和一個數,可以把`commit`往回偏移,偏移的數量是`~`號后面的數。例如:`HEAD~5`表示`HEAD`指向的`commit`往前數 5 個`commit`
>[success] # commit 代碼后修改提交備注和內容
1. 文件已經 `commit` 一次到了本地倉庫發現少修改了提交內容,需要修改一次文件,然后`git add` =》 `git commit` 此時第二次的 `commit` 完全就是第一次要做的事
2. 文件提交了,但發現修改錯誤了,將文件修改然后`git add` =》 `git commit` 此時第二次的 `commit` 完全就是第一次要做的事
這種情況在第二次提交時候使用 `git commit --amend`,注意**commit --amend 并不是直接修改原 commit 的內容,而是生成一條新的 commit。**

如果你已經將第一次 `push` 到了遠程,第二次使用`git commit --amend`,需要`git push -f`才能推送至遠程倉庫
>[success] # 寫錯的不是最新的提交,而是倒數第二個
[風險太高我不要](https://juejin.cn/book/6844733697996881928/section/6844733698055602190)
>[success] # 刪除本次的 commit
當代碼提交到本地倉庫 `commit` 后覺得這次修改無用想全部丟掉,可以使用 `git reset --hard HEAD^` (`HEAD^` 往回數一個位置的`commit`),執行完后上一次提交在本地倉庫的所有內容都沒有,并且修改的文件內容也回到上一次 `commit `節點
* **如何找回**,`git reflog`查看原先的`commit SHA-1`碼,然后`git reset --hard commitid `回退到剛才那個`commit`版本

* 注意已經你提交到了遠程在執行本地的`git reset --hard HEAD^` ,你會發現代碼推送不上,本地和遠程的內容不一致,讓git pull,然后執行了,剛才在本地`reset`的就沒用了啊,內容都回來了,遠程已經記錄那次節點所以拉取會還原,可以**把遠程庫對應的`commit`刪除**或者 `git push origin --force`,**可以強制讓你本地的commit覆蓋遠程的commit,但是這個命令盡量少用,因為影響比較大**。
* 等同于 `Sourcetree `右鍵選中commit選擇“重置當前分支到此次提交”