成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Git Reset 和 Git Revert的區(qū)別

開發(fā) 后端
今天再給大家介紹一個(gè)不常用,但是關(guān)鍵時(shí)刻很好用的命令git revert。

Hello,大家好,我是阿粉,之前給大家介紹過 Git 的幾個(gè)超級(jí)實(shí)用的命令,沒看過的朋友可以去看一下

那些你應(yīng)該知道的,但是你一定不知道的 Git 操作 今天再給大家介紹一個(gè)不常用,但是關(guān)鍵時(shí)刻很好用的命令git revert。

背景

日常工作中經(jīng)常都是很多同事一起迭代開發(fā),而且經(jīng)常會(huì)有很多需求的開發(fā)在不同的代碼分支上,如果出現(xiàn)不小心將某個(gè)未完成的功能提交了,并且已經(jīng) push 到分支上去了,那我們?cè)撛趺崔k呢?阿粉最近就遇到了這樣的問題,之前提交的一個(gè)功能代碼,雖然是一個(gè)完整的功能,但是由于種種原因這個(gè)功能被取消了,相關(guān)的代碼也需要被撤銷不能提交到生產(chǎn)上面去,但是在這個(gè) commit 之后也有許多其他功能代碼的提交。其他功能還是要正常上線的,不能被影響的。

這個(gè)時(shí)候很多小伙伴就會(huì)說:可以把對(duì)應(yīng)需要撤銷的功能代碼重新修改掉不就可以了嗎?這種方案當(dāng)時(shí)是可以的,特別是如果我們改動(dòng)的地方不多的情況下,直接將代碼修改回來即可,方便又簡(jiǎn)單快速。但是如果對(duì)應(yīng)要修改的文件很多,而且每個(gè)文件修改的地方又很多那就很麻煩了,如果對(duì)著提前的修改一行一行的修改就是個(gè)非常浪費(fèi)時(shí)間的事情了。

Git Reset/Revert

遇到這種情況我們能想到的肯定是網(wǎng)上一定有相關(guān)的解決方案,并且 Git 一定提供了相應(yīng)的命令可以幫到我們。通過查詢 Git 手冊(cè)我們發(fā)現(xiàn) Git 提供了兩個(gè)相關(guān)命令讓我們回滾版本,分別是 reset 和 revert。那兩個(gè)之間有什么區(qū)別呢?下面阿粉通過示例給大家演示一下這兩個(gè)命令的使用和區(qū)別。

Git Reset

我們先分幾次創(chuàng)建幾個(gè)文件,然后依次commit 和 push ,形成多次提交,如下圖所示,我們創(chuàng)建了四個(gè)文件,每個(gè)文件單獨(dú) commit 和 push,然后通過git log 命令我們可以查看的整個(gè)提交的日志信息,其中就包含了四次的文件提交記錄。

現(xiàn)在我們突然發(fā)現(xiàn) test3.txt 文件提交的有問題,我們需要回滾到 test2.txt 的版本,我們可以通過執(zhí)行命令git reset --hard 15e32cd0cc909ef6791e4417f5572b5e7886f977 --hard 表示強(qiáng)制回到指定的版本,后面緊跟的是目標(biāo)的版本號(hào)。

再通過git log 命令我們可以看到當(dāng)前的版本已經(jīng)變掉了,變成我們指定的版本了。

我們?cè)偻ㄟ^git push -f origin branch 命令將重置的版本推送到遠(yuǎn)程服務(wù)器上,由于在推送到服務(wù)器前我們本地的代碼已經(jīng)落后服務(wù)器的代碼了,所以我們需要增加-f 參數(shù)表示強(qiáng)制推送到遠(yuǎn)程服務(wù)器。

細(xì)心的朋友可能會(huì)發(fā)現(xiàn),我們執(zhí)行到這里,確實(shí)回退到需要的版本了,但是有問題的如果只是 test3.txt 文件,而 test4.txt 文件是沒有問題的,我們是可以正常提交的,如果按照這種方式去操作,我們就會(huì)把 test4.txt 版本的修改給丟失了。當(dāng)然我們可以重新再提交寫一遍,但是如果這個(gè)版本的內(nèi)容很多,我們是改不過來的。所以這種方式一般我們是不會(huì)使用的,只有確保后續(xù)所有的修改都不需要的時(shí)候我們才可以使用這種方式。

Git Revert

下面再看下 git revert 命令的使用方式,我們分兩次創(chuàng)建兩個(gè)文件,分別commit 和 push 到遠(yuǎn)程,然后通過 git log,我們可以看到下面內(nèi)容,現(xiàn)在最新的版本已經(jīng)是 test6.txt 了。同樣的,這個(gè)時(shí)候我們發(fā)現(xiàn) test5.txt 的版本有問題,但是 test6.txt 的版本是正確的,我們只想撤銷掉 test5.txt 版本的提交。

這個(gè)時(shí)候我們執(zhí)行命令git revert -n 50896fa7d9ba16b63a0fc539bb6620411e5dee4c 將 test5.txt 版本給撤銷,并執(zhí)行g(shù)it commit -m xxx 進(jìn)行提交然后在push 到遠(yuǎn)程。

再通過git log 我們可以看到,產(chǎn)生了一次新的提交將我們 test5.txt 版本的內(nèi)容撤銷掉了,并且 test6.txt 版本的提交還依舊保留在。

通過上面的演示,我們可以發(fā)現(xiàn)git reset 和 git revert 兩個(gè)命令雖然都可以進(jìn)行版本回退,但是在使用的時(shí)候還是有很多的差異的。在我們確認(rèn)了在需要回退的版本之后的提交都可以不需要的時(shí)候,我們可以直接使用git reset 命令,但是當(dāng)我們只是需要撤銷某個(gè)版本的時(shí)候,我們就可以使用git revert 。

總結(jié)

今天阿粉通過示例給大家介紹了 git reset 和git revert 兩個(gè)命令的使用和區(qū)別,在日常工作的難免會(huì)遇到需要使用的時(shí)候,如果不需要當(dāng)然是最好,但是萬一什么時(shí)候需要用了,對(duì)大家有幫助也是極好的。

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2015-08-20 10:42:17

2020-10-27 07:31:35

GitGit RevertGit Reset

2021-08-19 08:36:22

Git ResetGit Revert版本

2021-08-13 07:56:13

Git pullGit fetch倉(cāng)庫(kù)里

2021-08-17 07:15:16

Git RebaseGit Merge面試

2024-07-22 14:14:01

2011-01-26 10:05:36

Git安裝配置

2025-04-11 08:26:41

2020-03-05 16:47:51

Git內(nèi)部儲(chǔ)存

2019-06-19 09:00:00

GitLinux開源

2011-08-09 10:20:55

GitLinux遠(yuǎn)程倉(cāng)庫(kù)

2016-08-02 11:06:34

開源Linux版本控制

2016-08-03 15:32:50

GitLinux開源

2018-07-27 10:39:13

對(duì)象存儲(chǔ)Git

2021-08-12 07:49:25

Git 索引HEAD

2015-08-07 09:36:25

git筆記

2020-08-25 23:06:33

開發(fā)技能代碼

2021-12-20 15:06:09

JekyllGit開源

2016-11-08 08:51:43

GitLinux開源

2020-01-18 18:41:13

GitGit服務(wù)器開源
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产免国产免费 | 日韩视频精品在线 | 成人在线观看免费 | 国产精品一区二区久久 | 精久久久 | 日韩在线国产精品 | 欧美日韩电影一区 | 久久久蜜臀国产一区二区 | 粉嫩粉嫩芽的虎白女18在线视频 | 国产精品视频999 | 少妇一级淫片免费播放 | 岛国二区| 亚洲国产一区二区三区, | 午夜天堂精品久久久久 | 欧美精品一区二区三区在线播放 | 美女激情av| 亚洲欧美日韩精品久久亚洲区 | 成人区一区二区三区 | 亚洲精品在线视频 | 国产一级淫片免费视频 | 国产一二三视频在线观看 | 超碰97人人人人人蜜桃 | 欧美黄色网 | 国产精品成人一区二区三区 | 日日操操 | 五月激情综合 | 亚洲欧美bt | 成人3d动漫一区二区三区91 | 99久久免费精品国产免费高清 | 久久一区二区三区四区 | 国产精品一区久久久 | 亚洲精品乱码久久久久久按摩观 | 日日碰碰 | 久久精品视频在线免费观看 | 中文字幕国产 | 欧美黄色一区 | 午夜免费成人 | 中文字幕一区二区三区四区五区 | 久久久蜜桃一区二区人 | 欧美日韩理论 | 精品久久久久久久 |