Git&GitHub(一)
版本控制
版本控制應該具備的功能
- 協同修改
- 多人並行不悖的修改服務器端的同一個文件。
- 數據備份
- 不僅保存目錄和文件的當前狀態,還能夠保存每一個提交過的歷史狀態。
- 版本管理
- 在保存每一個版本的文件信息的時候要做到不保存重複數據,以節約存儲空
間,提高運行效率。這方面 SVN 採用的是增量式管理的方式,而 Git 採取了文
件系統快照的方式。
- 在保存每一個版本的文件信息的時候要做到不保存重複數據,以節約存儲空
- 權限控制
- 對團隊中參與開發的人員進行權限控制。
- 對團隊外開發者貢獻的代碼進行審覈——Git 獨有。
- 歷史記錄
- 查看修改人、修改時間、修改內容、日誌信息。
- 將本地文件恢復到某一個歷史狀態。
- 分支管理
- 允許開發團隊在工作過程中多條生產線同時推進任務,進一步提高效率。
集中式版本控制工具和分佈式版本控制工具
- 集中式版本控制工具
主要是客戶端和服務器來進行交互,有單點故障的風險;
- 分佈式版本控制工具
在本地就能完成完整的版本控制,本地上有完整的提交歷史,提交過的所有歷史版本在本地都有存儲,任何的一個人都可以把數據傳給別人,這樣的話,就很好的避免了單點故障的風險;例如如果張三的數據丟失了,那麼拿李四的數據來進行恢復就可以了;
這樣的話,能夠避免單點故障;一般都會有一個本地庫和一個遠程庫;
Git的簡介
Git的官網
Git 的優勢
- 大部分操作在本地完成,不需要聯網
- 完整性保證
- 儘可能添加數據而不是刪除或修改數據
- 分支操作非常快捷流暢
- 與 Linux 命令全面兼容
Git的安裝
- 安裝到一個非中文且沒有空格的目錄下:
- 使用了默認的設置
- 使用Vim的本文編輯器
- 這裏我是使用了可以使用windows命令來進行操作的選項
- 使用了默認值
- 行末的換行符,這裏使用了默認的方式
- 執行Git命令時的默認終端,這裏選用了默認值
- 同樣這裏也是使用了默認值
- 此時爲安裝的過程:
- 如出現了下面的情況時,則表示Git安裝成功
以及:
Git在本地的結構
Git和代碼託管中心
代碼託管中心的任務:維護遠程庫
- 局域網環境下
- GitLab 服務器
- 外網環境下
- GitHub
- 碼雲
本地庫和遠程庫
團隊內部協作
首先項目經理在本地上創建了一個本地庫,爲了把代碼託管到遠程代碼託管中心,我們在代碼託管中心創建了一個遠程庫,遠程庫剛創建好是空的,只有本地庫是有內容的,文件和目錄現在還都在本地庫當中(包括歷史記錄),此時,我們就需要做一個推送(push)的操作,把本地庫當中的內容推送到遠程庫當中去;而開發人員需要把遠程庫當中的內容給克隆下來,克隆的這個操作不光是下載遠程庫裏面的東西,還會把本地庫給初始化好,然後開發人員把改好的代碼提交到本地庫,然後再推送到遠程庫;開發人員直接推送給遠程庫是推送不了的,首先開發人員得加入團隊,它加入團隊就有了權限了;項目經理再把修改後的代碼給拉取(pull)下來!
跨團隊協作
在開發的時候,有時候會有這樣的一個場景:項目經理給開發人員分配了一個任務,但是這個開發人員做不了,但是這個開發人員的一個好朋友可以做,此時這個開發人員就可以尋求這個好朋友的幫助,但是這個好朋友不是這個公司的員工,這個好朋友就可以把這個遠程庫給fork一份,給複製一份,此時這個遠程庫爲這個好朋友的遠程庫,然後這個好朋友把自己的遠程庫給克隆下來,然後做一些修改,然後再推送到自己的遠程庫當中去,這個好朋友會去做一個拉取請求,這個項目經理來去做一個審覈,如果審覈通過了的話,那麼就會在線去做一個merge合併的操作;那麼此時項目經理的遠程庫當中就有了這位好朋友修改後的代碼了;然後,項目經理再把遠程庫當中修改的代碼給拉取下來: