這篇文章主要介紹“怎么使用Git實(shí)現(xiàn)優(yōu)雅的版本回退”,在日常操作中,相信很多人在怎么使用Git實(shí)現(xiàn)優(yōu)雅的版本回退問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么使用Git實(shí)現(xiàn)優(yōu)雅的版本回退”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、溪湖網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、成都h5網(wǎng)站建設(shè)、商城開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價格優(yōu)惠性價比高,為溪湖等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。介紹
在版本迭代開發(fā)過程中,相信很多人都會有過錯誤提交的時候(至少良許有過幾次這樣的體驗(yàn))。這種情況下,菜鳥程序員可能就會虎驅(qū)一震,緊張得不知所措。而資深程序員就會微微一笑,摸一摸锃亮的腦門,然后默默的進(jìn)行版本回退。
對于版本的回退,我們經(jīng)常會用到兩個 命令 :
git reset
git revert
那這兩個 命令 有何區(qū)別呢?先不急,我們后文詳細(xì)介紹。
git reset
假如我們的系統(tǒng)現(xiàn)在有如下幾個提交:
Git如何優(yōu)雅的進(jìn)行版本回退?
其中:A 和 B 是正常提交,而 C 和 D 是錯誤提交?,F(xiàn)在,我們想把 C 和 D 回退掉。而此時,HEAD 指針指向 D 提交(5lk4er)。我們只需將 HEAD 指針移動到 B 提交(a0fvf8),就可以達(dá)到目的。
只要有 git 基礎(chǔ)的朋友,一定會想到 git reset 命令。完整命令如下:
git reset --hard a0fvf8
命令運(yùn)行之后,HEAD 指針就會移動到 B 提交下,如下圖示:
Git如何優(yōu)雅的進(jìn)行版本回退?
而這個時候,遠(yuǎn)程倉庫的 HEAD 指針依然不變,仍在 D 提交上。所以,如果直接使用 git push 命令的話,將無法將更改推到遠(yuǎn)程倉庫。此時,只能使用 -f 選項(xiàng)將提交強(qiáng)制推到遠(yuǎn)程倉庫:
git push -f
采用這種方式回退代碼的弊端顯而易見,那就是會使 HEAD 指針往回移動,從而會失去之后的提交信息。將來如果突然發(fā)現(xiàn),C 和 D 是多么絕妙的想法,可它們已經(jīng)早就消失在歷史的長河里了。
而且,有些公司(比如良許的公司)明令禁止使用 git reset 命令去回退代碼,原因與上述一樣。所以,我們需要找到一個命令,既可以回退代碼,又可以保存錯誤的提交。這時,git revert 命令就派上用場了。
git revert
git revert的作用通過反做創(chuàng)建一個新的版本,這個版本的內(nèi)容與我們要回退到的目標(biāo)版本一樣,但是HEAD指針是指向這個新生成的版本,而不是目標(biāo)版本。
使用 git revert 命令來實(shí)現(xiàn)上述例子的話,我們可以這樣做:先 revert D,再 revert C (有多個提交需要回退的話需要由新到舊進(jìn)行 revert):
git revert 5lk4er git revert 76sdeb
這里會生成兩個新有提交:D' 和 C',如下圖示:
Git如何優(yōu)雅的進(jìn)行版本回退?
這里只有兩個提交需要 revert,我們可以一個個回退。但如果有幾十個呢?一個個回退肯定效率太低而且容易出錯。我們可以使用以下方法進(jìn)行批量回退:
git revert OLDER_COMMIT^..NEWER_COMMIT
這時,錯誤的提交 C 和 D 依然保留,將來進(jìn)行甩鍋的時候也有依可循。而且,這樣操作的話 HEAD 指針是往后移動的,可以直接使用 git push 命令推送到遠(yuǎn)程倉庫里。而這種做法,正是企業(yè)所鼓勵的。
我們再舉個更難一點(diǎn)的例子。
假如現(xiàn)在有三個提交,但很不巧的是,那個錯誤的提交剛好位于中間。如下圖示:
Git如何優(yōu)雅的進(jìn)行版本回退?
這時,直接使用 git reset 命令將 HEAD 指針重置到 A 提交顯然是不行的,因?yàn)?C 提交是正確的,需要保留的。先把 C 提交 及 B 提交全部回退,再使用 cherry-pick 命令將 C 提交重新再生成一個新的提交 C'',這樣就實(shí)現(xiàn)了將 B提交回退的需求。完整的過程如下:
Git如何優(yōu)雅的進(jìn)行版本回退?
通過以上對比可以發(fā)現(xiàn),git reset 與 git revert 大的差別就在于,git reset 會失去后面的提交,而 git revert 是通過反做的方式重新創(chuàng)建一個新的提交,而保留原有的提交。在企業(yè)里,應(yīng)盡量使用 git revert 命令,能不用 git reset 命令盡量不用。
到此,關(guān)于“怎么使用Git實(shí)現(xiàn)優(yōu)雅的版本回退”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!
標(biāo)題名稱:怎么使用Git實(shí)現(xiàn)優(yōu)雅的版本回退-創(chuàng)新互聯(lián)
本文地址:http://jinyejixie.com/article20/ccssco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、微信小程序、動態(tài)網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容