版本控制是現今軟體開發大家都一定要會的技能,而 Git 更是目前的版本控制主流。
這場演講不教大家最基本的 Git 指令,而是分享大家最困擾的分支策略及存取模型,也會分享我們在多環境開發時的分支策略,更推薦大家如何利用 GitLab 來管理程式碼。也會分享如何利用 Redmine + Git 來管理 issue。最後也會加上如何用 SemVer 制定版號。
Git 易學難精,每個專案也都有自己不同的分支及存取策略。希望這場演講能讓大家在管理程式碼時更容易上手。
---
這是小編這兩天在 Devopsdays Taipei 分享的內容,東西有點多超時了 3 分鐘,不過重點算是都有講到了。尤其是這次分享了我們在 Qmi 上的 Git 工作流程,特色是有 server 分支給前端做測試用,小編目前看到的工作流程比較沒有這類形式。
其實在順第一版內容的時候超時了 20 分鐘,然後花了兩天一直刪一直刪,後來總算是勉強在時間範圍內。也是第一次小編嘗試使用手繪的方式來介紹,因為 Git 線圖實在找不到有什麼好工具可以用,於是就用新買的 Rocketbook 來畫。可是小編畫的圖歪七扭八,字也是醜到不行,所以只能請大家見諒了 Orz
Git for Teams 這本書內容真的不錯,每看一次都有新的體悟,歡迎大家去買本來讀讀。這次也認識了幾位新朋友 吳承翰 (ChengHan Wu) 跟 Achao Tsai,另外也歡迎大家多多參與 Git.tw 討論及 GHTUG 的聚會喔。
最後,Git 工作流程沒有誰對誰錯,只有適不適合而已,也歡迎大家分享自己的工作流程喔!
* Git.tw:https://www.facebook.com/groups/git.tw
* GHTUG:https://www.meetup.com/GitHub-Taipei-User-Group-GHTUG/
#gitforteams #git #gitlab #redmine #devopsdays
同時也有10000部Youtube影片,追蹤數超過62萬的網紅Bryan Wee,也在其Youtube影片中提到,...
semver 在 Kewang 的資訊進化論 Facebook 八卦
小編上星期花了一點時間跟公司同事分享這幾年使用 Git 的經驗,其中也包含了 Git for Teams 的內容。如果你想要進一步改善 Git 工作流程的朋友,這本書真的是必備。
小編自己整理的內容還蠻多的,但有點可惜沒辦法包含所有常見的指令或情境,像是 rebase -i, stash, subtree, submodule 都沒提到,希望之後有機會再來重新整理一下。
## 簡易大綱
* 介紹四種權限模型
* rebase, merge, merge commit 的使用情境
* semver 的使用情境
* 與 redmine 的整合情境
* 外包使用情境
* 開所有權限的使用情境
* 合併時會發生衝突的原因
* reset, revert, checkout 等各種回復到特定點的使用情境
* cherry-pick 的使用情境
* gitignore 使用情境
* bisect, reflog 使用情境
* squash 使用情境
* ff 及 no-ff 的使用情境
* push -f 的使用情境
* 雲端 backend deployment 分享
#git #gitforteams #github #gitlab
semver 在 Kewang 的資訊進化論 Facebook 八卦
小編分享過多次的 Git,常常在 QA 時被問到下面這種需求:
有一個已經寫好的模組 M,然後想要給 A, B, C 這三個專案使用,A 要用 1.0.0 版的 M,B 跟 C 則是用 1.1.0 版的 M。而且 M 是公司機密,不可對外公布。
當 M 開發了新功能的時候,不希望 A, B, C 這些專案使用的 M 也一併更新,而是等到想更新的時候才要更新 M。
---
使用過 Git 一陣子的朋友,通常會在 Git 裡面找看看有哪個功能可以符合需求,結果就找到了 git submodule。
submodule 其實是類似捷徑的概念,以上面需求為例,當 A 需要用到 M 的時候,可以使用 git submodule add
當 M 更新時,A 要用 git submodule update (而不是一般常用的 git pull),才會更新專案 A 的模組 M,可以避免 M 或 A 更新之後,無意間也更新了 M 的版本。
---
但 submodule 也有一些麻煩的地方,像是如果不小心在 submodule 上做了一些變更,commit 跟 push 的時候絕對會搞混,到底現在是在 A 還是在 M commit。
然後在 A 跟 M 看線圖的時候也長的不一樣,這其實是很困擾的一件事情。所以小編怕麻煩,通常都不會用 submodule。
---
其實只要了解你所使用的語言及框架,這類需求其實很容易就可以解決。以 Nodejs 為例,開發時大家常到 npm.org 下載模組來安裝。其實 npm.org 也可以自建 (以下簡稱 mynpm.org),所以只要把模組 M 上傳到 mynpm.org,以後都從 mynpm.org 下載模組 M 就可以了。可以解決下列這些問題:
1. 避免公司重要技術外洩
2. A, B, C 專案甚至之後的其他專案也可以利用 SemVer 來持續更新模組 M
3. Git 線圖容易追蹤
---
像這類的作法可能會有幾個小問題,像是 JavaScript, Ruby, Python 這類直譯式語言,在遠端佈署的時候,如果 mynpm.org 沒有對外該怎麼辦?這時候其實可以在 .gitignore 裡面設定,當開發時可以將模組 M 的目錄強制納入 Git 管理。
如果是像 Java, C# 這類編譯式語言的話就比較不會有這個問題了,因為在本機就已經編譯成執行檔,直接上傳到遠端佈署就可以囉!
---
https://hahow.in/cr/kewang-git
看完這篇文章可以知道就算是同一種需求,Git 也會有不同解決方式喔!還不快來報名小編的 Git 線上課程,讓你在任何共同協作場合都可以用 Git 來解決問題喔!
#git #gitsubmodule #gitignore #semver
semver 在 Bryan Wee Youtube 的評價
semver 在 Travel Thirsty Youtube 的評價
semver 在 スキマスイッチ - 「全力少年」Music Video : SUKIMASWITCH / ZENRYOKU SHOUNEN Music Video Youtube 的評價
semver 在 [npm] 套件版本的意義semver | PJCHENder 未整理筆記 的相關結果
semantic version(semver) · patch release:當套件只進行基本的bugfix ,沒有新增什麼功能或特色,會增加最後一位的版本號時, 1.0.1 。 · minor release ... ... <看更多>
semver 在 semver - npm 的相關結果
semver. 7.3.5 • Public • Published 9 months ago. Readme · Explore BETA · 1 Dependency · 20,140 Dependents · 93 Versions ... ... <看更多>
semver 在 語意化版本2.0.0 的相關結果
我稱這套系統為「語意化的版本控制」,在這套約定下,版號及其更新方式包含了相鄰版本間的底層程式碼和修改內容的訊息。 語意化版本控制規範(SemVer). 以下關鍵詞「MUST ... ... <看更多>