一篇文章帶你了解熱門版本控制系統——Git
這篇文章會介紹到關于版本控制的相關知識以及版本控制神器Git
我們可能在生活中經常會使用GitHub網頁去查詢一些開源的資源或者專案,GitHub就是基于Git而產生的平臺
接下來讓我們來細細道來~
Git是一門非常簡單的技術,但在實際開發中占有很重要的地位,請務必了解掌握
版本控制
在介紹Git之前我們先來介紹一個名詞:版本控制
版本控制概念
我們在標題已經提到了Git的最大作用:版本控制
那么我們先來了解一下版本控制:
- 版本控制是指對軟體開發程序中各種程式代碼、組態檔及說明檔案等檔案變更的管理,是軟體配置管理的核心思想之一,
通俗來說的話:
- 版本控制用于在開發的程序中管理我們的檔案
- 我們可以查看檔案、目錄或工程等內容的修改歷史,方便查看更改歷史記錄,備份以便恢復以前的版本,
例如我們所使用的產品有Version,版本常分為1.0,2.0...版本區分
但是我們所淘汰掉的版本是不會被直接拋棄洗掉,而是被像Git這樣的軟體所保存傳送到相關倉庫中
又或者我們的軟體開發之后,會由許多人進行開發修改
但是并非所有人的開發版本都會被保留使用,那些被淘汰的版本就會被像Git這樣的軟體所保存傳送到相關倉庫中
版本控制的優勢:
- 實作跨區域多人協同開發
- 追蹤和記載一個或者多個檔案的歷史記錄
- 組織和保護你的源代碼和檔案
- 統計作業量
- 并行開發、提高開發效率
- 跟蹤記錄整個軟體的開發程序
- 減輕開發人員的負擔,節省時間,同時降低人為錯誤
總而言之版本控制在我們的實際開發中占有很重要的地位!
多人開發就必須要使用版本控制,否則無法控制專案的開發狀態
版本控制工具
我們目前常用的控制工具大致分為五種:
- Git
- SVN(Subversion)
- CVS(Concurrent Versions System)
- VSS(Micorosoft Visual SourceSafe)
- TFS(Team Foundation Server)
其中SVN屬于版本控制的老大哥,但目前大部分公司已經不再使用
我們目前學的Git就屬于版本控制的主流工具,基本上大部分公司都在使用Git工具
版本控制分類
我們通常將版本控制分為三類:
- 本地版本控制
- 概念:
本地版本控制通常用于個人開發,我們將我們自己的專案進行版本控制,在迭代后將原版本的專案原件保留下來
記錄檔案每次的更新,可以對每個版本做一個快照,或是記錄補丁檔案,如RCS,
- 優缺點:
只能用于個人開發,多人開發在多臺計算機上,本地版本控制無法滿足
- **集中版本控制 **
- 概念:
集中版本控制通常用于團隊開發,將一個電腦作為主機,將所有需要保存的專案資料都存放在該電腦上,實作集中控制
協同開發者從服務器上同步更新或上傳自己的修改,如SVN
- 優缺點:
集中版本控制將所有資料保存在一臺電腦上,相當于單機存盤,保密性較高;但一旦計算機出現損壞,專案備份丟失,無法找回
- 分布式版本控制
- 概念:
分布式版本控制通常用于團隊開發,所有人都保存有專案的所有資料,實作分布式控制
- 優缺點:
保密性差,所有人都攜帶專案原始碼,具有一定安全隱患;但同時所有人都保存有原始碼,一臺電腦損壞并不影響專案的保存
Git和SVN的主要區別
我們在前面提及到了集中版本控制和分布式版本控制,實際上它們就分別對應著SVN和Git的控制方式
因而我們給出相關總結:
- 資料存放地址:SVN存放在一臺計算機;Git存放在所有計算機
- 專案開發方式:SVN需要聯網獲得主機上的專案,然后開發完后推送回原電腦;Git直接開發并比對研究即可
- 優缺點:SVN安全性低但容易丟失;Git不易丟失但安全性差
Git環境配置
首先我們來講解Git的安裝以及環境配置等資訊
Linux常用指令
在正式開始Git教學之前,我們來復習一些Linux相關指令:
# 表示注釋
cd : 改變目錄,
cd . . : 回退到上一個目錄,直接cd進入默認目錄
pwd : 顯示當前所在的目錄路徑,
ls(ll) : 都是列出當前目錄中的所有檔案,只不過ll(兩個ll)列出的內容更為詳細,
touch : 新建一個檔案 如 touch index.js 就會在當前目錄下新建一個index.js檔案,
rm: 洗掉一個檔案, rm index.js 就會把index.js檔案洗掉,
mkdir : 新建一個目錄,就是新建一個檔案夾,
rm -r : 洗掉一個檔案夾, rm -r src 洗掉src目錄
mv : 移動檔案, mv index.html src index.html 是我們要移動的檔案, src 是目標檔案夾,
reset : 重新初始化終端/清屏,
clear : 清屏,
history : 查看命令歷史,
help : 幫助,
exit : 退出,
Git下載與打開
- 官網下載安裝(官網地址:https://git-scm.com/)

安裝基本只需要修改安裝路徑和默認打開方式,其他選項一律默認即可
- 啟動Git
我們啟動一般有三種方法:
- Git Bash:Unix與Linux風格的命令列,使用最多,推薦最多
- Git CMD:Windows風格的命令列
- Git GUI:圖形界面的Git,不建議初學者使用,盡量先熟悉常用命令
我們通常選用Git Bash,采用Linux命令列來進行
下載Git之后,我們可以在檔案夾下直接點擊右鍵,可以看到出現有Git Bash的選項,點擊即可開啟

Git相關配置
我們在下面介紹一些Git的配置查看方法以及配置方法
首先我們需要知道查看Git配置的方法:
# 查看全部配置
git config -l
Git中存在有系統默認配置以及我們自己配置的資訊:
# 查看系統config
git config --system --list
# 查看當前用戶(global)配置
git config --global --list
我們在Git中有必須設定的兩個屬性:
# 這是非常重要的,因為每次Git提交都會使用該資訊,
# 設定名稱
git config --global user.name "QiuLuo"
# 設定郵箱
git config --global user.email [email protected]
如果你希望在單個專案中修改name和email可以去掉--global,表示不在全域中配置
Git基本理論
我們下面將從Git的資料傳遞方面講起,是很重要的地方哦~
Git四個區域
我們的Git會將我們的資料保存下來,作為版本保留下來
而保留的地點通常被我們劃分為四個區域:
- 作業目錄(Working Directory)
- 暫存區(Stage/Index)
- 資源庫(Repository或Git Directory)
- 遠程倉庫(Remote Directory)
這四個區域的轉換方式如下圖所示:

接下來讓我們依次介紹這四個區域:
- 作業目錄:第一層,主機存放代碼的區域
- 暫存區:第二層,用于臨時存放你的改動,事實上它只是一個檔案,保存即將提交到檔案串列資訊
- 資源庫:第三層,本地倉庫,安全存放資料的位置,保存有你提交到所有版本的資料,
- 遠程倉庫:第四層,托管代碼的服務器
Git區域作業流程
在我們代碼書寫完畢后,我們通常會將資料存放到資源庫
具體的Git流程如下:
1、在作業目錄中添加、修改檔案 [Git狀態:已修改(modified)]
2、將需要進行版本管理的檔案放入暫存區域 [Git狀態:已暫存(staged)]
3、將暫存區域的檔案提交到git倉庫 [Git狀態:已提交(committed)]
Git專案搭建
接下來我們開始Git專案搭建的講解~
本地倉庫搭建
我們前面說到,我們Git會將作業目錄的專案傳遞到本地倉庫上
那么首先我們需要學會創建本地倉庫:
- 本地倉庫創建
# 在當前目錄新建一個Git代碼庫(注意:會在當前頁面下產生一個隱藏目錄.git,需要打開隱藏目錄標簽才可以查看到)
$ git init
- 遠程倉庫克隆
# 克隆一個專案和它的整個代碼歷史(版本資訊) 提供一個url:https://gitee.com/kuangstudy/openclass.git
$ git clone [url]
Git常用六個方法
Git專案檔案的處理一共只有六個方法,用于控制四個區域的流動:
- add:作業目錄 -> 暫存區
- commit: 暫存區 -> 資源庫
- push: 資源庫 -> 遠程倉庫
- clone: 遠程倉庫 -> 資源庫
- checkout: 資源庫 -> 作業目錄
- pull: 遠程倉庫 -> 作業目錄

Git檔案操作
我們Git的專案操作實際上來說就是對檔案進行操作
下面我們來介紹Git操作檔案的一些方法以及檔案的四種常見狀態
Git檔案狀態
我們對檔案進行不同的操作或采用了不同的代碼之后,檔案的狀態會發生變化
我們通常將檔案的狀態分為四種:
- Untracked : 未跟蹤, 此檔案在檔案夾中, 但并沒有加入到git庫, 不參與版本控制. 通過git add 狀態變為Staged.
- Unmodify : 未修改, 即版本庫中的檔案快照內容與檔案夾中完全一致.
- Modified : 檔案已修改, 僅僅是修改, 并沒有進行其他的操作.
- Staged : 暫存狀態.
檔案之間的狀態轉換如下:
- Untracked通過git add狀態變為Staged.
- Unmodify如果被修改, 而變為Modified. 如果使用git rm移出版本庫, 則成為Untracked檔案
- Modified通過git add可進入暫存staged狀態, 使用git checkout 則丟棄修改過, 回傳到unmodify狀態
- Staged執行git commit則將修改同步到庫中, 這時庫中的檔案和本地檔案又變為一致, 檔案為Unmodify狀態.

Git檔案指令
Git提供了兩個方法可以查看單個檔案以及所有檔案的狀態:
# 查看指定檔案狀態
git status [filename]
# 查看所有檔案狀態
git status
同時Git也提供了兩個方法進行檔案型別的轉換:
# 添加所有檔案到暫存區
git add .
# 提交暫存區中的內容到本地倉庫 -m 提交資訊
git commit -m "訊息內容"
Git檔案忽略
在我們的實際開發中,有些檔案并不需要添加到本地倉庫中,因而Git為我們提供了一個配置類:
- .gitignore配置類
該檔案存在以下規則:
-
忽略檔案中的空行或以井號(#)開始的行將會被忽略,
-
可以使用Linux通配符,例如:星號(*)代表任意多個字符,問號(?)代表一個字符
-
如果名稱的最前面有一個感嘆號(!),表示例外規則,將不被忽略,
-
如果名稱的最前面是一個路徑分隔符(/),表示要忽略的檔案在此目錄下,而子目錄中的檔案不忽略,
-
如果名稱的最后面是一個路徑分隔符(/),表示要忽略的是此目錄下該名稱的子目錄,而非檔案(默認檔案或目錄都忽略),
我們給出相關示例:
#為注釋
#忽略所有 .txt結尾的檔案,這樣的話上傳就不會被選中!
*.txt
#但lib.txt除外
!lib.txt
#僅忽略專案根目錄下的TODO檔案,不包括其它目錄temp
/temp
#忽略build/目錄下的所有檔案
build/
#會忽略 doc/notes.txt 但不包括 doc/server/arch.txt
doc/*.txt
Gitee碼云
我們在實際開發中通常需要一個遠程倉庫來存放我們的專案版本
目前可靠的Git開發平臺有GitHub,Gitab,Gitee,我們在這里采用Gitee為例
- 注冊登錄碼云頁面

- 獲得SSH公鑰
# 首先我們采用Git獲得SSH公鑰
# 生成SSH公鑰 然后進入 C:\Users\Administrator\.ssh 目錄 可以查看相關資訊
ssh-keygen
- 設定本機系結SSH公鑰,實作遠程倉庫免密碼登錄

- 創建一個遠程倉庫

- 克隆至本地即可
$ git clone 遠程倉庫HTTPS
IDEA集成Git
這一小節我們來介紹如何在IDEA中使用Git保存資料
- 創建專案,系結Git
我們通常將我們遠程倉庫中的代碼直接拷貝復制到當前專案檔案夾下即可

此時我們的IDEA頁面會發生變化(紅色檔案為選中檔案):

- 修改檔案,逐步實作add,commit,push操作
我們可以選擇在Terminal控制臺輸出:

同樣可以選擇IDEA界面快捷輸出:

- 回傳Gitee頁面查看資料即可(注意:需要設定為公開才可更新成功)

Git分支
分支就是脫離于主線之外的內容
版本控制系統都以某種形式支持分支,一個分支代表一條獨立的開發線,讓我們在不影響主線的同時繼續作業
如果同一個檔案在合并分支時都被修改了則會引起沖突:
- 解決的辦法是我們可以修改沖突檔案后重新提交
- 但是我們需要選擇要保存某一人的代碼而舍棄另一個人的代碼
那么我們的日常開發應該是以哪種方式開發呢:
- master主分支應該非常穩定,用來發布新版本,一般情況下不允許在上面作業
- 作業一般情況下在新建的dev開發分支上作業,在分支穩定后可以合并到主分支master上來,
我們在這里給出Git分支的常用指令:
# 列出所有本地分支
git branch
# 列出所有遠程分支
git branch -r
# 新建一個分支,但依然停留在當前分支
git branch [branch-name]
# 新建一個分支,并切換到該分支
git checkout -b [branch]
# 合并指定分支到當前分支
$ git merge [branch]
# 洗掉分支
$ git branch -d [branch-name]
# 洗掉遠程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]
結束語
好的,關于Git的內容就介紹到這里,希望能為你帶來幫助!
附錄
該文章屬于學習內容,具體參考B站遇見狂神說的秦江老師的Git課程
這里附上視頻鏈接:1、前言之版本控制_嗶哩嗶哩_bilibili
我的博客即將同步至騰訊云開發者社區,邀請大家一同入駐:https://cloud.tencent.com/developer/support-plan?invite_code=27a6qjvve64g8
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/517583.html
標籤:其他
上一篇:【推薦】搜狗輸入法極簡皮膚
