# Lightning Talk 題目構想 -- 《團隊開發 “長大” 過程中需要的 Git 分支管理指令》 ###### tags: ``Lightning Talk`` --- ## 點題 1. 雖然要在版本控制提出全新、獨到的見解,不是那麼容易。但是好好的操作、好好的管控,也不是這麼複雜的事情 2. 但是為什麼,還是會看到某些專案中,版本控制無法被好好的使用,發揮效益。例如最簡單的退版,還是會看到退回上一個 “本來可以動” 的版本後,發生 “怎麼壞掉了” 的問題。最後只好人工搶救、手工撿屍 3. 因此有沒有可能,為沒有經驗的團隊,或是正在奇特經驗中的團隊,整理一份小步前進,每一歩都很簡單,但是可以做到真正意義上版控的指南。 4. 這份指南的目標很簡單,第一是藉由正確使用版本控制,不論是系統功能或是開發行為,兩邊都可以切出 “邊界”,讓團隊不需要再透過冗長瑣碎的溝通,才能同步專案狀態。第二則是可以安全的退版,把 “本來可以動” 的狀況降到最低。 5. 做到可以安全的退版後,也就回到版本控制的正常世界了。接下來只要去看正常的版本控制教學、技術分享即可。 ## “長大” 的過程 1. 自己電腦裡的 local repo 2. 團隊開發的 “Bare” repo 3. 開始使用代管平台 4. 有了 Issue tracker 之後 5. 科學化的 Code review 6. Pair / mob programming 7. 當我們開始 CI/CD ## 分享對象 已經有版控概念,剛學會用 Git 開分支的開發人員。 ## 附錄 -- 如果你還沒用過 Git ### 分散式版本庫 Git 的版本庫 (repo, repository) 是分散式設計,意思是技術上沒有主版本庫,也不需要 server,只要丟到網路硬碟,就可以當作共用版本庫。其他地方也可以再建一個平行的 “主” 版本庫、個人版本庫。 但是大多數的情況下,也會搭配 “代管平台” 使用,代管平台的功能包括使用者管理、issue tracker、merge request 審查等等。GitHub、GitLab、Gitee,都是代管平台,並不是 Git server 或是主版本庫。 順帶一提,代管平台在分支管理,可以提供更多功能,像是權限設定、特定分支保護、事件通知等等。 ### 分支管理 (branch) 和 svn 不同,Git 開分支的成本很低。因為 Git 的版本主體是 “commit”,其他像是分支、tag,都只是放在 commit 上的標籤。而 commit 之間的版本變更紀錄,Git 用的是快照而不是差異檔案,因此儲存的成本也很低。 分支管理策略的部分,管理流程有 Git flow、GitHub flow,和 feature toggles 等。不過 feature toggles 適合已經建立自動化測試、持續整合的團隊 (CI/CD),一般使用 Git flow 即可。 參考資料: https://medium.com/@lf2lf2111/%E4%B8%89%E7%A8%AE%E7%89%88%E6%8E%A7%E6%B5%81%E7%A8%8B-29c82f5d4469 ### "Client" tools **CLI tool and core function** - Git-SCM:https://git-scm.com/ **GUI App** - SourceTree:https://www.sourcetreeapp.com/ - TortoiseGit:https://tortoisegit.org/ ### 共享版本庫、協同開發 **不使用代管平台** 如同上面說的,可以在網路硬碟建立一個 local repository,當作本地端 "server"。方法為建立 "bare" repo -- Git "bare" repo 指的是本地端專門用來共享的 repo,也就是本地的 "remote"、"server",一種可以從 local 目錄 clone 專案的特殊 repo。 完整說明:https://hackmd.io/@hbdoy/BJz0V5tv8 **使用第三方代管平台** - GitLab:適合沒有預算、開發私有專案的組織 - BitBucker:適合有預算的組織,好處是無痛和 Atlassian 的協同工具、生態系整合 - GitHub:適合開發 "社群版"、開源專案的團隊 **自建私有 Git 代管平台** - 簡單快速:Gitee - 功能完整、沒預算:GitLab - 有預算:bitbucket + Jira **私有、第三方代管平台的整合** 如同前述,Git 本身是分散式版本庫,並沒有中央 server、每個 repo 也可以都是 server,因此代管平台的版本庫整合、更新、備份 ...,並沒有技術上的問題,端看團隊的版控策略。 ### 其他團隊協作工具 - Slack:協作、通訊軟體,可以串接 git push、merge、pull request、issue ticket 通知訊息 - Drone CI:持續整合、自動化測試工具 ### 工具書推薦 - 為你自己學 Git - Git 團隊使用手冊 ### Q & A **Git 可以解決 conflict 的問題嗎?** > 不行。Conflict 與否,取決於 issue ticker 和程式架構的邊界是否切的夠乾淨。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up