git add后取消_git 必看,各种撤销操作
場景概念說明
首先說明一個概念, git是一個分布式的版本控制工具,分布式即 git 管理的項目是有多個大致平等的倉庫的。通過一個例子來說明這個東西。
舉一個最簡單的使用場景: 你在github 建立了一個項目, 然后把已經初始化的項目拉到了本地(或者從本地push了內容到github)。 即: 此時github 和你本地都有了項目,且二者,已經建立了聯系。
此時這一個項目既有了兩個倉庫,一個在github 的遠端倉庫,一個在本地的本地倉庫。 如果是兩人合作,則會有兩個本地倉庫。 雖然主觀上,把github上的倉庫視為主倉庫,但是我們可以通過一些操作,把任一倉庫變更為新的主倉庫。 即: 這些倉庫的地位沒有實質上的差別。可以做如下轉換:
不熟練就先備份
不熟練的話,做感覺有危險的操作前,先備份。
可以使用 git stash,備份當前的修改,想要恢復的時候,直接使用 檢出即可。 或者干脆 git checkout -b newBranch, 備份一個新分支。 備份 不是今天的主要話題,就不展開講了。
撤銷操作--僅變動本地的代碼
取消文件的修改
git checkout fileName, 這個命令會從本地倉庫里檢出文件,覆蓋掉 指定文件的修改。 本地倉庫 即已經commit 提交到本地倉庫的代碼。把指定的文件名換成‘ . ’ 即為選擇全部的意思。
取消 git add 操作
git reset --mixed 僅取消 git add 帶來的效果。 即本地的修改還在,但是取消了add 的狀態。
回退到指定到 commit號
git reset --hard commitId, 這個命令 回退到指定的commit,并且不會保留本地尚未提交的修改。所以一定要慎重使用。
取消commit時,更安全的操作: revert
更安全的操作, 使用 git revert
git revert commitId,會撤銷指定的commit,但是與 reset --hard 不同的是,revert 不會丟掉被撤銷的commit,而是會生成一個新的commit,其所有操作與指定的commit 相反,以此來覆蓋掉該commit 的修改。
舉個栗子: 按序有三個commit: c1, c2, c3。 現在我們位于c3. 使用 git commit --hard c2, 則當前狀態會退回到 c2, git log, 只會看到,c2、c1. 而 如果使用git revert c2,則會新添加一個c4的commit,c4的操作與c2 完全相反。 git log 可以看到 1 ~ 4 全部的commit。
如果你想撤銷遠端的代碼呢
如果使用了revert,直接 git push 即可。
如果使用的是git reset,或者 rebase到了之前的commit; 在更改了本地代碼以后,git push -f。
-f 一定慎用,如果涉及到遠端主分支,干脆就不要用。
涉及遠端的,還是推薦用 revert
歡迎批評與指正。
總結
以上是生活随笔為你收集整理的git add后取消_git 必看,各种撤销操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dataguard日志传输模式解析_网络
- 下一篇: python2与python3同时安装_