git 撤銷&回滾命令


工作區:指自己寫代碼的工作目錄,未進行 git add 操作之前。

暫存區:執行過 git add 操作之后,但是為執行 git commit 操作。

本地分支:執行過 git commit 操作,但是未執行 git push 操作。

遠程分支:執行過 git push 操作。

三種場景介紹:

1.git add . 但是未進行 commit 操作。     暫存區

2.git commit 但是未進行 git push 操作。 本地分支

3.git push 操作了。                                  遠程分支

第一種場景

執行了 git add 操作 未執行 git commit 操作

git reset HEAD .                 撤回所有 add 的文件

git reset HEAD  文件名      撤回指定的文件

這個命令只改變暫存區代碼,並不影響其他區域代碼。

第二種場景

執行了 git commit 操作 未執行 git push 操作

git log 查詢提交日志 找到自己需要回滾的 版本號(commit_id)

git reset --hard commit_id  撤銷commit提交以及代碼的修改

或者

git reset --hard HEAD^     回退到最近一次的提交

或者

git reset commit_id       僅僅撤銷本地倉庫的commit提交,代碼不變

git reset 的幾種模式
git reset主要有–soft –mixed –hard 三種方式 

HEAD^的意思是上一個版本,也可以寫成HEAD~1

如果你進行了2次commit,想都撤回,可以使用HEAD~2

--mixed 
不刪除工作空間改動代碼,撤銷commit,並且撤銷(git add .) 操作
這個為默認參數,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一樣的。
--soft  
不刪除工作空間改動代碼,撤銷commit,不撤銷git add . 

--hard
刪除工作空間改動代碼,撤銷commit,撤銷git add . 

注意完成這個操作后,就恢復到了上一次的commit狀態。

如果不指定reset的模式,默認使用–mixed模式。

如果 commit 注釋寫錯了,我們可以使用 git commit --amend -m "備注" 既可以覆蓋上一次的備注信息。

第三種場景

第三種場景進行撤回的命令和第二個場景撤回命令一樣。但是撤銷之后 需要 進行 git push -f origin branchName 操作。這樣遠程倉庫對應分支代碼就會回滾掉。

注意:一定要注意回滾指定版本號,不應該是最新提交的版本號,而應該是最新一次commit之前的版本號,否則無法進行回滾的。

慎用 git reset --hard commit_id(版本號) 因為它會把自己工作區的修改內容也給刪除掉!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM