做爲一名開發者,除了我的開發能力外,團隊協做開發也必不可少。多人協做開發一個軟件項目,如何管理團隊開發的進度,如何控制軟件版本,這些問題的解決該如何解決?那不得不說到---Gitgit
一.Git的簡介github
Git是一個版本管理工具,它有協同修改、數據備份、版本管理、權限控制、歷史記錄、分支管理等功能。
協同修改:多人並行不悖的修改服務器端的同一個文件。
數據備份:不只保存目錄和文件的當前狀態,還可以保存每個提交過的歷史狀態。
版本管理:在保存每個版本的文件信息的時候要作到不保存重複數據,以節約存儲空間,提升運行效率。這方面 SVN 採用的是增量式管理的方式,而 Git 採起了文件系統快照的方式。
權限控制:對團隊中參與開發的人員進行權限控制。除此以外,能夠對團隊外開發者貢獻的代碼進行審覈,這是git獨有的一個功能
歷史記錄;查看修改人、修改時間、修改內容、日誌信息,將本地文件恢復到某一個歷史狀態,不得不說這個功能太讚了,後面會講到如何在IDE中使用這個功能。
分支管理:容許開發團隊在工做過程當中多條生產線同時推動任務,進一步提升效率。
Git是由Linux之父---Linus用C語言開發了一個分佈式版本控制系統,並將Linux也放到上面託管。
Git的官網:https://git-scm.com/,由於Git是由Linus開發的,所以Git的命令與Linux命令全面兼容,這也是Git的一大優點服務器
二.Git的基礎知識分佈式
說了這麼多的理論,下面結合Git的實際操做來進一步感覺Git的魅力吧工具
1.Git的安裝gitlab
首先,去Git的官網https://git-scm.com/,下載Git的安裝包,並打開安裝包,並安裝下面步驟安裝ui
以上,就是Git的安裝過程,在這裏解釋下,Git Bash其實就是Git的命令行窗口spa
2.Git的結構操作系統
如上圖所示,Git分爲四個部分,工做區、暫存區、本地庫、遠程庫,這四個部分均可以用來存儲數據
從工做區到遠程庫
平時寫代碼是在工做區(IDE環境下),寫完後能夠添加到暫存區,暫存區起到了一個臨時存儲的做用,而後提交到本地庫,本地庫的代碼就會發生變化,最後推送到遠程庫,通過這一系列的操做後,遠程庫的代碼和工做區的代碼就保持一致的
從遠程庫到本地庫
咱們的代碼通常託管在遠程庫裏,常常須要進行的操做就是從遠程庫克隆代碼到本地庫,而後將本地庫的代碼導入到IDE環境的工做區
那麼,平時常常聽到github、gitlab和這些有什麼聯繫呢?
其實,github和gitlab都是代碼託管中心,它們的做用是維護遠程庫
github是處於外網環境下,在它上面建立的遠程庫是公開的,私密性很差,建立私有的遠程庫是須要付費的。所以,有些公司會在局域網的環境下免費搭建gitlab,能夠保證遠程庫的私有性
從上面能夠看出本地庫與遠程庫進行交互,是在Git常見的操做,下面介紹Git的本地庫與遠程庫交互的方式
3.本地庫和遠程庫的交互方式
本地庫和遠程庫的交互方式分爲團隊內部協做、 跨團隊協做
3.1團隊內部協做
上面介紹了團隊中的成員進行協同開發時,使用進行版本控制的過程,下面舉一個場景來講明整個過程
假如小黑、小白如今要協同開發一個新項目,小黑在代碼託管中心建立一個遠程庫,在本地的工做區寫好代碼,提交到本地庫並push到遠程庫中,這時小白要在小黑開發的基礎上繼續開發,就會先將遠程庫的內容clone到本身的本地庫,而後在本地修改好了後,提交到本身的本地庫,並push到小黑的遠程庫,但這個過程須要小黑邀請小白加入團隊
3.2跨團隊協做
仍是以一個場景來講明
嶽不羣給令狐沖分配了一個開發任務,令狐沖以爲本身作不了,便找東方不敗來幫忙。東方不敗便將嶽不羣的遠程庫fork(複製)到本身的遠程庫,而後clone到本身的本地庫進行修改,修改完後,push到本身的遠程庫。接下來,東方不敗發起pull request,嶽不羣看到這個請求後,進行審覈,審覈經過後,便將東方不敗的遠程庫merge(合併)到本身的遠程庫
好了,說了這麼這麼多,來實際操做下Git吧,Git的實際操做分爲兩部分--Git的命令行操做和Git的圖形化操做(以Eclipse爲例操做),在順序上先介紹Git的命令行操做,這樣有助於理解在圖形化界面操做Git背後發生了什麼
三.Git的命令行操做
Git的操做分爲本地庫操做和遠程庫操做,先說本地庫操做
3.1本地庫操做
安裝好Gith後,以下圖點擊進入Git的命令行窗口
命令行
這裏介紹Git的幾個經常使用命令
3.1.1 本地庫初始化
命令:git init
Git的命令與linxu命令兼容,這裏咱們進入D盤目錄下建立一個TestGit的目錄,並做爲本地庫初始化
在初始化的同時,也建立一個主分支,分支的概念後面再介紹
那麼,初始化本地庫有什麼效果呢?
能夠看到再本地庫目錄裏多了.git目錄
進入.gti目錄,能夠看到裏面存放了git的相關配置文件
注意:.git 目錄中存放的是本地庫相關的子目錄和文件,不要刪除,也不要胡
亂修改。
3.1.2設置簽名
爲何須要簽名呢?
在開發中,可能有多我的對遠程庫的內容進行修改,爲了標識每一次修改是由誰產生的,故須要設置簽名
如:
用戶名:tom Email 地址:123456789@qq.com(這個Email起到標識身份的做用,並不會實際地發郵件) 做用:區分不一樣開發人員的身份
簽名分爲項目級別/倉庫級別和系統用戶級別
項目級別/倉庫級別僅在當前本地庫範圍內有效,系統用戶級別在登陸當前操做系統的用戶範圍有效
設置項目級別/倉庫級別簽名
命令:git config user.name 用戶名
git config user.email 郵箱
進入本地庫所在的目錄執行命令
那麼,在哪裏保存簽名信息呢?———在./.git/config 文件
設置項目級別/倉庫級別簽名的命令:
git config --global user.name tom_glb
git config --global user.email goodMorning_pro@atguigu.com
信息保存位置:~/.gitconfig 文件
二者的級別優先級
就近原則:項目級別優先於系統用戶級別,兩者都有時採用項目級別
的簽名
若是隻有系統用戶級別的簽名,就以系統用戶級別的簽名爲準
兩者都沒有不容許沒有,不然push到遠程倉庫會出錯
3.1.3常見操做
a.a.狀態查看
git status
查看工做區、暫存區狀態
b.添加
git add [file name]
將工做區的「新建/修改的文件」添加到暫存區
c.提交
git commit -m "commit message" [file name]
將暫存區的內容提交到本地庫,-m後面內容是這次操做地標識信息(日誌信息),放在被提交地文件中
操做演示:
d.查看(本地庫)歷史記錄
git log
能夠看到提交的信息