目錄
- 一、如何將在工作區中修改的文件進行回滾(git checkout)
- 恢復單個文件
- 恢復所有文件
- 編譯器:VSCcode 源代碼管理
- 二、如何將暫存區修改的文件進行回滾(git reset)
- 恢復暫存區指定文件到工作區
- 恢復暫存區所有的文件到工作區
- 編譯器:VSCcode 源代碼管理
- 三、如何將提交後的文件進行回滾(git reset、git revert)
- 將剛提交的版本回滾到未提交狀態
- 回滾到以前指定版本
- 四、遠程機器如何進行回滾
- 方法一:先git reset回滾到本地,然後再強制push到遠程。
- 方法二:先git revert將有問題的版本進行修正,生成新的版本,然後psuh到遠程分支。
- git reset VS git revert
一、如何將在工作區中修改的文件進行回滾(git checkout)
恢復單個文件
git checkout -- README.md
恢復所有文件
git checkout .
編譯器:VSCcode 源代碼管理
二、如何將暫存區修改的文件進行回滾(git reset)
恢復暫存區指定文件到工作區
git reset README.md
恢復暫存區所有的文件到工作區
git reset
編譯器:VSCcode 源代碼管理
三、如何將提交後的文件進行回滾(git reset、git revert)
將剛提交的版本回滾到未提交狀態
git reset HEAD^
git reset @^
Tips:這個命令是將提交後的文件回滾到工作區的狀態,如果修改之後需要再次
git add .
回滾到以前指定版本
git reset commitID
git revert -n commitID
四、遠程機器如何進行回滾
方法一:先git reset回滾到本地,然後再強制push到遠程。
不建議,可能沒有權限,危險操作
git reset commitID
git push -u origin master -f
方法二:先git revert將有問題的版本進行修正,生成新的版本,然後psuh到遠程分支。
相當於打補丁,建議使用
git revert -n commitID
# 手動處理衝突
# if 處理衝突完畢
git revert --continue
# if 退出不處理衝突
git revert --abort
# 進入vim界面 編寫commit describe並保存
git push origin master
git reset VS git revert
上面回滾中用到了 git reset
和 git revert
兩種方法,下面進行一下分析:
比較 | 相同點 | 不同點 |
---|---|---|
git reset |
可以進行回滾操作 |
git reset 回滾之後commitID 後面的版本就沒有記錄了。如果想要回滾到未來節點,要知道未來節點的 commitID 。所以在回滾前最好先知道當前的 commitID
|
git revert |
可以進行回滾操作 |
git revert 回滾操作之後,會進行文件的手動去留,然後新生成一個版本號,之前的提交還是在的。 |