天天看點

Git學習

title: Git學習

date: 2020-12-17 11:29:58

tags: Git

版本控制

版本控制(Revision control)是一種在開發的過程中用于管理我們對檔案、目錄或工程等内容的修改曆史,友善檢視更改曆史記錄,備份以便恢複以前的版本的軟體工程技術。

實作跨區域多人協同開發

追蹤和記載一個或者多個檔案的曆史記錄

組織和保護你的源代碼和文檔

統計工作量

并行開發、提高開發效率

跟蹤記錄整個軟體的開發過程

減輕開發人員的負擔,節省時間,同時降低人為錯誤

簡單說就是用于管理多人協同開發項目的技術

版本控制分類

本地版本控制

記錄檔案每次的更新,可以對每個版本做一個快照,或是記錄更新檔檔案,适合個人用,如RCS

集中版本控制 SVN

所有的版本資料都儲存在伺服器上,協同開發者從伺服器上同步更新或上傳自己的修改。所有的版本資料都存在伺服器上,使用者的本地隻有自己以前同步的版本,如果不連網的話,使用者就看不到曆史版本,也就無法切換版本驗證問題,或在不同的分支工作。而且,所有資料都儲存在單一的伺服器上,有很大的風險這個伺服器會損壞,這樣就會丢失所有的資料,當然也可以定期備份。代表産品:SVN,CVS,VSS

分布式版本控制 GIT

每個人都擁有全部的代碼,存在安全隐患。

所有版本倉庫資訊全部同步到本地的每個使用者,這樣就可以在本地檢視所有版本曆史,可以離線在本地送出,隻需在連網時push到相應的伺服器或其他使用者那裡。由于每個使用者那裡儲存的都是所有版本資料,隻要有一個使用者的裝置沒有問題就可以恢複所有的資料,但這增加了本地存儲空間的占用。但是不會因為伺服器損壞或者網絡問題,造成不能工作的情況。

Git與SVN的主要差別

SVN是集中式版本控制系統,版本庫是集中放在中央伺服器的,而工作的時候,用的都是自己的電腦,

從中央伺服器得到最新的版本 --> 開始工作+完成工作 -->推送到中央伺服器。

Git是分布式版本控制系統,沒有中央伺服器,每個人的電腦就是一個完整的版本庫,工作的時候不需要聯網了,因為版本都在自己電腦上。

自己在電腦上改了檔案A / 其他人也在電腦上改了檔案A,你們兩之間隻需把各自的修改推送給對方,就可以互相看到對方的修改了。Git可以直接看到更新了哪些代碼和檔案!

擴充:常用Linux指令

Command

cd

改變目錄

cd . .

回退到上一個目錄,直接cd進入預設目錄

pwd

顯示目前所在的目錄路徑

touch

建立一個檔案 如 touch index.js

就會在目前目錄下建立一個index.js檔案。

rm

删除一個檔案, rm index.js 就會把index.js檔案删除

mkdir

建立一個目錄,就是建立一個檔案夾

rm -r

删除一個檔案夾, rm -r src 删除src目錄

mv

移動檔案

reset

重新初始化終端/清屏

clear

清屏

history

檢視指令曆史

help

幫助

exit

退出

#表示注釋

Git配置

檢視配置:

配置檔案:

[Git安裝目錄]\etc\gitconfig Git 安裝目錄下的 gitconfig --system 系統級

C:\Users\Administrator\ .gitconfig 目前登入使用者的配置 --global 全局

必要配置:

三個區域

Git本地有三個工作區域:工作目錄(Working Directory)、暫存區(Stage/Index)、資源庫(Repository或Git Directory)。如果在加上遠端的git倉庫(Remote Directory)就可以分為四個工作區域。

Git學習
工作流程

git的工作流程一般是這樣的:

1、在工作目錄中添加、修改檔案;

2、将需要進行版本管理的檔案放入暫存區域;

3、将暫存區域的檔案送出到git倉庫。

是以,git管理的檔案有三種狀态:已修改(modified),已暫存(staged),已送出(committed)

Git學習
Git項目搭建

建立工作目錄與常用指令

工作目錄(WorkSpace)一般就是你希望Git幫助你管理的檔案夾,可以是你項目的目錄,也可以是一個空目錄,建議不要有中文

常用指令

Git學習

本地倉庫搭建

建立全新的倉庫,

克隆遠端倉庫

Git檔案操作

檔案的四種狀态

版本控制就是對檔案的版本控制,要對檔案進行修改、送出等操作,首先要知道檔案目前在什麼狀态,不然可能會送出了現在還不想送出的檔案,或者要送出的檔案沒送出上。

Untracked: 未跟蹤, 此檔案在檔案夾中, 但并沒有加入到git庫, 不參與版本控制. 通過git add 狀态變為Staged

Unmodify: 檔案已經入庫, 未修改, 即版本庫中的檔案快照内容與檔案夾中完全一緻. 這種類型的檔案有兩種去處, 如果它被修改, 而變為Modified. 如果使用git rm移出版本庫, 則成為Untracked檔案

Modified: 檔案已修改, 僅僅是修改, 并沒有進行其他的操作. 這個檔案也有兩個去處, 通過git add可進入暫存staged狀态, 使用git checkout 則丢棄修改過, 傳回到unmodify狀态, 這個git checkout即從庫中取出檔案, 覆寫目前修改 !

Staged: 暫存狀态. 執行git commit則将修改同步到庫中, 這時庫中的檔案和本地檔案又變為一緻, 檔案為Unmodify狀态. 執行git reset HEAD filename取消暫存, 檔案狀态為Modified

檢視檔案狀态

忽略檔案

有些時候我們不想把某些檔案納入版本控制中,比如資料庫檔案,臨時檔案,設計檔案等

在主目錄下建立".gitignore"檔案,此檔案有如下規則:

忽略檔案中的空行或以井号(#)開始的行将會被忽略

可以使用Linux通配符。例如:星号(*)代表任意多個字元,問号(?)代表一個字元,方括号([abc])代表可選字元範圍,大括号({string1,string2,...})代表可選的字元串等

如果名稱的最前面有一個感歎号(!),表示例外規則,将不被忽略。

如果名稱的最前面是一個路徑分隔符(/),表示要忽略的檔案在此目錄下,而子目錄中的檔案不忽略。

如果名稱的最後面是一個路徑分隔符(/),表示要忽略的是此目錄下該名稱的子目錄,而非檔案(預設檔案或目錄都忽略)。

完整流程

先進入項目檔案夾,通過指令 git init 把這個目錄變成git可以管理的倉庫

[git第一次送出代碼至遠端倉庫][(21條消息) git第一次送出代碼至遠端倉庫_技術空間-CSDN部落格_git 送出到遠端倉庫]

1、使用git之前的最小配置

2、檢視系統配置參數

3、簡便操作合集

4、檢視版本演變

1、探究.git目錄

2、 git的存儲關系

commit 對應一顆樹,存儲目前狀态的快照,所有檔案及檔案夾的快照

tree 檔案夾

blob具體檔案,根據檔案内容來判斷不是根據檔案名

上一篇: javaweb
下一篇: 資料庫設計