7 個常見的 Git 相關的問題
Git 是目前最流行的版本控制系統,GitHub 和 GitLab 是當前最流行的程式碼託管平臺,熟練掌握Git,可以說是程式設計師的必備技能。我整理了大家普遍關切的 7 個問題,並附上我的理解和回答,希望這樣的方式可以讓大家對 Git 有更進一步的認識,更好地掌握 Git、GitHub 和 GitLab。
關於 Git
1. 怎麼花最少的時間從 Git 小白變成 Git 高手?
Git 小白通常會有下面的行為特徵:
- 只會用基本得不能再基本的 Git 命令;
- 有時候會被 Git 彈出來的一串提示資訊嚇一大跳;
- 工作中遇到 Git 問題時,通常心跳加速,束手無策…
想成為真正的 Git 高手,需要熟悉 Git 的概念並掌握 Git 的工作原理。當我們理解了這些,就能更快地掌握 Git 。換句話說,當我們學會了像 Git 一樣思考,再加上多動手實踐, 過不了多久,我們就有能力快速找到所需的 Git 命令,用它們來解決各種版本管理的問題了。
2.checkout 和 reset 太相似,該選哪個?
這兩個命令的用法很多又很相似,咱們的教程並不介紹所有用法,而是挑選出最常見的應用場景,教會大家在每種場景中使用哪種命令 。並且總結出:對於帶檔案的方式,“reset” 用來變更暫存區的檔案,而 “checkout” 用來變更工作區的檔案。
這樣安排,既突出實用性,又降低不必要的難度。等大家用熟 Git 後,再帶著問題查這兩個命令的其他用法也不遲。
關於 GitHub
3、如何在 GitHub 上找到感興趣的開源專案?**
可能多數人只會在 GitHub 首頁的 search 輸入框中,通過簡單地寫幾個關鍵字的方式來找開源專案。其實 GitHub 為大家準備了高階搜尋的功能,其中還有不少的講究。比如:
- 登入前和登入後查詢的結果是有差異的;
- 搜 Git 倉庫的方法和搜程式碼的方法是不能同時起作用的;
- 一個 Git 倉庫的 readme 在搜尋中起到非常大的作用;
- 還能通過 topic 的方式來搜尋 Git 倉庫…
當我們學會如何使用高階搜尋功能 後,可以組合出多種搜尋條件,這樣會排除掉很多我們不需要的東西,節約不少的時間。我個人在使用 GitHub 高階搜尋的時候,還發現某些場景下,即便有了這個功能,有時候還是不能滿足我的需求。在那種情況下,我會結合Google 等搜尋工具 來幫忙。我們的課程會詳盡地講解高階搜尋的功能,讓大家能高效地找到可借鑑的開源專案。
4、如何挑選團隊協作的工作流?
在 GitHub 之前,我們通常看到團隊的程式碼管理、需求管理、bug 管理和進度管理 都是由不同的服務提供的,各個服務之間的互通不是很便捷。而 GitHub 把這些服務都融入到了一起,咱們的課程不妨找一些優秀的開源專案 學習一下,看看這些專案的成員在 GitHub 上都是如何高效協作的。
其次,說起研發的工作流,不得不說一說關於分支模型 的事。我們的課程會具體分析各類分支模型的特點和應用場景,幫助研發團隊選擇合適的程式碼整合的方式,並給大家提供有效的解決方案。
關於 GitLab
5、國內網際網路企業為何喜歡 GitLab ?
GitLab 具備下面的幾個特徵,讓大家不得不喜歡它:
- 有免費的社群版本,而且還能安裝並執行在公司局域網裡;
- 提供 DevOps 全生命週期的解決方案,功能很強;
- 易用性非常好,介面也非常豐富;
- 與時俱進,持續交付,不斷推出新功能;
- 有明確的產品路線規劃,且對外公開…
6、GitLab 上是怎麼保證整合分支的質量的?
GitLab 主要通過下面的方式來保證整合分支的質量:
- 可以把整合分支配置為保護分支,不允許任何人把變更直接 push 到整合分支 ;
- 大家在特性分支上做開發,自測通過後向整合分支發起 Merge Request;
- 在 Merge Request 的環節,有經驗的開發人員可以對提交的變更做 review,發表改進的意見,程式碼變更的作者則會收到 review 的提醒郵件 ;
- 在 Merge Request 的環節,還能設定靜態檢查、編譯打包、單元測試等檢查機制,如果沒有通過所有檢查項,則不允許合入到整合分支。
咱們的課程會帶大家走一遍整個研發過程質量管理的流程 ,讓大家在實際工作中有能力使用這些功能點。
7、在 GitLab 上怎麼開展持續整合 ( CI )?
GitLab 的 CI 分為兩類:
- 採用 GitLab 自帶的 CI;
- 通過 GitLab Webhook 的方式向外部的 CI 服務(比如 Jenkins )傳送 Git 倉庫變更資訊,從而觸發 CI。
持續整合和部署(CI/CD)在 GitLab 的開發過程中也發揮了重要作用。採用持續整合和部署使程式碼審查更有效並縮短了開發週期,讓開發人員更快地發現錯誤並從錯誤中吸取經驗。這也是 GitLab 公司把持續整合和持續部署功能與原始碼管理功能整合在一起的原因。
我們的課程會告訴大家如何使用 GitLab 自帶的 CI ,帶大家見識強大的 Pipeline 流水線 ,並嘗試著把應用部署到 AWS 雲服務上 。通過這種方式,讓大家瞭解當下流行的且被證明有效的持續整合和持續部署(CI/CD)的實踐,以便在工作中快速適應持續整合和持續交付的環境,這樣還可以促使大家提升各自 CI/CD 的工具與環境。
學好 Git、GitHub 和 GitLab 三劍客,彷彿乘上了安全且高速的列車,可以讓團隊更高效地完成研發任務,也可以讓個人更順利地參與協作,何樂而不為呢?
我在這門課 裡,不光講簡單的 Git 命令使用,還會講更多 Git 原理性方面的內容,以及 GitHub 和GitLab。知其然更知其所以然,怎麼用這些做程式碼 review ,做專案管理,怎麼去做持續整合,這些都是更高維度的東西,而不僅僅是去學幾個工具。
關於 Git 你有什麼疑問或想法,歡迎你在下方的留言區和我討論。
內容選自極客時間《 玩轉 Git 三劍客 》 專欄