Git 企業開發者教程

北京的201個藍天發表於2018-01-02

git

為什麼要寫這樣一個面向企業開發者的Git教程?這個問題也困擾我自己很久。其實我使用git的時間也不短了,但是就和正在閱讀本文的每一位一樣,常用的基本就是那麼幾個(git clone, git push)等等。然而git其實有著非常強大的功能,如果不能系統的掌握使用這些功能的技能,我們很容易在一些場景下不知所措,比如以下這些:

– 拉取了共享分支後出現了衝突,怎麼合併?
– 到底該不該使用分支?
– 修改了分支上的程式碼,但是需要臨時切換到另外一個分支上工作,可是當前的程式碼還不能提交,怎麼辦?
– 團隊開始使用拉取請求(Pull Request)了?這是個什麼鬼?
– 改了程式碼,直接執行git commit為啥就不工作呢?
– 怎麼樣才能把遠端分支下載到本地開始工作?
– 變基(rebase)和合並(merge)到底有什麼區別?
– 我需要別人分支上的幾個改動,怎麼才能只獲取這幾個改動而不合並所有程式碼?
– 如何比較檔案,分支?如何回退程式碼?
– 我們的程式碼庫很大,如何才能正確切換到Git?
– Git如何能夠幫助我們更安全,高效的釋出?

在網際網路上其實有很多的Git教程,但是太過零散,不成體系,特別是沒有考慮到企業開發者所面臨的許多具體而實際的問題。我希望通過這套教程,解決企業開發者在使用Git過程中所遇到的諸多疑問,讓更多的團隊能夠享受到Git所帶來的良好開發體驗,讓大家能夠真正在大規模複雜專案中將Git的優勢發揮出來。我會將我們在給各種企業進行研發管理諮詢中所積累的經驗以及我們的解決方案融入到這套教程中,相信其中的很多場景一定會對你有所幫助。

這個教程會分成4個部分

1. 基礎篇:我們一起了解Git的歷史,分散式版本控制系統的特點和優勢,決定是否git真的適合你。我們也將完成一些初始化的工作,比如:安裝和配置Git工具,介紹幾個我常用的Git工具,對你的本地Git環境進行初始化操作。最後我們將完成一些常見的Git操作,讓你可以開始在日常工作中開始使用Git。如果你還在糾結以上那些問題,不要擔心,你必須勇敢的邁出這一步,因為Git已經是全球開發人員公認的最好的版本控制工具,相信你遇到的問題他人都已經遇到過,也一定都有解決的辦法。

  • 為什麼要使用版本控制系統
  • Git 分散式版本控制系統的優勢
  • Git 安裝和設定
  • 初始化Git儲存庫(Repo)
  • 起步 1 – 建立分支和儲存程式碼
  • 起步 2 – 瞭解Git歷史記錄
  • 起步 3 – 拉取請求 Pull Request 工作機制

2. 進階篇:我們一起了解Git最常用的一系列功能,讓你可以開始更加得心應手的完成越加複雜的開發工作,這個時候你會逐漸愛上這個小小的工具,開始欲罷不能;但是你要記住,淹死的都是會游泳的,在你還不夠了解一些複雜的功能的時候,不要隨意嘗試,因為這時你的破壞能力已經足夠毀掉你辛苦工作很久的程式碼了。這一篇中我們會一起針對很多困擾你的問題找到解決方案,讓你真正成為一名git高手。為了滿足不同使用者的口味,我會分別使用命令列和 Visual Studio 兩種工具來完成這一篇的所有操作,確保鍵盤手和滑鼠手都能得到滿足。

  • 使用已有Git Repo提交和共享程式碼
  • 建立新的Git Repo
  • 理解Git提交(commit)工作機制
  • 使用Git分支(branch)進行工作
  • 使用Git推送(push)共享程式碼
  • 使用Git獲取/拉取(fetch/pull)更新程式碼
  • 使用拉取請求(Pull Request)進行程式碼檢視
  • 使用Git變基(rebase)更新程式碼
  • 使用Git提交揀選(cherry pick)功能在分之間複製改動
  • 解決合併衝突(merge conflict)
  • 撤銷改動
  • 忽略檔案
  • 使用Git歷史記錄比較檔案,分支或者獲取歷史版本

3. Git企業開發者篇:Git起源於開源軟體Linux的開發過程,因此在開源社群中廣泛流行,也因此很多企業開發者對其敬而遠之,感覺無法滿足企業開發的訴求。在這一篇中,我們將一起探討很多企業開發者更加關心的話題,比如:許可權管理,Repo分庫規劃,大規模團隊的Git工作流程,與敏捷/瀑布式等不同開發模式的配合,與持續整合/持續部署流水線的配合等對於企業開發非常重要的話題。幫助你將這個最棒的版本控制工具在你複雜的企業開發場景中使用起來。同時我們也將探討如何在大規模團隊中引入git的一些策略性思考。

  • 在VSTS/TFS上建立Git倉庫
  • 遷移已有程式碼庫到Git倉庫,如:SVN,TFVC
  • Git伺服器的許可權管理
  • Git分庫規則
  • 大規模團隊的Git配置管理流程
  • 使用Git支援敏捷/瀑布式開發流程
  • Git與持續交付(配置持續整合和持續部署)

4. Git分支策略篇:在瞭解了git強大的分支功能後,如何能夠設計出最為高效的分支策略就是困擾很多開發團隊的問題。在這一篇中我們將專門探討如何針對不同專案/產品的交付方式和團隊結構設計不同的分支策略,滿足各種規模團隊的不同訴求。

  • Git 分支策略設計的原則,除錯單元,部署單元,測試單元
  • Git 與團隊結構,產品/專案釋出特性,產品生命週期
  • Git 拉取請求與可靠持續交付
  • Git 分叉(Fork)與分支(Branch)的區別
  • 傳統分支模式與特性分支模式的比較
  • 特性分支+拉取請求+質量門模式
  • 混用分叉(fork)與特性分支(feature branch)

在這個教程中,我們將使用 Visual Studio Team Services (VSTS) /Team Foundation Server(TFS) 作為我們的Git伺服器。為什麼不採用GitHub?這一定是你在想的問題!因為這一系列文章的目標使用者是企業開發者,而VSTS提供了企業開發者所需要的全生命週期管理能力,我們在4個篇章逐漸深入的過程中你就會體會到這種端到端工具所帶來的好處。我一直都認為,一個企業的軟體交付效率中最重要的環節永遠的是編碼過程,因為這才是軟體交付的核心,沒有任何的管理實踐可以替代開發人員自由自在的編寫程式碼所帶來的效率提升。當然,如果你不使用VSTS/TFS也完全不必擔心,這個教程中的大多數內容同時適用於任何Git伺服器,包括GitHub, GitLab, BitBucket等大家常用的環境。

本系列教程將使用Markdown編寫,同時釋出於 DevOps 文件中心, DevOps公眾號和部落格,並且文件和所有的示例程式碼都將通過GitHub開源提供給社群。

相關文章:


請關注微信公眾號 【devopshub】,獲取更多關於DevOps研發運維一體化的資訊

qrcode_for_gh_b7c158df1fd1_430

相關文章