溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Git Reset和Git Revert命令有什么區(qū)別

發(fā)布時間:2021-11-15 15:15:14 來源:億速云 閱讀:133 作者:小新 欄目:系統(tǒng)運(yùn)維

這篇文章主要為大家展示了“Git Reset和Git Revert命令有什么區(qū)別”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Git Reset和Git Revert命令有什么區(qū)別”這篇文章吧。

背景

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

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

Git Reset/Revert

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

Git Reset

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

Git Reset和Git Revert命令有什么區(qū)別

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

Git Reset和Git Revert命令有什么區(qū)別

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

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

Git Reset和Git Revert命令有什么區(qū)別

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

Git Revert

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

這個時候我們執(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  版本的提交還依舊保留在。

Git Reset和Git Revert命令有什么區(qū)別

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

以上是“Git Reset和Git Revert命令有什么區(qū)別”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI