亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

如何使用Git優雅的回滾實現

2024-07-21 02:03:28
字體:
來源:轉載
供稿:網友

開發過程中,我們經常會遇到代碼回滾的情況。正常人都知道,git 回滾有兩大寶:

  • git revert
  • git reset

當我們在本地開發,還未 git push 到遠端時,可以毫無顧忌的使用 git reset 進行回滾。更多的情況中,我們不僅 push 了,而且由于開發周期長,在開發過程中不斷的 merge mastermerge other-branch 以發布到預發環境測試或者多需求合并測試。

突然

上線后用戶投訴,需要馬上下線本次需求中的 A、B、C,只保留 D、E、F,迅速回滾,不要影響更多用戶。

撕逼?那肯定是來不及了。一群人在你背后眼巴巴地盯著你,就問你慌不慌...

接下來,我們來說說,如何在緊急回滾面前,鎮定(假)自若(裝)地進行 git 操作

簡單場景

本地操作使用 git reset 隨便玩玩就行了,我們主要講講 git revert

回滾“單一提交”

回滾“連續提交”

回滾一次“合并”

回滾合并時,如果直接使用 git revert mergeCommit 實際上是遞歸回滾里面的每一個節點,指定 -m 是指定以哪一個分支為主線,當前所在分支為 1,依次類推(一次合并多個分支時會 > 2,正常只有 1 和 2)

 

高級場景

如果我們遇到的問題都像上面一樣,那怎么能體現一個程序員的價值?

回滾“混合場景”

如以下場景中,我們期望回歸的節點之間含有一次合并導致我們無法一次回滾到位。有兩種方式:

1. 按順序見招拆招回滾(三次操作)

2. 先回滾 D + F,再回滾合并(兩次操作)

【推薦】使用方案1,按順序回滾會處理更少的 conflict,否則假設 D、F 是一系列提交合集,那么回滾成本很高

回滾有點復雜“混合場景”

如下的場景中,特殊的地方在于,我有一個 feature,搭車了一個 bugfix,我需要回滾需求但不回滾 bug

這種情況下,有兩種選擇:

回滾 G,通過 git 引一步一步回滾 F-F'-E‘-D'-C‘-E'‘(不滾)-D'‘(不滾)-C'‘(不滾) ,回滾 E+D 【推薦】回滾 G,回滾 F 丟棄 F',回滾 D+E,復原 C‘'..E‘' 比第一種方案更快更簡單,不用處理第一種方案中的 conflict

git revert Ggit revert F -m 1git revert D..Egit cherry-pick C``git cherry-pick D``git cherry-pick E``

回滾復雜的”混合場景“

標注解釋

  • 藍色代表已經合并到遠程分支 Master 生成了 tag
  • 紅色代表需要回滾的 commit
  • 綠色代表正常 commit

場景解釋 一開始你所在的團隊接到一個需求,這個需求中可以分拆出一個自需求,最終可以實現兩人并行開發

  • 兩個人 Pa 和 Pb 分別在 Master 基礎上創建了新分支
  • 在開發過程中 Master 上發布了兩次 bugfix(v2、v3)
  • 由于需要在預發上持續測試,所以 Pa 主動合并了 Master
  • Pb 在自己分支 B‘ C' D‘ 中廢棄了之前的舊邏輯和一些代碼的小幅重構(穩定性更新),之后 一直在本地開發新功能 & 驗證
  • 最后即將上線時需要合并自需求一起驗證,驗證后 Pb 發布了 v3
  • 后續又經過了一次 bugfix 發布了 v4
  • 結果,產品反悔了 WTF ???
  • 最后,要廢棄新功能,需要重新設計產品,但是舊有邏輯仍然按原計劃廢棄 >> F(v2) + B'-D'

回滾方式

遇到這樣的場景,一般有如下幾種方案回滾:

  • 回到最新的遠端 Master (v4) 手動識別需求代碼進行人工刪除 刪除自己的代碼還好,刪除別人的代碼就有點難度了,而且當提交量很大時很耗時耗力
  • 復制 F(v2) 替換 Master(v4),手動或應用 B'-D‘ commit 圖示情況,直接復制粘貼是個便捷的方法,再次回復 B'-D' 也費不了多大事,只是手動操作難免失誤,尤其是增加/刪除文件的情況,復制粘貼容易出錯
  • 【推薦】按時序回滾(O'-T‘、L'‘、F'‘-K'‘^、B'‘-C'‘、E'-N‘) 版本控制本來就是為了代碼管理更便捷,使用 git 操作后面的人不僅能看懂回滾了哪些 / 如何回滾的 / 怎么處理回滾中的 conflict 的,如果回滾錯了還可以回滾“回滾了的”操作
git revert N`..S`// 僅回滾非 merge Master 節點,保留 Master 代碼git log B``^..L`` --first-parent --no-merges --pretty=format:%H | xargs | xargs git cherry-pick -n git revert E`..F`

最后多說一點

想要回滾不頭痛,提前就要做好功課并且保持清晰的提交記錄,否則幾百個 commit 回滾起來就變成了一場災難。提幾個好方法

保持 Commit 清晰

  • 一次 commit 的做一件完整的事,不要摻雜別的需求和 bugfix,未完成需求前不要輕易提交編譯代碼;
  • commit 有清晰的描述

善用 rebase

  • 如果有幾次 commit 干的是一件事,可以通過 rebase 合并,不要出現很多 init、update 之類的無效 log
  • 剛剛提交代碼后,又想起來某個配置需要改個版本,可以先 commit,最后使用 rebase 清理一下版本樹

多人并行開發,創建獨立的分支進行合并測試 不要合并到某一個分支中,防止上線時間變化導致代碼再次清洗

到此這篇關于如何使用Git優雅的回滾實現的文章就介紹到這了,更多相關Git 回滾內容請搜索武林網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产欧美日韩精品专区| 97视频在线观看免费| 亚州成人av在线| 国产综合香蕉五月婷在线| 高清日韩电视剧大全免费播放在线观看| 亚洲国产毛片完整版| 最近2019年日本中文免费字幕| 国产va免费精品高清在线观看| 亚洲欧美在线一区| 久热精品在线视频| 久久精品亚洲国产| 97激碰免费视频| 青青草国产精品一区二区| 国产精品美女久久久久久免费| 91嫩草在线视频| 国内精品一区二区三区四区| 久精品免费视频| 国产精品人成电影在线观看| 亚洲福利视频免费观看| 欧美体内谢she精2性欧美| 欧美激情欧美激情在线五月| 国产成人中文字幕| 亚洲老板91色精品久久| 国产精品永久免费| 国产成人精品999| 色视频www在线播放国产成人| 欧美午夜精品久久久久久人妖| 亚洲国产精品va在线看黑人| 色妞一区二区三区| 亚洲级视频在线观看免费1级| 国产精品偷伦免费视频观看的| 美女av一区二区三区| 国产欧美在线视频| 狠狠久久亚洲欧美专区| 精品日本美女福利在线观看| 国产亚洲福利一区| 日韩中文字幕在线视频| 日韩亚洲欧美中文高清在线| 日韩欧美精品网站| 在线免费看av不卡| 亚洲精美色品网站| 久久综合电影一区| 欧美精品一区二区免费| 免费97视频在线精品国自产拍| 欧美性极品少妇精品网站| 亚洲www在线观看| 日韩精品中文在线观看| 色悠悠国产精品| 亚洲色图美腿丝袜| 亚洲国产精品99| 久久久久久久国产精品视频| 精品亚洲一区二区三区在线播放| 精品成人国产在线观看男人呻吟| 久久久免费观看视频| 97国产一区二区精品久久呦| 欧美日韩国产综合视频在线观看中文| 成人激情视频在线观看| 一区二区三区天堂av| 亚洲国产精品人久久电影| 亚洲国产精品成人一区二区| 日韩三级影视基地| 欧美日韩中国免费专区在线看| 亚洲精品自拍视频| 韩国19禁主播vip福利视频| 亚洲图片制服诱惑| 欧美性xxxxx| 日韩欧美国产免费播放| 欧美黄色片在线观看| 亚洲人成电影在线播放| 国产精品草莓在线免费观看| 中文字幕亚洲一区在线观看| 在线色欧美三级视频| 中文字幕在线观看日韩| 国产精品高潮呻吟久久av野狼| 97国产精品久久| 日韩专区在线观看| 国语自产在线不卡| 久久福利视频网| 精品久久久久人成| 国产一区二区三区免费视频| 在线视频国产日韩| 国内精品视频久久| 国产精品色婷婷视频| 韩日精品中文字幕| 欧美性猛交丰臀xxxxx网站| 青草青草久热精品视频在线观看| 久久久国产一区二区| 4438全国亚洲精品在线观看视频| 性色av一区二区咪爱| 亚洲欧美制服另类日韩| 久久久久久久久久婷婷| 国产精品久久久久久久久久久久久| 精品一区二区三区四区在线| 91精品国产91久久久久| 色久欧美在线视频观看| 亚洲人成在线观看| 国产精品成人av性教育| 久久激情视频久久| 黑人精品xxx一区一二区| 精品久久久视频| 亚洲天堂网在线观看| 久久99视频免费| 欧美中文字幕精品| 亚洲成人av片在线观看| 亚洲天堂av高清| 亚洲精品综合久久中文字幕| 色小说视频一区| 亚洲午夜激情免费视频| 久久香蕉精品香蕉| wwwwwwww亚洲| 欧美性视频在线| 国产精品夜色7777狼人| 亚洲全黄一级网站| 国产成人亚洲综合| 欧美日韩精品在线观看| 欧美在线一级va免费观看| 欧美老少做受xxxx高潮| 亚洲精品一区久久久久久| 欧美性资源免费| 日韩av影片在线观看| 日韩国产精品一区| 亚洲欧美一区二区激情| 国产成人精品久久久| 精品久久久久久亚洲国产300| 91亚洲精品久久久久久久久久久久| 久久99热这里只有精品国产| 国产91露脸中文字幕在线| 久久国产精品免费视频| 清纯唯美亚洲激情| 日韩有码在线播放| 992tv在线成人免费观看| 亚洲韩国青草视频| 亚洲黄色www网站| 久久免费高清视频| 国产在线精品成人一区二区三区| 久久99国产精品久久久久久久久| 亚洲综合一区二区不卡| 91在线视频成人| 精品网站999www| 亚洲欧美制服第一页| 亚洲成人精品久久| 国产精品一区二区女厕厕| 日韩av一区在线观看| 国产精品入口福利| 欧美成人免费播放| 亚洲一级片在线看| 久久噜噜噜精品国产亚洲综合| 国产成人精品国内自产拍免费看| 97精品在线视频| 俺也去精品视频在线观看| 国产精品久久77777| 午夜免费久久久久| 欧美国产亚洲视频| 欧美一级视频一区二区| 欧美专区福利在线| 国产精品第一视频| 精品国产自在精品国产浪潮| 亚洲国产欧美精品| 亚洲一区制服诱惑| 亚洲一区中文字幕| 伊是香蕉大人久久| 91久久久久久久久久久| 91sa在线看| 午夜精品久久久久久99热软件|