日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

git 如何回滚远程仓库版本

發布時間:2025/3/21 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 git 如何回滚远程仓库版本 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:?使用git管理項目開發的過程中經常會碰到這種情況:某次提交已經push到了遠程倉庫,可是突然需要回退代碼,怎么將遠程代碼庫回滾呢?

不推薦這樣做:在網上看到大部分人給出的解決方案是先將本地回滾,然后刪除遠程分支,之后再將本地的分支push到遠程倉庫,這其實是一種很危險的方案,畢竟直接刪除遠程分支太危險。

關于遠程倉庫回滾

首先,必須要明白的一件事,任何普通用戶不能擅自做有關遠程倉庫回退的操作,如果你擅自回滾了遠程倉庫,會對項目團隊其他人造成不可預知的影響。如果需要回退版本,先聯系項目的倉庫管理員,在團隊其他人都對自己本地未提交的工作做好備份之后,再進行遠程倉庫回退操作,操作結束后,團隊成員需要重新同步遠程倉庫后繼續自己的工作。

通常回滾遠程倉庫會有以下三種情形:

1、刪除最后一次提交

這種情況是最簡單的了,只需要以下兩步就可以了

git revert HEADgit push origin master

注意,revertreset的區別:

revert是放棄指定提交的修改,但是會生成一次新的提交,需要填寫提交注釋,以前的歷史記錄都在,而reset是指將HEAD指針指到指定提交,歷史記錄中不會出現放棄的提交記錄。如果還沒有理解的話,我們做如下測試:
假設我們有以下三次提交記錄:

現在我們使用revert放棄最后一次提交,之后執行git log:

git revert HEADgit log

歷史記錄中還有第三次提交的記錄,并且多了一次的提交,但是倉庫內容已經回到了第二次提交之后的狀態。 現在我們使用reset回到第三次提交,之后執行git log:

git reset --hard HEAD^git log

歷史記錄中已經沒有之前revert生成的提交記錄了,現在應該明白了吧。 如果刪除遠程倉庫的最后一次提交的時候不需要保留歷史記錄的話,可以使用reset,命令如下:

git reset --hard HEAD^git push origin master -f

-f?參數是強制提交,因為reset之后本地庫落后于遠程庫一個版本,因此需要強制提交。

2、刪除歷史某次提交

這種情況需要先用git log命令在歷史記錄中查找到想要刪除的某次提交的commit id,比如下圖中圈出來的就是注釋為"2"的提交的commit id(由此可見提交的注釋很重要,一定要認真寫)

然后執行以下命令("commit id"替換為想要刪除的提交的"commit id",需要注意最后的^號,意思是commit id的前一次提交):

git rebase -i "commit id"^

執行該條命令之后會打開一個編輯框,內容如下,列出了包含該次提交在內之后的所有提交。

然后在編輯框中刪除你想要刪除的提交所在行,然后保存退出就好啦,如果有沖突的需要解決沖突。接下來,執行以下命令,將本地倉庫提交到遠程庫就完成了:

git push origin master -f

3、修改歷史某次提交

這種情況的解決方法類似于第二種情況,只需要在第二條打開編輯框之后,將你想要修改的提交所在行的pick替換成edit然后保存退出,這個時候rebase會停在你要修改的提交,然后做你需要的修改,修改完畢之后,執行以下命令:

git add .git commit --amendgit rebase --continue

如果你在之前的編輯框修改了n行,也就是說要對n次提交做修改,則需要重復執行以上步驟n次。

需要注意的是,在執行rebase命令對指定提交修改或刪除之后,該次提交之后的所有提交的"commit id"都會改變。


from:?http://zl378837964.iteye.com/blog/2315206

總結

以上是生活随笔為你收集整理的git 如何回滚远程仓库版本的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。