### git 刪除 錯誤 提交的 commit
方法:
根據–soft –mixed –hard,會對working tree和index和HEAD進行重置:
Git reset --mixed:此為默認方式,不帶任何參數的git reset,即時這種方式,它回退到某個版本,只保留源碼,回退commit和index信息
git reset --soft:回退到某個版本,只回退了commit的信息,不會恢復到index file一級。如果還要提交,直接commit即可
git reset --hard:徹底回退到某個版本,本地的源碼也會變為上一個版本的內容,此命令 慎用!
~~~
HEAD 倒數第一次的提交
HEAD^ 倒數第二次的提交
HEAD^ ^ 倒數第三次的提交
HEAD^^^ 倒數第四次的提交
~~~
----------------------
~~~
HEAD~0 最近一個提交
HEAD~1 上一次提交
HEAD^2 上一次的 上一次的提交(倒數第三次)
HEAD^3 倒數 第四次的 提交
~~~
任何一個版本控制系統中,最有用的特性之一莫過于 “撤銷(undo)”操作。在Git中,“撤銷”有很多種含義。當你完成了一次新的提交(commit),Git會及時存儲當前時刻倉庫(repository)的快照(snapshot);你能夠使用Git將項目回退到任何之前的版本。
下文中,我將列舉幾個常見的、需要“撤銷”的場景,并且展示如何使用Git來完成這些操作。
#### 一、撤銷一個公共修改 Undo a "public" change
場景:你剛剛用git push將本地修改推送到了GitHub,這時你意識到在提交中有一個錯誤。你想撤銷這次提交。
使用撤銷命令:git revert
發生了什么:git revert將根據給定SHA的相反值,創建一個新的提交。如果舊提交是“matter”,那么新的提交就是“anti-matter”——舊提交中所有已移除的東西將會被添加進到新提交中,舊提交中增加的東西將在新提交中移除。
這是Git最安全、也是最簡單的“撤銷”場景,因為這樣不會修改歷史記錄——你現在可以git push下剛剛revert之后的提交來糾正錯誤了。
#### 二、修改最近一次的提交信息 Fix the last commit message
場景:你只是在最后的提交信息中敲錯了字,比如你敲了git commit -m "Fxies bug #42",而在執行git push之前你已經意識到你應該敲"Fixes bug #42"。
使用撤銷命令:git commit –amend或git commit --amend -m "Fixes bug #42"
發生了什么:git commit –amend將使用一個包含了剛剛錯誤提交所有變更的新提交,來更新并替換這個錯誤提交。由于沒有staged的提交,所以實際上這個提交只是重寫了先前的提交信息。
#### 三、撤銷本地更改 Undo "local" changes
場景:當你的貓爬過鍵盤時,你正在編輯的文件恰好被保存了,你的編輯器也恰在此時崩潰了。此時你并沒有提交過代碼。你期望撤銷這個文件中的所有修改——將這個文件回退到上次提交的狀態。
* * * * *
http://mobile.51cto.com/hot-481240.htm
- 目錄
- 撤銷
- Git reset
- Git revert
- Git reset 命令
- Git的撤消操作 - 重置, 簽出和撤消
- 沖突
- 解決Git合并分支發生的沖突
- BASH
- 復制黏貼
- 教程
- 合并
- 合并提交
- 分支
- Gitee(碼云)
- Github
- 免費私有庫
- 本地倉庫推送到github倉庫
- 工具
- SourceTree
- 添加git-bash.exe到環境變量
- Git
- 安裝
- 配置
- 命令行
- 10個技巧讓開發者的Git水平迅速提升
- 3.2 Git 分支 - 分支的新建與合并
- 遠程分支
- Git幫助
- Git幫助
- 顯示命令幫助
- Git 命令
- 參數配置
- 還原至上次提交
- Git 操作命令
- Git tag
- Git 分支管理
- 認識分支
- 賣主分支
- 分支操作
- 本地倉庫遠程提交
- Git 分區
- 認識里程碑
- 忽略文件
- 已有項目
- 《Git權威指南》