<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    paulwong

    Git/EGit | reset 和 revert 的區別

    git的世界里有后悔藥嗎?

    有的。不僅有,還不止一種:Reset 和 Revert。它們有什么區別呢?先說結論吧。

    ResetRevert
    作用 將某個commit之后的push全部回滾 將某個指定的commit回滾
    歷史記錄(軌跡)
    是否可作用于單個文件 否(都是作用于commit,與文件無關)

    下面來說說具體例子。

    Revert

    試驗步驟如下:

    1. 新建兩個空白文件 Revert.txt 和 Common.txt,然后commit&push。
    2. 修改 Revert.txt 文件,內容為“commit 1”,然后commit&push,提交的備注為“commit 1 of Revert”
    3. 修改 Common.txt 文件,內容為“update for Revert(by commit 2)”
    4. 修改 Revert.txt 文件,新增一行,內容為“commit 2”
    5. 3 和 4的修改一起commit&push,提交備注為“commit 2 of Revert(Revert.txt + Common.txt)”

    效果如下:

    git-revert-01

    圖1-revert之前

    目的

    保留3的修改,回滾4的修改。

    操作

    選中“ Revert.txt ”文件,然后在 History 里選中 “commit 2 of Revert…”,右鍵,找到“Revert Commit”菜單,如圖:

    git-revert-02

    圖2-revert操作

    點擊后,效果如圖:

    git-revert-03

    圖3-revert之后

    最后,push即可。

    結果

    未能達到預期效果,Revert.txt 和 Common.txt的修改都被撤銷了。Revert的作用范圍是一個commit(原子),跟文件的個數無關。

    注:對最后一個commit做revert比較簡單,兩步:一,revert;二,push就可以了。對于較早的commit,因為中間間隔了其他的commit,文件會有沖突,需要處理完沖突才可以commit&push。

    Reset

    試驗步驟如下:

    1. 新建空白文件 Reset.txt,然后commit&push。
    2. 修改 Reset.txt 文件,內容為“commit 1”
    3. 修改 Common.txt 文件,內容為“update for Reset(commit 1)”
    4. 2和3的修改一起commit&push,提交的備注為“commit 1 of Reset”
    5. 修改 Reset.txt 文件,新增一行,內容為“commit 2”,然后commit&push,提交的備注為“commit 2 of Reset”
    6. 修改 Reset.txt 文件,內容為“commit 3”
    7. 修改 Common.txt 文件,內容為“update for Reset(commit 3)”
    8. 6和7的修改一起commit&push,提交的備注為“commit 3 of Reset”

    效果如下:

    git-reset-04

    圖4-reset之前

    目的

    將commit 1 之后的(即commit 2 和 3)改動全部回滾。

    操作

    在 History 里找到“commit 1”,選中后,右鍵,找到 Reset 菜單,選擇 Hard 模式。

    git-reset-05

    圖5-reset

    執行后,如下圖所示,HEAD 已經指向里 commit 1,Common.txt 和 Reset.txt 的內容也已改變。注意左側的項目欄,它已落后了服務器(GitHub)2個commit。怎么提交到服務器上呢?直接push,它會提示不是最新的,操作失敗。這里要用到 push 的 force 屬性。

    git-reset-06

    圖6-reset之后

    選中 項目,右鍵 – Team – Remote – Configure Push to Upstream,在打開的小窗口中找到 Advanced,如下圖所示,這里的 Force Update 要勾上,表示強制覆蓋。

    重新push,就可以跟服務器保持同步了。

    git-reset-07

    圖7-push-force

    要特別注意的是,Reset慎用,跟Linux的“rm -rf /”有異曲同工之妙。

    http://www.youngzy.com/blog/2019/08/git-difference-between-reset-and-revert-using-eclipse/

    posted on 2021-08-17 10:37 paulwong 閱讀(218) 評論(0)  編輯  收藏 所屬分類: GIT

    主站蜘蛛池模板: 亚洲va无码手机在线电影| 亚洲日本久久久午夜精品| 免费人成网站在线观看不卡| 亚洲人成电影福利在线播放| 最近中文字幕mv免费高清电影| 青青免费在线视频| 亚洲高清在线视频| 日本一道综合久久aⅴ免费| 99视频免费在线观看| 亚洲色精品VR一区区三区| 伊人久久综在合线亚洲91| 波多野结衣免费在线| 日韩免费码中文在线观看| 亚洲沟沟美女亚洲沟沟| 亚洲Av无码国产情品久久| 每天更新的免费av片在线观看| 色偷偷尼玛图亚洲综合| 久久亚洲AV成人无码国产| 国产免费看插插插视频| 亚洲综合免费视频| 久草免费福利在线| 亚洲av无码专区在线观看下载 | 国产精品亚洲不卡一区二区三区| 99视频在线免费看| 黄色三级三级三级免费看| 亚洲一级在线观看| 久久久久久a亚洲欧洲AV| 国产免费观看黄AV片| 999国内精品永久免费视频| 久久国产免费直播| 色窝窝亚洲av网| 亚洲首页国产精品丝袜| 亚洲AV午夜福利精品一区二区| 四虎在线播放免费永久视频 | 亚洲精品国自产拍在线观看| 一二三四免费观看在线视频中文版 | 午夜无遮挡羞羞漫画免费| 永久在线免费观看| 一级毛片在线免费观看| 最新久久免费视频| 国产免费久久久久久无码|