av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

如何優(yōu)雅的進(jìn)行版本回退?

在版本迭代開(kāi)發(fā)過(guò)程中,相信很多人都會(huì)有過(guò)錯(cuò)誤提交的時(shí)候。這種情況下,菜鳥(niǎo)程序員可能就會(huì)虎驅(qū)一震,緊張得不知所措。而資深程序員就會(huì)微微一笑,摸一摸锃亮的腦門(mén),然后默默的進(jìn)行版本回退。

創(chuàng)新互聯(lián)是網(wǎng)站建設(shè)專(zhuān)家,致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營(yíng)銷(xiāo),專(zhuān)業(yè)領(lǐng)域包括成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、電商網(wǎng)站制作開(kāi)發(fā)、小程序開(kāi)發(fā)、微信營(yíng)銷(xiāo)、系統(tǒng)平臺(tái)開(kāi)發(fā),與其他網(wǎng)站設(shè)計(jì)及系統(tǒng)開(kāi)發(fā)公司不同,我們的整合解決方案結(jié)合了恒基網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營(yíng)銷(xiāo)的理念,并將策略和執(zhí)行緊密結(jié)合,且不斷評(píng)估并優(yōu)化我們的方案,為客戶(hù)提供全方位的互聯(lián)網(wǎng)品牌整合方案!

對(duì)于版本的回退,我們經(jīng)常會(huì)用到兩個(gè)命令:

  1. git reset
  2. git revert

那這兩個(gè)命令有何區(qū)別呢?先不急,我們后文詳細(xì)介紹。

git reset

假如我們的系統(tǒng)現(xiàn)在有如下幾個(gè)提交:

其中:A 和 B 是正常提交,而 C 和 D 是錯(cuò)誤提交?,F(xiàn)在,我們想把 C 和 D 回退掉。而此時(shí),HEAD 指針指向 D 提交(5lk4er)。我們只需將 HEAD 指針移動(dòng)到 B 提交(a0fvf8),就可以達(dá)到目的。

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

 
 
 
 
  1. git reset --hard a0fvf8 

命令運(yùn)行之后,HEAD 指針就會(huì)移動(dòng)到 B 提交下,如下圖示:

而這個(gè)時(shí)候,遠(yuǎn)程倉(cāng)庫(kù)的 HEAD 指針依然不變,仍在 D 提交上。所以,如果直接使用 git push 命令的話,將無(wú)法將更改推到遠(yuǎn)程倉(cāng)庫(kù)。此時(shí),只能使用 -f 選項(xiàng)將提交強(qiáng)制推到遠(yuǎn)程倉(cāng)庫(kù):

 
 
 
 
  1. git push -f 

采用這種方式回退代碼的弊端顯而易見(jiàn),那就是會(huì)使 HEAD 指針往回移動(dòng),從而會(huì)失去之后的提交信息。將來(lái)如果突然發(fā)現(xiàn),C 和 D 是多么絕妙的想法,可它們已經(jīng)早就消失在歷史的長(zhǎng)河里了。

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

git revert

git revert的作用通過(guò)反做創(chuàng)建一個(gè)新的版本,這個(gè)版本的內(nèi)容與我們要回退到的目標(biāo)版本一樣,但是HEAD指針是指向這個(gè)新生成的版本,而不是目標(biāo)版本。

使用 git revert 命令來(lái)實(shí)現(xiàn)上述例子的話,我們可以這樣做:先 revert D,再 revert C (有多個(gè)提交需要回退的話需要由新到舊進(jìn)行 revert):

 
 
 
 
  1. git revert 5lk4er 
  2. git revert 76sdeb 

這里會(huì)生成兩個(gè)新有提交:D' 和 C',如下圖示:

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

 
 
 
 
  1. git revert OLDER_COMMIT^..NEWER_COMMIT 

這時(shí),錯(cuò)誤的提交 C 和 D 依然保留,將來(lái)進(jìn)行甩鍋的時(shí)候也有依可循。而且,這樣操作的話 HEAD 指針是往后移動(dòng)的,可以直接使用 git push 命令推送到遠(yuǎn)程倉(cāng)庫(kù)里。而這種做法,正是企業(yè)所鼓勵(lì)的。

我們?cè)倥e個(gè)更難一點(diǎn)的例子。

假如現(xiàn)在有三個(gè)提交,但很不巧的是,那個(gè)錯(cuò)誤的提交剛好位于中間。如下圖示:

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

通過(guò)以上對(duì)比可以發(fā)現(xiàn),git reset 與 git revert 最大的差別就在于,git reset 會(huì)失去后面的提交,而 git revert 是通過(guò)反做的方式重新創(chuàng)建一個(gè)新的提交,而保留原有的提交。在企業(yè)里,應(yīng)盡量使用 git revert 命令,能不用 git reset 命令盡量不用。


網(wǎng)頁(yè)名稱(chēng):如何優(yōu)雅的進(jìn)行版本回退?
網(wǎng)站路徑:http://uogjgqi.cn/article/djgcgcg.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流