這篇文章會介紹到關於版本控制的相關知識以及版本控制神器Git
我們可能在生活中經常會使用GitHub網頁去查詢一些開源的資源或者專案,GitHub就是基於Git而產生的平臺
接下來讓我們來細細道來~
Git是一門非常簡單的技術,但在實際開發中佔有很重要的地位,請務必瞭解掌握
在介紹Git之前我們先來介紹一個名詞:版本控制
我們在標題已經提到了Git的最大作用:版本控制
那麼我們先來了解一下版本控制:
通俗來說的話:
例如我們所使用的產品有Version,版本常分為1.0,2.0...版本區分
但是我們所淘汰掉的版本是不會被直接拋棄刪除,而是被像Git這樣的軟體所儲存傳送到相關倉庫中
又或者我們的軟體開發之後,會由許多人進行開發修改
但是並非所有人的開發版本都會被保留使用,那些被淘汰的版本就會被像Git這樣的軟體所儲存傳送到相關倉庫中
版本控制的優勢:
總而言之版本控制在我們的實際開發中佔有很重要的地位!
多人開發就必須要使用版本控制,否則無法控制專案的開發狀態
我們目前常用的控制工具大致分為五種:
其中SVN屬於版本控制的老大哥,但目前大部分公司已經不再使用
我們目前學的Git就屬於版本控制的主流工具,基本上大部分公司都在使用Git工具
我們通常將版本控制分為三類:
本地版本控制通常用於個人開發,我們將我們自己的專案進行版本控制,在迭代後將原版本的專案原件保留下來
記錄檔案每次的更新,可以對每個版本做一個快照,或是記錄修補程式檔案,如RCS。
只能用於個人開發,多人開發在多臺計算機上,本地版本控制無法滿足
集中版本控制通常用於團隊開發,將一個電腦作為主機,將所有需要儲存的專案資料都存放在該電腦上,實現集中控制
協同開發者從伺服器上同步更新或上傳自己的修改,如SVN
集中版本控制將所有資料儲存在一臺電腦上,相當於單機儲存,保密性較高;但一旦計算機出現損壞,專案備份丟失,無法找回
分散式版本控制通常用於團隊開發,所有人都儲存有專案的所有資料,實現分散式控制
保密性差,所有人都攜帶專案原始碼,具有一定安全隱患;但同時所有人都儲存有原始碼,一臺電腦損壞並不影響專案的儲存
我們在前面提及到了集中版本控制和分散式版本控制,實際上它們就分別對應著SVN和Git的控制方式
因而我們給出相關總結:
首先我們來講解Git的安裝以及環境設定等資訊
在正式開始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 Bash,採用Linux命令列來進行
下載Git之後,我們可以在資料夾下直接點選右鍵,可以看到出現有Git Bash的選項,點選即可開啟
我們在下面介紹一些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流程如下:
1、在工作目錄中新增、修改檔案 [Git狀態:已修改(modified)]
2、將需要進行版本管理的檔案放入暫存區域 [Git狀態:已暫存(staged)]
3、將暫存區域的檔案提交到git倉庫 [Git狀態:已提交(committed)]
接下來我們開始Git專案搭建的講解~
我們前面說到,我們Git會將工作目錄的專案傳遞到本地倉庫上
那麼首先我們需要學會建立本地倉庫:
# 在當前目錄新建一個Git程式碼庫(注意:會在當前頁面下產生一個隱藏目錄.git,需要開啟隱藏目錄標籤才可以檢視到)
$ git init
# 克隆一個專案和它的整個程式碼歷史(版本資訊) 提供一個url:https://gitee.com/kuangstudy/openclass.git
$ git clone [url]
Git專案檔案的處理一共只有六個方法,用於控制四個區域的流動:
我們Git的專案操作實際上來說就是對檔案進行操作
下面我們來介紹Git操作檔案的一些方法以及檔案的四種常見狀態
我們對檔案進行不同的操作或採用了不同的程式碼之後,檔案的狀態會發生變化
我們通常將檔案的狀態分為四種:
檔案之間的狀態轉換如下:
Git提供了兩個方法可以檢視單個檔案以及所有檔案的狀態:
# 檢視指定檔案狀態
git status [filename]
# 檢視所有檔案狀態
git status
同時Git也提供了兩個方法進行檔案型別的轉換:
# 新增所有檔案到暫存區
git add .
# 提交暫存區中的內容到本地倉庫 -m 提交資訊
git commit -m "訊息內容"
在我們的實際開發中,有些檔案並不需要新增到本地倉庫中,因而Git為我們提供了一個設定類:
該檔案存在以下規則:
忽略檔案中的空行或以井號(#)開始的行將會被忽略。
可以使用Linux萬用字元。例如:星號(*)代表任意多個字元,問號(?)代表一個字元
如果名稱的最前面有一個感嘆號(!),表範例外規則,將不被忽略。
如果名稱的最前面是一個路徑分隔符(/),表示要忽略的檔案在此目錄下,而子目錄中的檔案不忽略。
如果名稱的最後面是一個路徑分隔符(/),表示要忽略的是此目錄下該名稱的子目錄,而非檔案(預設檔案或目錄都忽略)。
我們給出相關範例:
#為註釋
#忽略所有 .txt結尾的檔案,這樣的話上傳就不會被選中!
*.txt
#但lib.txt除外
!lib.txt
#僅忽略專案根目錄下的TODO檔案,不包括其它目錄temp
/temp
#忽略build/目錄下的所有檔案
build/
#會忽略 doc/notes.txt 但不包括 doc/server/arch.txt
doc/*.txt
我們在實際開發中通常需要一個遠端倉庫來存放我們的專案版本
目前可靠的Git開發平臺有GitHub,Gitab,Gitee,我們在這裡採用Gitee為例
# 首先我們採用Git獲得SSH公鑰
# 生成SSH公鑰 然後進入 C:\Users\Administrator\.ssh 目錄 可以檢視相關資訊
ssh-keygen
$ git clone 遠端倉庫HTTPS
這一小節我們來介紹如何在IDEA中使用Git儲存資料
我們通常將我們遠端倉庫中的程式碼直接拷貝複製到當前專案資料夾下即可
此時我們的IDEA頁面會發生變化(紅色檔案為選中檔案):
我們可以選擇在Terminal控制檯輸出:
同樣可以選擇IDEA介面快捷輸出:
分支就是脫離於主線之外的內容
版本控制系統都以某種形式支援分支,一個分支代表一條獨立的開發線,讓我們在不影響主線的同時繼續工作
如果同一個檔案在合併分支時都被修改了則會引起衝突:
那麼我們的日常開發應該是以哪種方式開發呢:
我們在這裡給出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