問題描述
1)在本地修改好的代碼,commit到本地倉庫,突然發覺有問題不想push推到遠程倉庫了,但它一直在push的列表中存在,那該怎么去掉push列表中的內容呢?
2)合并別的分支到當前分支(?使用Merge into current操作?),并提交到遠程倉庫,突然發現合并了預期外多余的代碼,導致服務異常,那該怎么回滾到合并之前的狀態呢?
解決方法
方法1:Reset current branch to here?
Reset current branch to here?是Git命令中的一種回滾操作,主要用于將當前分支回退到指定的提交狀態。這個操作在開發過程中遇到錯誤提交或合并問題時,可以快速恢復到之前的穩定狀態。
1)?在IDEA的“Git”工具窗口中,選擇log頁面,選擇需進行回滾操作的分支,找到提交歷史記錄中的目標提交記錄(該記錄之后的所有提交記錄將會被回退),鼠標右鍵,在彈窗中點擊【Reset current branch to here?】。
2)在Git Reset彈窗中選擇合適的回退類型,點擊【Reset】按鈕執行回滾操作。
回退類型說明:
- ?Soft?(軟重置):只對本地倉庫有影響,回退本地倉庫文件的版本,被回退的文件全部變成未提交狀態。可以簡單理解被回退的代碼由commit變為no commit狀態。
- ?Mixed?(混合重置):與Soft操作基本一樣。區別在于新增的文件不是未提交,而是直接變成非git文件,該新文件不會被刪除;而非新文件則是變為未提交狀態。
- ?Hard?(硬重置):遠程倉庫和本地倉庫會刪除選中提交記錄之后的所有記錄,所有文件變為當前選中的版本;未提交的文件全部被清空;而非git文件不受影響。
- Keep(部分保持重置):回滾到指定版本,但是保留指定版本之后的更改,即未提交的文件不會受到影響,如果回退版本的文件中有未提交的文件將進行版本沖突處理。
注意:硬重置是不可逆的,它會改變提交歷史記錄。在進行重置之前,建議備份您的代碼或確保您有可靠的版本控制系統可以回溯。
方法2:Reset HEAD
Reset HEAD?是Git命令中的一種回滾操作,Copy Reversion Number? + Reset HEAD,主要用于回退到指定的版本。
1)復制需要回滾的修訂版本號RevisionNumber(注意主要針對該版本之后的提交記錄進行回退操作)
2)選擇【Reset HEAD...】,選擇回退類型(這里只有Soft?、Mixed?、Hard?選項),輸入修訂版本號,點擊【Reset】執行回滾操作。
方法3:Revert Commit
Revert Commit 用于撤銷某次提交,并生成新的Commit 記錄。
1)選擇需要撤銷的某次提交記錄,鼠標右鍵,選擇【Revert Commit】,系統則生成新的提交記錄
2)commit新的提交記錄
3)然后再push即可撤銷該次提交