網摘學習 Git版本恢復命令reset

2021-09-23 20:00:21 字數 2298 閱讀 7338

參考:

reset命令有3種方式:

git reset –mixed:此為預設方式,不帶任何引數的git reset,即時這種方式,它回退到某個版本,只保留原始碼,回退commit和index資訊

2.  git reset –soft:回退到某個版本,只回退了commit的資訊,不會恢復到index file一級。如果還要提交,直接commit即可

以下是一些reset的示例:

摺疊複製**

#回退所有內容到上乙個版本  

git reset head^  

#回退a.py這個檔案的版本到上乙個版本  

git reset head^ a.py

向前回退到第3個版本  

git reset –soft head~3  

#將本地的狀態回退到和遠端的一樣  

git reset –hard origin/master  

#回退到某個版本  

git reset 057d  

#回退到上一次提交的狀態,按照某一次的commit完全反向的進行一次commit  

git revert head  

如果我們某次修改了某些內容,並且已經commit到本地倉庫,而且已經push到遠端倉庫了

這種情況下,我們想把本地和遠端倉庫都回退到某個版本,該怎麼做呢?

前面講到的git reset只是在本地倉庫中回退版本,而遠端倉庫的版本不會變化

這樣,即時本地reset了,但如果再git pull,那麼,遠端倉庫的內容又會和本地之前版本的內容進行merge

這並不是我們想要的東西,這時可以有2種辦法來解決這個問題:

直接在遠端server的倉庫目錄下,執行git reset –soft 10efa來回退。注意:在遠端不能使用mixed或hard引數

在本地直接把遠端的master分支給刪除,然後再把reset後的分支內容給push上去,如下:

摺疊複製**

#新建old_master分支做備份  

git branch old_master  

#push到遠端  

git push origin old_master:old_master  

#本地倉庫回退到某個版本  

git reset –hard bae168  

#刪除遠端的master分支  

git push origin :master  

#重新建立master分支  

git push origin master  

在刪除遠端master分支時,可能會有問題,見下:

摺疊複製**

$ git push origin :master  

error: by default, deleting the current branch is denied, because the next  

error: 'git clone' won't result in any file checked out, causing confusion.  

error:  

error: you can set 'receive.denydeletecurrent' configuration variable to  

error: 'warn' or 'ignore' in the remote repository to allow deleting the  

error: current branch, with or without a warning message.  

error:  

error: to squelch this message, you can set it to 'refuse'.  

error: refusing to delete the current branch: refs/heads/master  

to [email protected]:gitosis_test  

! [remote rejected] master (deletion of the current branch prohibited)  

error: failed to push some refs to '[email protected]:gitosis_test'  

這時需要在遠端倉庫目錄下,設定git的receive.denydeletecurrent引數

摺疊複製**

git receive.denydeletecurrent warn  

然後,就可以刪除遠端的master分支了

雖然說有以上2種方法可以回退遠端分支的版本,但這2種方式,都挺危險的,需要謹慎操作……

git倉庫恢復命令 reset

reset命令 git reset mixed預設方式,不帶任何引數的git reset,即時這種方式,它回退到某個版本,只保留原始碼,回退commit和index資訊 git reset soft回退到某個版本,只回退了commit的資訊,不會恢復到index file一級。如果還要提交,直接co...

SVN 版本恢復命令列操作

svn恢復版本 svn沒有恢復舊版本的直接功能,不過可以使用svn merge命令恢復。比如說當前head為14,而我要恢復成10版本,怎麼做?用svn merge svn update svn merge revision 14 10 svn commit m restore to revisio...

ios SVN 版本恢復命令列操作

比如說當前head為14,而我要恢復成10版本,怎麼做?用svn merge 1svn update 2 3svn merge revision 14 10 4 5svn commit m restore to revision 10 可能會很奇怪,因為不理解為什麼合併能恢復舊版本。這裡要理解乙個關...