git版本回退方案

2021-09-22 16:50:42 字數 1399 閱讀 4335

最近在開發中遇到了需要git版本回退的問題,特此記錄一下了解到的兩種回退方式。

git的版本回退需要了解git的提交歷史,拿到你想回退的commitid。該檢視命令為:

git log

git show commitid

利用此命令,可以檢視某次提交詳細的資訊(如merge的兩個分支的commitid)

命令格式:

git reset --soft/–hard commitid

該方式是通過移動head指標的方式進行回退的。

這種提交方式有乙個問題,單純的本地回退是ok的,但是如果要回退的內容已經提交到遠端倉庫時,將此回退提交到遠端倉庫時將會失敗,因為遠端倉庫的head比當前分支更靠前,會提示你更新本地倉庫。

對此有乙個解決方法,就是將回退提交到遠端倉庫時,加上-f引數(強制提交):

git push -f origin master

相信你已經看到,reset可以加引數-hard 或 -soft。預設是 -soft。

但是如果刪完了之後又後悔了,想要恢復怎麼辦?

沒問題,因為reset只是修改了head指標指向的commitid,只要你能夠找到reset前的commitid,然後再reset就行了。如果你不知道那次提交的commitid,可以使用以下命令查詢:

git reflog

命令格式:

git revert commitid

該方式使用一種類似「對沖」的方式進行「回退」,實際上是將commitid之後的修改再改回來,然後再提交一次。此方式可以提交到遠端倉庫,不用強制提交了。

有時候git自動給我們進行revert提交時,會存在一些衝突,這時候需要我們自己解決這些衝突,然後add、commit、push。。。流程走完,就回退完成了。

$ git revert 05f1a67e2113cc785d132f425e654fa400913c57

error: commit 05f1a67e2113cc785d132f425e654fa400913c57 is a merge but no -m option was given.

fatal: revert failed

這裡是因為merge操作的回滾涉及到了兩個分支,所以需要使用-m引數指定回退的分支。

-m 取值一般為1 或 2,其中1代表主分支,使用-m 1則代表將主分支以外的分支revert掉

Git版本回退

1 檢視檔案修改歷史 git log 返回的是commit後的操作記錄 git log pretty oneline 也可以使用這個命令格式化日誌輸出 2 版本回退 git reset hard head 回退到上乙個版本 git reset hard head 100 會退到第100個版本,例如現...

git版本回退

先說今天遇到的問題,看到乙個config.php的配置檔案一直在修改的狀態下,但是和遠端的config.php是不一致的,我不需要提交它,但是看它在 modified的狀態下,很不爽,想刪除它,git rm config.php,然後git push了下,結果不僅把本地的config.php乾掉了,...

git版本回退

把修改後的版本通過命令提交到版本庫 第一步 git add 檔名 字尾 第二步 git commit m commit id 但是有時候想回去怎麼辦呢?當然萬能的git給我們提供了方法的。我們先檢視一下最近到最遠的提交紀錄操作如下 在命令航輸入 git log 會顯示提交日誌,但是嫌輸出過多怎麼辦,...