91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

怎么使用Git實現優雅的版本回退

發布時間:2021-12-29 15:11:48 來源:億速云 閱讀:142 作者:iii 欄目:開發技術

這篇文章主要介紹“怎么使用Git實現優雅的版本回退”,在日常操作中,相信很多人在怎么使用Git實現優雅的版本回退問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么使用Git實現優雅的版本回退”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

介紹

在版本迭代開發過程中,相信很多人都會有過錯誤提交的時候(至少良許有過幾次這樣的體驗)。這種情況下,菜鳥程序員可能就會虎驅一震,緊張得不知所措。而資深程序員就會微微一笑,摸一摸锃亮的腦門,然后默默的進行版本回退。

對于版本的回退,我們經常會用到兩個 命令 :

  1. git reset

  2. git revert

那這兩個 命令 有何區別呢?先不急,我們后文詳細介紹。

git reset

假如我們的系統現在有如下幾個提交:

怎么使用Git實現優雅的版本回退

Git如何優雅的進行版本回退?

其中:A 和 B 是正常提交,而 C 和 D 是錯誤提交。現在,我們想把 C 和 D 回退掉。而此時,HEAD 指針指向 D 提交(5lk4er)。我們只需將 HEAD 指針移動到 B 提交(a0fvf8),就可以達到目的。

只要有 git 基礎的朋友,一定會想到 git reset 命令。完整命令如下:

git reset --hard a0fvf8

命令運行之后,HEAD 指針就會移動到 B 提交下,如下圖示:

怎么使用Git實現優雅的版本回退

Git如何優雅的進行版本回退?

而這個時候,遠程倉庫的 HEAD 指針依然不變,仍在 D 提交上。所以,如果直接使用 git push 命令的話,將無法將更改推到遠程倉庫。此時,只能使用 -f 選項將提交強制推到遠程倉庫:

git push -f

采用這種方式回退代碼的弊端顯而易見,那就是會使 HEAD 指針往回移動,從而會失去之后的提交信息。將來如果突然發現,C 和 D 是多么絕妙的想法,可它們已經早就消失在歷史的長河里了。

而且,有些公司(比如良許的公司)明令禁止使用 git reset 命令去回退代碼,原因與上述一樣。所以,我們需要找到一個命令,既可以回退代碼,又可以保存錯誤的提交。這時,git revert 命令就派上用場了。

git revert

git revert的作用通過反做創建一個新的版本,這個版本的內容與我們要回退到的目標版本一樣,但是HEAD指針是指向這個新生成的版本,而不是目標版本。

使用 git revert 命令來實現上述例子的話,我們可以這樣做:先 revert D,再 revert C (有多個提交需要回退的話需要由新到舊進行 revert):

git revert 5lk4er
git revert 76sdeb

這里會生成兩個新有提交:D' 和 C',如下圖示:

怎么使用Git實現優雅的版本回退

Git如何優雅的進行版本回退?

這里只有兩個提交需要 revert,我們可以一個個回退。但如果有幾十個呢?一個個回退肯定效率太低而且容易出錯。我們可以使用以下方法進行批量回退:

git revert OLDER_COMMIT^..NEWER_COMMIT

這時,錯誤的提交 C 和 D 依然保留,將來進行甩鍋的時候也有依可循。而且,這樣操作的話 HEAD 指針是往后移動的,可以直接使用 git push 命令推送到遠程倉庫里。而這種做法,正是企業所鼓勵的。

我們再舉個更難一點的例子。

假如現在有三個提交,但很不巧的是,那個錯誤的提交剛好位于中間。如下圖示:

怎么使用Git實現優雅的版本回退

Git如何優雅的進行版本回退?

這時,直接使用 git reset 命令將 HEAD 指針重置到 A 提交顯然是不行的,因為 C 提交是正確的,需要保留的。先把 C 提交 及 B 提交全部回退,再使用 cherry-pick 命令將 C 提交重新再生成一個新的提交 C'',這樣就實現了將 B提交回退的需求。完整的過程如下:

怎么使用Git實現優雅的版本回退

Git如何優雅的進行版本回退?

通過以上對比可以發現,git reset 與 git revert 最大的差別就在于,git reset 會失去后面的提交,而 git revert 是通過反做的方式重新創建一個新的提交,而保留原有的提交。在企業里,應盡量使用 git revert 命令,能不用 git reset 命令盡量不用。

到此,關于“怎么使用Git實現優雅的版本回退”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

git
AI

裕民县| 山东省| 合江县| 全椒县| 密山市| 郎溪县| 屏边| 仁布县| 日照市| 论坛| 凤山市| 尤溪县| 卢龙县| 宝兴县| 阿拉善右旗| 武山县| 镇宁| 上饶县| 新津县| 和静县| 霸州市| 清水河县| 荆州市| 双峰县| 阳信县| 清丰县| 乌拉特后旗| 方城县| 原平市| 汉阴县| 仪陇县| 阳新县| 淮安市| 莎车县| 广水市| 布尔津县| 海丰县| 肥城市| 陇南市| 郎溪县| 恩平市|