Git 是一個開源的分佈式版本控制系統,用於敏捷高效地處理任何或小或大的項目。php
Git 是 Linus Torvalds 爲了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。html
Git 與經常使用的版本控制工具 CVS, Subversion 等不一樣,它採用了分佈式版本庫的方式,沒必要服務器端軟件支持。linux
有關以上特性的詳細解釋,請查看Pro Git的Git基礎章節。git
版本控制
和多人協做
開發。分支特性
,因此可以靈活地以不一樣的工做流
協同開發。分佈式版本控制系統
,即便協做服務器宕機,也能繼續提交代碼或文件到本地倉庫,當協做服務器恢復正常工做時,再將本地倉庫同步到遠程倉庫。pull request
操做來通知其餘團隊成員,其餘團隊成員可以review code後再合併代碼。Git Flow是構建在Git之上的一個組織軟件開發活動的模型,是在Git之上構建的一項軟件開發最佳實踐。github
Git Flow有主分支和輔助分支兩類分支。其中主分支用於組織與軟件開發、部署相關的活動;輔助分支組織爲了解決特定的問題而進行的各類開發活動。web
主分支是全部開發活動的核心分支。全部的開發活動產生的輸出物最終都會反映到主分支的代碼中。主分支分爲master分支和develop分支。服務器
輔助分支是用於組織解決特定問題的各類軟件開發活動的分支。輔助分支主要用於組織軟件新功能的並行開發、簡化新功能開發代碼的跟蹤、輔助完成版本發佈工做以及對生產代碼的缺陷進行緊急修復工做。這些分支與主分支不一樣,一般只會在有限的時間範圍內存在。app
輔助分支包括:分佈式
以上這些分支都有固定的使用目的和分支操做限制。從單純技術的角度說,這些分支與Git其餘分支並無什麼區別,但經過命名,咱們定義了使用這些分支的方法。ide
使用規範:
feature/*
若有幾個同事同時開發,須要分割成幾個小功能,每一個人都須要從develop中拉出一個feature分支,可是每一個feature顆粒要儘可能小,由於它須要咱們能儘早merge回develop分支,不然衝突解決起來就沒完沒了。同時,當一個功能由於各類緣由不開發了或者放棄了,這個分支直接廢棄,不影響develop分支。
使用規範:
release/*
,「*」以本次發佈的版本號爲標識release分支是爲發佈新的產品版本而設計的。在這個分支上的代碼容許作小的缺陷修正、準備發佈版本所需的各項說明信息(版本號、發佈時間、編譯時間等)。經過在release分支上進行這些工做可讓develop分支空閒出來以接受新的feature分支上的代碼提交,進入新的軟件開發迭代週期。
當develop分支上的代碼已經包含了全部即將發佈的版本中所計劃包含的軟件功能,而且已經過全部測試時,咱們就能夠考慮準備建立release分支了。而全部在當前即將發佈的版本以外的業務需求必定要確保不能混到release分支以內(避免由此引入一些不可控的系統缺陷)。
成功的派生了release分支,並被賦予版本號以後,develop分支就能夠爲「下一個版本」服務了。所謂的「下一個版本」是在當前即將發佈的版本以後發佈的版本。版本號的命名能夠依據項目定義的版本號命名規則進行。
使用規範:
hotfix/*
除了是計劃外建立的之外,hotfix分支與release分支十分類似:均可以產生一個新的可供在生產環境部署的軟件版本。
當生產環境中的軟件遇到了異常狀況或者發現了嚴重到必須當即修復的軟件缺陷的時候,就須要從master分支上指定的TAG版本派生hotfix分支來組織代碼的緊急修復工做。
這樣作的顯而易見的好處是不會打斷正在進行的develop分支的開發工做,可以讓團隊中負責新功能開發的人與負責代碼緊急修復的人並行的開展工做。
全部使用了本規範的項目,必須嚴格規範操做,不然不予以合併代碼、提測、打包上線等後續操做。
git config -l
主版本號.次版本號.修訂號
,如2.1.13
。(遵循GitHub語義化版本命名規範)WorkSpace: 工做區
Index/Stage: 暫存區 "git add ." 命令解釋: 把新建立文件(Untracked files 變成 Changes to be commited) 在暫存區域生成了快照,等待被提交
Repository: 本地倉庫 git commit -m "提交到本地倉庫" (只有暫存區域的文件(即:文件狀態爲「Changes to be committed」)纔會被提交 )
Remote: 遠程倉庫 git pull origin / git push origin master:master (推送本地倉庫分支代碼到遠程分支)
是什麼
和爲何
,而不是如何作爲何要約定註釋格式? 1. 加快 Reviewing Code 的過程 2. 幫助咱們寫好 release note 3. 5年後幫你快速想起來某個分支,tag 或者 commit 增長了什麼功能,改變了哪些代碼 4. 讓其餘的開發者在運行
git blame
的時候想跪謝 5. 其餘小夥伴不會出現想抽你的衝動 6. 總之,一個好的提交信息,會幫助你提升項目的總體質量看看 Linus Torvalds 在Linux項目上寫的提交註釋:https://github.com/torvalds/linux/commits/master以及 Linus Torvalds 關於提交註釋的討論:https://github.com/torvalds/linux/pull/17#issuecomment-5659933
推薦工具