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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

git 如何回滚远程仓库版本

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

前言:?使用git管理項(xiàng)目開發(fā)的過程中經(jīng)常會(huì)碰到這種情況:某次提交已經(jīng)push到了遠(yuǎn)程倉庫,可是突然需要回退代碼,怎么將遠(yuǎn)程代碼庫回滾呢?

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

關(guān)于遠(yuǎn)程倉庫回滾

首先,必須要明白的一件事,任何普通用戶不能擅自做有關(guān)遠(yuǎn)程倉庫回退的操作,如果你擅自回滾了遠(yuǎn)程倉庫,會(huì)對(duì)項(xiàng)目團(tuán)隊(duì)其他人造成不可預(yù)知的影響。如果需要回退版本,先聯(lián)系項(xiàng)目的倉庫管理員,在團(tuán)隊(duì)其他人都對(duì)自己本地未提交的工作做好備份之后,再進(jìn)行遠(yuǎn)程倉庫回退操作,操作結(jié)束后,團(tuán)隊(duì)成員需要重新同步遠(yuǎn)程倉庫后繼續(xù)自己的工作。

通常回滾遠(yuǎn)程倉庫會(huì)有以下三種情形:

1、刪除最后一次提交

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

git revert HEADgit push origin master

注意,revertreset的區(qū)別:

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

現(xiàn)在我們使用revert放棄最后一次提交,之后執(zhí)行g(shù)it log:

git revert HEADgit log

歷史記錄中還有第三次提交的記錄,并且多了一次的提交,但是倉庫內(nèi)容已經(jīng)回到了第二次提交之后的狀態(tài)。 現(xiàn)在我們使用reset回到第三次提交,之后執(zhí)行g(shù)it log:

git reset --hard HEAD^git log

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

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

-f?參數(shù)是強(qiáng)制提交,因?yàn)閞eset之后本地庫落后于遠(yuǎn)程庫一個(gè)版本,因此需要強(qiáng)制提交。

2、刪除歷史某次提交

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

然后執(zhí)行以下命令("commit id"替換為想要?jiǎng)h除的提交的"commit id",需要注意最后的^號(hào),意思是commit id的前一次提交):

git rebase -i "commit id"^

執(zhí)行該條命令之后會(huì)打開一個(gè)編輯框,內(nèi)容如下,列出了包含該次提交在內(nèi)之后的所有提交。

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

git push origin master -f

3、修改歷史某次提交

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

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

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

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


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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。