網站首頁 編程語言 正文
使用場景
- 團隊協同開發時,生產環境出現bug,需要緊急修復。
- 每位同學在本地開發,對應本地的dev分支,本地測試通過后提交到測試環境的dev分支。
- 測試環境有其他同學提交的代碼,正在測試中,無法提交到生產環境的master分支。
- 以上情況導致我們不能在本地基于dev分支修復bug,因為會和其他同學提交的測試中的代碼“撞車”,導致無法及時提及到生產環境。
- 這個時候如何正確使用Git管理代碼呢?
解決思路
- 首先我們從master拉取最新代碼到本次創建臨時分支
- 在本地緊急修復代碼,進行測試,測試無誤后merge熱修復代碼到dev分支
- 本地merge測試分支和本地熱修復分支的代碼,有沖突解決沖突,提交代碼(保證緊急更新的代碼能及時被其他同學拉取到)
- 測試環境進行測試
- 測試無誤后切換到master分支,merge緊急修復分支代碼!(注意:是緊急修復分支的代碼,不是測試dev分支代碼,因為我們無法保證dev分支有無其他同學提交的未測試通過的代碼!!!)
- 推送master分支merge熱修復的代碼到遠程倉庫,發布項目
- 如果需要的話添加tag標簽,標記一下操作。
- 刪除熱修復分支,切換到dev分支,繼續自己的本地開發。
操作流程
- 切換到master分支,拉取最新代碼
git checkout master
git pull
- 基于master分支創建熱修復分支
git branch master_hotfix
- 切換到熱修復分支
git checkout master_hotfix
- 本地開發,修復bug,測試
coding
- 本地測試通過后,merge熱修復代碼到dev分支
git checkout dev
git merge master_hotfix
- 解決沖突,提交代碼,測試環境進行測試
git push origin dev
- 測試通過后,merge熱修復代碼到master分支
git checkout master
git merge master_hotfix
- 推送master代碼到遠程倉庫
git push origin master
- 添加tag標記:git tag -a 版本號 -m "注釋"
git tag -a 1.1.0 -m "緊急修復xxbug"
- 推送tag
git push --tag
- 刪除熱修復分支
git branch -d master_hotfix
- 切換到開發分支,進行本地開發
git checkout dev
附錄:Git使用的小技巧
Git命令別名
- 首先找到Git的配置文件,比如Mac系統下
vim ~/.gitconfig
- 在配置文件中根據自己的使用習慣添加[alias],比如:
[alias]
br = branch
ci = commit
cl = clone
co = checkout
cp = cherry-pick
cfg = clone
df = diff
fh = fetch
lg = "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative"
mg = merge
pl = pull
plr = pull --rebase
rb = rebase
ph = push
rmt = remote
rst = reset
sh = stash
st = status
sts = status -s
sbm = submodule
sw = show
swf = "show --name-status"
delb = "push origin --delete"
delt = "push origin :"
mb = merge-base
- 這樣我們就能使用簡化后的命令操作git了,進一步提高了效率。
比如:
git commit -m'注釋'
可以簡化為:
git ci -m'注釋'
總結
團隊協作是職業生涯中必須面對的問題,Git為我們代碼的協作管理提供了強大的工具。 熟悉Git操作,擁抱團隊協作。
原文鏈接:https://juejin.cn/post/7018771333173477383
相關推薦
- 2022-06-20 C語言詳解如何實現順序棧_C 語言
- 2023-12-06 Access denied for user root @ localhost (using p
- 2022-07-15 python新手練習實例之萬年歷_python
- 2022-09-26 在?React?Native?中使用?CSS?Modules的配置方法_React
- 2022-10-26 jQuery中DOM?屬性使用實例詳解下篇_jquery
- 2022-10-09 React?Redux使用配置詳解_React
- 2022-07-03 Android使用ViewPager實現翻頁效果_Android
- 2022-12-12 Android?Google?AutoService框架使用詳解_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支