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

Git Reset VS Git Revert命令的使用和區別

系統 Linux
日常工作中經常都是很多同事一起迭代開發,而且經常會有很多需求的開發在不同的代碼分支上,如果出現不小心將某個未完成的功能提交了,并且已經 push 到分支上去了,那我們該怎么辦呢?

[[348589]]

本文轉載自微信公眾號「Java極客技術」,作者鴨血粉絲 。轉載本文請聯系Java極客技術公眾號。   

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

那些你應該知道的,但是你一定不知道的 Git 騷操作 今天再給大家介紹一個不常用,但是關鍵時刻很好用的命令git revert。

背景

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

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

Git Reset/Revert

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

Git Reset

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

 

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

 

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

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

 

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

Git Revert

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

這個時候我們執行命令git revert -n 50896fa7d9ba16b63a0fc539bb6620411e5dee4c 將 test5.txt 版本給撤銷,并執行git commit -m xxx 進行提交然后在push 到遠程。 

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

 

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

總結 

今天阿粉通過示例給大家介紹了 git reset 和git revert 兩個命令的使用和區別,在日常工作的難免會遇到需要使用的時候,如果不需要當然是最好,但是萬一什么時候需要用了,對大家有幫助也是極好的,如果覺得有用,歡迎點贊轉發,讓更多的小伙伴看到。

 

責任編輯:武曉燕 來源: Java極客技術
相關推薦

2022-02-10 09:56:33

git revertgit resetGit

2015-08-20 10:42:17

2021-08-19 08:36:22

Git ResetGit Revert版本

2019-06-19 09:00:00

GitLinux開源

2021-08-13 07:56:13

Git pullGit fetch倉庫里

2011-08-09 10:20:55

GitLinux遠程倉庫

2021-08-17 07:15:16

Git RebaseGit Merge面試

2020-11-05 11:50:48

Git命令Linux

2017-02-08 13:33:34

AndroidJavaPhp

2024-07-22 14:14:01

2015-12-10 09:43:23

Git命令清單

2022-02-09 18:55:30

LazygitGit命令維護項目

2023-09-25 10:02:00

GitVS Code

2014-03-12 10:33:56

GitTortoiseGit

2011-01-26 10:05:36

Git安裝配置

2020-01-18 18:41:13

GitGit服務器開源

2010-05-24 10:29:51

子命令Svn reve

2022-12-02 10:18:55

Gitbisect

2023-08-31 22:45:15

Git命令效率

2021-01-04 13:25:10

Git開源工具
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 黄页网址在线观看 | 黄色一级在线播放 | 精品网| 免费观看一级特黄欧美大片 | 久久久精 | 免费午夜电影 | 久久精品一区 | 亚洲最大的成人网 | 一区免费观看 | 亚洲一区二区三区视频 | 激情av网站| 2018中文字幕第一页 | 毛片一级片 | 日本一区二区三区视频在线 | 亚洲444eee在线观看 | 久久精品国产免费 | 亚洲精品在线播放 | 超碰在线观看97 | 午夜免费在线观看 | 亚洲欧美aⅴ | 全免费a级毛片免费看视频免费下 | 免费视频成人国产精品网站 | www.亚洲 | 国产精品日日摸夜夜添夜夜av | 国产高清无av久久 | 日本免费一区二区三区 | 免费黄色a级毛片 | 国产高清精品一区二区三区 | 日韩欧美精品一区 | 久久国内精品 | a级片播放 | 天天操夜夜操 | 欧美人妖网站 | 久久亚 | 午夜精品久久久久久久星辰影院 | 91麻豆蜜桃一区二区三区 | 亚洲三区在线观看 | 国产精品一区二区久久 | 日本一区二区不卡 | 国产精品亚洲一区二区三区在线 | 亚洲性在线 |