爲何要寫這樣一個面向企業開發者的Git教程?這個問題也困擾我本身好久。其實我使用git的時間也不短了,可是就和正在閱讀本文的每一位同樣,經常使用的基本就是那麼幾個(git clone, git push)等等。然而git其實有着很是強大的功能,若是不能系統的掌握使用這些功能的技能,咱們很容易在一些場景下不知所措,好比如下這些:html
– 拉取了共享分支後出現了衝突,怎麼合併?
– 到底該不應使用分支?
– 修改了分支上的代碼,可是須要臨時切換到另一個分支上工做,但是當前的代碼還不能提交,怎麼辦?
– 團隊開始使用拉取請求(Pull Request)了?這是個什麼鬼?
– 改了代碼,直接運行git commit爲啥就不工做呢?
– 怎麼樣才能把遠程分支下載到本地開始工做?
– 變基(rebase)和合並(merge)到底有什麼區別?
– 我須要別人分支上的幾個改動,怎麼才能只獲取這幾個改動而不合並全部代碼?
– 如何比較文件,分支?如何回退代碼?
– 咱們的代碼庫很大,如何才能正確切換到Git?
– Git如何可以幫助咱們更安全,高效的發佈?git
在互聯網上其實有不少的Git教程,可是太過零散,不成體系,特別是沒有考慮到企業開發者所面臨的許多具體而實際的問題。我但願經過這套教程,解決企業開發者在使用Git過程當中所遇到的諸多疑問,讓更多的團隊可以享受到Git所帶來的良好開發體驗,讓你們可以真正在大規模複雜項目中將Git的優點發揮出來。我會將咱們在給各類企業進行研發管理諮詢中所積累的經驗以及咱們的解決方案融入到這套教程中,相信其中的不少場景必定會對你有所幫助。github
這個教程會分紅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的一些策略性思考。markdown
- 在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等你們經常使用的環境。ssh
本系列教程將使用Markdown編寫,同時發佈於 DevOps 文檔中心, DevOps公衆號和博客,而且文檔和全部的示例代碼都將經過GitHub開源提供給社區。分佈式
相關文章:
- 微軟研發雲全家桶VSTS登錄中國
- Markdown/reST 文檔發佈流水線
- 幾款好用的Git GUI客戶端工具
- 使用 SSH 鏈接 TFS/VSTS 的GIT倉庫
- GitHub + VSTS 開源代碼雙向同步
請關注微信公衆號 【devopshub】,獲取更多關於DevOps研發運維一體化的信息