深刻 Git 和開發規範

文中內容部分參考來源:《GitHub 入門與實踐》——【日】大塚弘記git

使用 Git 會給開發帶來哪些變化?

Git 的出現使得當今世界的軟件開發帶來了翻天覆地的變化。此前大部分的協同工做軟件逐漸退出歷史舞臺,Git 工做流上位,變革了團隊開發的協做方式。程序員

能看到更多其餘團隊的軟件

Git 並不侷限於開發團隊內部使用,只須要將倉庫添加 watch ,就能夠跟蹤項目進度,看到別的團隊天天都在開發什麼功能。若是能夠,你還能夠進一步交流,分割公用的庫,或者參與到項目開發,相互優化,成了不一樣開發者團隊間協做的美談。面試

社會化編程(Social Coding)

Git 的出現,爲開源世界帶來了社會化編程的概念,軟件開發者所以擁有了真正意義上的源代碼,世界上任何人均可以比之前更加容易的獲取源代碼,將其自由更改並加以公開。編程

在 相似 GitHub 的平臺出現以前,軟件開發中只有一小部分人擁有更改源代碼的權利,這個特權階級掌握着開發的主導權。開發者在改寫、發佈源代碼以外,每每須要花更多時間和精力去說服這個特權階級。這致使了許多起初效率很高的流行軟件愈加保守化,最終被時代所拋棄。緩存

可是,GitHub 的出現爲軟件開發者的世界帶來了真正意義上的「民主」,讓全部人都平等地擁有了更改源代碼的權利。這在軟件開發領域是一場巨大的革命。而革命領導者 GitHub 的口號即是「社會化編程」。服務器

爲何須要社會化編程

當今的 IT 業界已經沒有了終身僱傭制,人才流動性日益增大。能夠說,每月咱們都能在一些著名開發者的博客中看到這種現象: 月末剛發佈「辭職了」的消息,月初就又「入職了」。測試

您是程序員的面試官,二者之間您會選擇哪一位呢?fetch

能查看到之前所寫代碼的程序員 or 沒法查看的程序員 精通最新軟件的程序員 or 不精通的程序員 對語言或軟件差別帶來的不一樣文化有所理解的程序員 or 不理解的程序員優化

爲了避免成爲後一種程序員,理解社會化編程相當重要。spa

除了 Git 三連,實際工做中還有哪些經常使用操做

若是你平時使用命令行提交代碼,那麼必定很熟悉 Git 三連:

git add . // 向暫存區添加文件

git commit -m 'xxx' // 保存倉庫歷史記錄

git push // 推送更改到遠程
複製代碼

git log--查看歷史提交日誌

git log命令能夠查看以往倉庫中提交的日誌, 包括能夠查看什麼人在何時進行了提交或合併,以及操做先後有怎樣的差異。

只顯示提交信息的第一行:

git log --pretty=short
複製代碼

顯示文件的改動:

git log <file>
複製代碼

查看文件更改先後的差異:

git diff
複製代碼

git branch--顯示分支一覽表

branch 命令能夠將分之名以列表的形式展現,同時能夠確認當前所在的分支名

查看遠程分支列表:

git branch -a
複製代碼

git checkout--建立、切換分支,放棄本地修改

checkout 命令在分支操做上常用,同時支持本地文件的操做

建立並切換到新分支:

git checkout <branch> // 切換到分支

git chekcout - // 切換到上一次使用的分支

git checkout -b <branch> // 建立並切換
複製代碼

放棄某個文件的修改:

git checkout <file>

git checkout . // 放棄全部文件修改
複製代碼

git reset--回退歷史版本

Git 的另外一特徵即是能夠靈活操做歷史版本。藉助分散倉庫的優點,能夠在不影響其餘倉庫的前提下對歷史版本進行操做。

回退到某個歷史提交:

git reset <commit> // 回退到某個版本,不回退文件
git reset --hard <commit> // 回退到某個版本,並回退文件
複製代碼

git merge--合併分支

當開發到必定程度後,須要將開發分支的代碼合併到測試或者主幹分支,這時候,須要用到 merge 命令。

git merge <branch> // 合併某個分支到當前分支
複製代碼

git pull 的時候,發生了什麼?

不少人不理解 Git 的拉取pull和獲取fetch的區別,其實當執行 git pull 的時候,經歷了兩個步驟,一個是獲取fetch,並自動合併merge

而獲取則支持單純的執行fetch,並不會自動合併。

以下例子:

git fetch origin master:temp //從遠程倉庫 master 獲取,並創建本地分支 temp

git diff temp //對比修改

git merge temp //合併tmp
複製代碼

修改了文件,忽然發現分支不對,怎麼辦?

有時候當咱們修改了文件後發現,分支忘了切回開發分支了,除了笨笨的複製文件,而後切換回正確分支,再恢復代碼,還有更好的操做嗎?

執行 git stash 暫存修改到緩存後,切換到正確分支,並將修改出棧:

git stash // 暫存修改

git checkout <branch> // 切換分支

git stash pop // 將修改出棧(恢復)
複製代碼

Git分支管理規範

master 主分支

做爲正式環境分支(穩定版),只讀,不可修改,可被merge 正式服務器應當切換爲此分支

release 預發佈分支

做爲驗收環境分支,不可修改,可被merge 驗收或正式服務器上線前應當切換爲此分支

develop 測試分支

做爲測試環境分支,可修改,可被merge 測試服務器應當切換爲此分支

feature/ 開發(功能)分支

做爲開發環境分支,本地開發和開發服務器應當切換爲此分支

hotfix/ 修復BUG分支

做爲修復BUG分支,應從線上或測試分支拉取一個hotfix分支,BUG解決後merge到測試或線上分支

Git工做流模型推薦

相關文章
相關標籤/搜索