開發經驗漫談 -- Git在開發流程中的運用

HULK一線技術雜談發表於2018-11-22

女主宣言

這幾期和大家分享下我自己在開發時的一些經驗,這次來說說關於Git在開發流程中的運用。

目的

  1. 保持提交歷史整潔,俗稱的一條線提交。

  2. 讓專案程式碼有跡可循,提供清晰的開發歷程,亦稱:取其精華,去其糟粕。

  3. 幫助大家養成好的程式碼開發習慣,即:如何更好地和他人合作。

  4. 提供一個思路,讓大家更深刻的理解git。

請先閱讀

  1. 如果你沒有接觸過git,請先閱讀:

  2. 必讀:

示例專案

我們使用一個簡單的專案作為示例來進行說明。

開發經驗漫談 -- Git在開發流程中的運用

該系統由使用者管理模組和角色管理模組組成,該專案已經完成了角色模組的開發,現在在開發使用者模組。

開發流程

  獲取專案程式碼

開發經驗漫談 -- Git在開發流程中的運用

當前的提交歷史如下:

開發經驗漫談 -- Git在開發流程中的運用


2   建立遠端合作分支

我們把這個分支命名為user_admin

開發經驗漫談 -- Git在開發流程中的運用

操作完成後,提交歷史如下:

開發經驗漫談 -- Git在開發流程中的運用

說明:合作開發user_admin模組的同學,會在這個分支上合併彼此的程式碼。

3  建立個人分支(真正的開發工作在這裡進行)

我們把這個分支命名為:user_admin_ligang

開發經驗漫談 -- Git在開發流程中的運用
開發經驗漫談 -- Git在開發流程中的運用

請注意:

  1. 此分支是在遠端合作分支(user_admin)的基礎上建立的。

  2. 此分支只可合併遠端合作分支,不可以直接合並master。

分支合併流程

假設在user_admin_ligang的個人分支中已經完成了開發,現在需要把這部分程式碼提交給被人使用,那麼請按照如下方式操作:

假設開發完成後的提交歷史如下:

開發經驗漫談 -- Git在開發流程中的運用

第一步:整理個人開發分支中待合併的提交,去掉無用的,僅保留有用的

  • 切到user_admin_ligang分支

開發經驗漫談 -- Git在開發流程中的運用
  • 查詢newbase

在這個清理過程中,我需要清理掉tmp1和tmp2這2個臨時提交,所以newbase就是init,這裡獲得它的版本號:

開發經驗漫談 -- Git在開發流程中的運用
  • 執行清理

這一步是不可逆的,請謹慎操作,亦可先備份。

開發經驗漫談 -- Git在開發流程中的運用
  • 這裡按照提示,我們編輯rebase資訊

開發經驗漫談 -- Git在開發流程中的運用

儲存退出,由於上面我們告訴rebase我們要重新編輯提交資訊(r,reword),這裡會進入提交資訊編輯介面,我們修改最終提交資訊如下:

開發經驗漫談 -- Git在開發流程中的運用

儲存退出,清理過程結束,這裡再次檢視提交歷史:

開發經驗漫談 -- Git在開發流程中的運用

這裡可以看到,tmp1和tmp2已經被清理掉了,最終的done2是一個全新的提交。

第二步:合併個人分支到遠端合作分支

請確保此時只有你一個人操作遠端合作分支

  • 更新本地遠端合作分支到最新

開發經驗漫談 -- Git在開發流程中的運用
  • 切到user_admin_ligang分支

開發經驗漫談 -- Git在開發流程中的運用
  • 衍合個人開發分支

    (1)衍合前

開發經驗漫談 -- Git在開發流程中的運用

        (2)衍合

開發經驗漫談 -- Git在開發流程中的運用

這裡有可能需要解決衝突,再continue完成整個衍合過程。

        (3)衍合後

開發經驗漫談 -- Git在開發流程中的運用
  • 合併入遠端合作分支

開發經驗漫談 -- Git在開發流程中的運用

合併後的提交歷史


開發經驗漫談 -- Git在開發流程中的運用

刪除個人開發分支

開發經驗漫談 -- Git在開發流程中的運用

合併到主幹

1.操作前確認

進行這一步操作前,請確認已經滿足如下條件:

  • 請確認待合併的遠端合作分支上的開發目標已全部完成。

  • 請確認即將把程式碼合併入主幹進行釋出上線。

如不能全部滿足上述所有條件,請不要進行此操作。

2.合併入主幹

請確保此時只有你一個人操作遠端分支及主幹

  • 更新本地主幹到最新

開發經驗漫談 -- Git在開發流程中的運用
  • 切到user_admin分支

開發經驗漫談 -- Git在開發流程中的運用
  • 衍合遠端合作分支

開發經驗漫談 -- Git在開發流程中的運用

這裡的過程和遠端合作分支衍合時是一樣的,有可能需要解決衝突,再continue完成整個衍合過程。

  • 合併入主幹

開發經驗漫談 -- Git在開發流程中的運用
  • 刪除遠端合作分支

開發經驗漫談 -- Git在開發流程中的運用

最終的提交歷史

開發經驗漫談 -- Git在開發流程中的運用

HULK一線技術雜談

由360雲平臺團隊打造的技術分享公眾號,內容涉及雲端計算資料庫大資料監控泛前端自動化測試等眾多技術領域,透過夯實的技術積累和豐富的一線實戰經驗,為你帶來最有料的技術分享

原文連結:https://mp.weixin.qq.com/s/aLGAaoJDG_A8mwOJy807OQ

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31555491/viewspace-2221147/,如需轉載,請註明出處,否則將追究法律責任。

相關文章