git 回退之前的版本(詳細解說)

2021-08-21 17:25:23 字數 1435 閱讀 7635

在解釋git commit後回退的操作前,先重現一下場景:

ok。現在問題就是。當你提交bbb以後,發現有些檔案提交錯了,需要撤回。怎麼辦呢?

git如何撤銷上一次commit操作

(成功案例

1. git  log (獲取commitid)

2. git reset --soft commitid 即可

)

git reset --soft|--mixed|--hard git push develop develop --force  (本地分支和遠端分支都是 develop)
這裡的就是每次commit的sha-1,可以在log裡檢視到

--mixed    會保留原始碼,只是將git commit和index 資訊回退到了某個版本.

--soft   保留原始碼,只回退到commit資訊到某個版本.不涉及index的回退,如果還需要提交,直接commit即可.

--hard    原始碼也會回退到某個版本,commit和index 都會回退到某個版本.(注意,這種方式是改變本地**倉庫原始碼)

如果只是想回退,仍然保留在aaa基礎上開發的**,使用git reset --soft aaa。

如果不慎使用git reset --hard aaa,會有什麼後果呢。結果就是雖然回到aaa版本,但是你在aaa基礎上辛苦勞作的**也消失了。

當然有人在push**以後,也使用 reset --hard 回退**到某個版本之前,但是這樣會有乙個問題,你線上的**沒有變,線上commit,index都沒有變,當你把本地**修改完提交的時候你會發現全是衝突.....這時換下一種

對於已經把**push到線上倉庫,你回退本地**其實也想同時回退線上**,回滾到某個指定的版本,線上,線下**保持一致.你要用到下面的命令

git revert
revert 之後你的本地**會回滾到指定的歷史版本,這時你再 git push 就可以把線上的**更新。

注意:git revert是用一次新的commit來回滾之前的commit,git reset是直接刪除指定的commit,看似達到的效果是一樣的,其實完全不同。

第一:上面我們說的如果你已經push到線上**庫, reset 刪除指定commit以後,你git push可能導致一大堆衝突.但是revert 並不會.

第二:如果在日後現有分支和歷史分支需要合併的時候,reset 恢復部分的**依然會出現在歷史分支裡.但是revert 方向提交的commit 並不會出現在歷史分支裡.

第三:reset 是在正常的commit歷史中,刪除了指定的commit,這時 head 是向後移動了,而 revert 是在正常的commit歷史中再commit一次,只不過是反向提交,他的 head 是一直向前的.

git回退版本

把檔案從暫存區域或歷史記錄中複製到工作目錄,用來丟棄本地修改。git reset files 用來撤銷最後一次git add files,你也可以用git reset 撤銷所有暫存區域檔案。git reset option commitid 用來撤銷歷史記錄,option選項 soft,hard,m...

git回退版本

有些時候我們提交的遠端 最新的 也許還不如上次寫的好,於是我們就想回退到以前的版本。那麼怎麼回退呢 對了,回退之前還是先備份下。1 2 3 git log 檢視提交的歷史 git log pretty oneline 如果嫌上面的輸出資訊過多可以使用這條 只輸出版本號 git reset hard ...

git 回退版本

git commit amend 提交後的一次補救,比如忘記在上一次提交時提交某些檔案,需要做一些修改後再提交。這個命令就像本次提交覆蓋了上一次提交,在倉庫歷史中不會顯示上一次提交 git reset head 將檔案從暫存區移到工作區,把暫存區的修改回退到工作區 git checkout 檔名 回...