Git最新版从零开始详细教程(迅速搞定~)
目錄
- 1、版本控制
- 1.1、什么是版本控制?
- 1.2、版本控制的作用
- 1.3、版本控制的內容
- 1.4、常見的版本控制工具
- 1.5、版本控制的三大類
- 1.5.1、本地版本控制
- 1.5.2、集中版本控制
- 1.5.3、分布式版本控制
- 1.6、Git與SVN的主要區別
- 2、Git的歷史
- 3、Git的安裝配置
- 3.1、Git的卸載(已安裝)
- 3.2、安裝最新版Git
- 3.3、基本Linux命令
- 3.4、Git配置
- 4、Git基本理論
- 4.1、四大分區
- 4.2、Git常用命令
- 4.3、工作流程
- 5、Git項目搭建
- 方式一:創建新倉庫
- 方式二:克隆遠程倉庫
- 6、Git文件操作
- 6.1、文件的四種狀態
- 6.2、查看文件狀態
- 6.3、gitignore文件
- 7、使用碼云+Git托管項目
- 7.1、碼云創建遠程倉庫
- 7.1.1、注冊賬號
- 7.1.2、免密碼登錄——SSH公鑰配置
- 7.1.3、使用碼云創建遠程倉庫
- 7.1.4、clone到本地
- 7.2、創建springboot項目使用Git托管
- 7.3、使用IDEA操作Git
- 7.3.1、add添加到暫存區
- 7.3.2、commit提交到本地倉庫
- 7.3.3、push到遠程倉庫
- 7.4、修改代碼重新提交到Gitee
- 8、GIT分支
- 8.1、git分支中常用指令
- 8.2、IDEA中分支操作
- 9、Git相關資料
1、版本控制
我們所用的Git就是最常用的一種版本控制工具,所以我們有必要了解一些版本控制的基本知識
1.1、什么是版本控制?
版本控制(Revision control)是指對軟件開發過程中各種程序代碼、配置文件及說明文檔等文件變更的管理,是軟件配置管理的核心思想之一。
- 可以把一個
版本控制系統(Version Control System)理解為一個“數據庫”,在需要的時候,它可以幫你完整地保存一個項目的快照。當你需要查看一個之前的快照(稱之為“版本”)時,版本控制系統可以顯示出當前版本與上一個版本之間的所有改動的細節。
1.2、版本控制的作用
1?? 追蹤文件的變更
版本控制最主要的功能就是追蹤文件的變更。它將什么時候、什么人更改了文件的什么內容等信息忠實地了記錄下來。每一次文件的改變,文件的版本號都將增加
2?? 并行開發
軟件開發往往是多人協同作業,版本控制可以有效地解決版本的同步以及不同開發者之間的開發通信問題,提高協同開發的效率。并行開發中最常見的不同版本軟件的錯誤(Bug)修正問題也可以通過版本控制中分支與合并的方法有效地解決。
1.3、版本控制的內容
1?? 檢入檢出控制
實際開發過程中,我們對源文件的修改并不是在
軟件配置管理庫中,而是每個人都有自己的工作空間,對源文件的修改依賴于基本的文件系統在自己的工作空間下進行
訪問控制需要管理各個人員存取或修改一個特定軟件配置對象的權限。
- 開發人員能夠從庫中取出對應項目的配置項進行修改,并檢入到軟件配置庫中,對版本進行“升級”;
- 配置管理人員可以確定多余配置項并刪除。
同步控制的實質是版本的檢入檢出控制,可用來確保由不同的人并發執行的修改不會產生混亂。
檢入就是把軟件配置項從用戶的工作環境存入到軟件配置庫的過程檢出就是把軟件配置項從軟件配置庫中取出的過程- 檢人是檢出的逆過程
2?? 分支和合并
首先了解一下兩個基本的概念:
版本分支:以一個已有分支的特定版本為起點,但是獨立發展的版本序列
版本合并:來自不同分支的兩個版本合并為其中一個分支的新版本
版本分支的人工方法就是從主版本(主干)上拷貝一份,并做上標記。
- 在實行了版本控制后,版本的分支也是一份拷貝,這時的拷貝過程和標記動作由版本控制系統完成。
版本合并有兩種途徑:
- 將版本A的內容附加到版本B中
- 合并版本A和版本B的內容,形成新的版本C
3?? 歷史記錄
版本的歷史記錄有助于對軟件配置項進行審核,有助于追蹤問題的來源,包括以下幾個部分
- 版本號
- 版本修改時間
- 版本修改者
- 版本修改描述等最基本的內容
- 還可以有其他一些輔助性內容,比如版本的文件大小和讀寫屬性。
1.4、常見的版本控制工具
主流的版本控制器有如下這些,其中影響力最大且使用最廣泛的是Git與SVN
- Git
- SVN(Subversion)
- CVS(Concurrent Versions System)
- VSS(Micorosoft Visual SourceSafe)
- TFS(Team Foundation Server)
- Visual Studio Online
1.5、版本控制的三大類
1.5.1、本地版本控制
記錄文件每次的更新,可以對每個版本做一個快照,或是記錄補丁文件,適合
個人用,如RCS。
1.5.2、集中版本控制
所有的版本數據都保存在
服務器上,協同開發者從服務器上同步更新或上傳自己的修改
- 代表產品:
SVN
- 所有的版本數據都存在
服務器上,用戶的本地只有自己以前所同步的版本 - 如果不連網的話,用戶就看不到歷史版本,也無法切換版本驗證問題,或在不同分支工作。
- 所有數據都保存在單一的服務器上,有很大的風險這個服務器會損壞,這樣就會丟失所有的數據,當然可以定期備份。
1.5.3、分布式版本控制
所有版本信息倉庫全部同步到本地的每個用戶
- 代表產品:
Git,Git是目前世界上最先進的分布式版本控制系統。
-
每個人都擁有全部的代碼,有很大的安全隱患
-
可以在本地查看所有版本歷史,可以離線在本地提交,只需在連網時push到相應的服務器或其他用戶那里。
-
由于每個用戶那里保存的都是所有的版本數據,只要有一個用戶的設備沒有問題就可以恢復所有的數據,但這增加了本地存儲空間的占用。
-
不會因為服務器損壞或者網絡問題,造成不能工作的情況!
1.6、Git與SVN的主要區別
-
SVN是
集中式版本控制系統,版本庫是集中放在中央服務器的,而工作的時候,用的都是自己的電腦,所以首先要從中央服務器得到最新的版本,然后工作,完成工作后,需要把自己做完的活推送到中央服務器。集中式版本控制系統是必須聯網才能工作,對網絡帶寬要求較高。 -
Git是
分布式版本控制系統,沒有中央服務器,每個人的電腦就是一個完整的版本庫,工作的時候不需要聯網了,因為版本都在自己電腦上。協同的方法是這樣的:比如說自己在電腦上改了文件A,其他人也在電腦上改了文件A,這時,你們兩之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。Git可以直接看到更新了哪些代碼和文件!
2、Git的歷史
同生活中的許多偉大事物一樣,Git 誕生于一個極富紛爭大舉創新的年代。
Linux 內核開源項目有著為數眾廣的參與者。絕大多數的 Linux 內核維護工作都花在了提交補丁和保存歸檔的繁瑣事務上(1991-2002年間)。到 2002 年,整個項目組開始啟用一個專有的分布式版本控制系統 BitKeeper 來管理和維護代碼。
Linux社區中存在很多的大佬!破解研究 BitKeeper !
到了 2005 年,開發 BitKeeper 的商業公司同 Linux 內核開源社區的合作關系結束,他們收回了 Linux 內核社區免費使用 BitKeeper 的權力。這就迫使 Linux 開源社區(特別是 Linux 的締造者 Linus Torvalds)基于使用 BitKeeper 時的經驗教訓,開發出自己的版本系統。(2周左右!) 也就是后來的 Git!
Git是目前世界上最先進的分布式版本控制系統。
3、Git的安裝配置
3.1、Git的卸載(已安裝)
-
首先在系統環境變量
path中刪除Git的配置
-
打開控制面板(win+r再輸入control),直接卸載
3.2、安裝最新版Git
官網:https://git-scm.com/(如果下載速度很慢,建議用以下鏡像地址進行下載)
鏡像地址:http://npm.taobao.org/mirrors/git-for-windows/
這里選擇最新版進行下載,選擇自己對應的系統進行下載,這里為Windows
下載完后,點擊安裝,安裝路徑最好選擇自己的路徑
此處默認即可
下一步默認
這里是選擇默認的文本編輯器,大家選擇自己電腦上使用的即可,這里選擇Sublime
接下來的操作默認即可,直接next
等待安裝完成,然后可以發現多了一些組件
Git Bash:Unix與Linux風格的命令行,使用最多,推薦最多Git CMD:Windows風格的命令行Git GUI:圖形界面的Git,不建議初學者使用,盡量先熟悉常用命令
同時我們在任意地方鼠標右鍵,可以看到新添加的功能
注意:Git環境變量的配置在安裝的時候已經自動添加,不用再配置
3.3、基本Linux命令
cd 改變目錄
cd.. 回退到上一個目錄,直接cd進入默認目錄
pwd 顯示當前所在的目錄路徑
ls 列出當前目錄中的所有文件
touch 新建一個文件 如 touch index.js 就會在當前目錄下新建一個index.js文件
rm 刪除一個文件, rm index.js 就會把index.js文件刪除
mkdir 新建一個目錄,就是新建一個文件夾
rm -r 刪除一個文件夾, rm -r src 刪除src目錄
rm -rf / 切勿在Linux中嘗試!刪除電腦中全部文件!
mv 移動文件, mv index.html src index.html 是我們要移動的文件, src 是目標文件夾,當然, 這樣寫,必須保證文件和目標文件夾在同一目錄下
reset 重新初始化終端/清屏
clear 清屏
history 查看命令歷史
help 幫助
exit 退出
# 表示注釋
3.4、Git配置
Git有兩種等級的配置文件
1?? system系統級配置文件(
Git安裝目錄/etc/gitconfig)2?? global全局配置文件(
C盤/用戶/用戶名/.gitconfig)
我們可以通過以下命令查看配置
# 查看配置
git config -l# 查看系統config
git config --system --list# 查看當前用戶(global)配置
git config --global --list
通常我們需要設置配置文件中的用戶名與郵箱,每次Git提交時都會使用該信息
# 修改用戶名和郵箱
git config --global user.name "zsr204" #名稱
git config --global user.email "1412578784@qq.com" #郵箱
--global是全局配置選項,如果你希望在一個特定的項目中使用不同的名稱或e-mail地址,你可以在該項目中運行該命令而不要--global選項
4、Git基本理論
4.1、四大分區
Git分為四個區域,其中前三個區域是本地的,第四個區域是遠程的
工作區(WorkSpace):本地存放項目代碼的目錄暫存區(Stage/Index):是一個文件,臨時存放對文件的更改,保存即將提交到文件列表信息本地倉庫(Repository):安全存放數據的位置,包含提交的所有版本的數據;其中HEAD指向最新放入倉庫的版本遠程倉庫(Remote):托管代碼的服務器,比如Gitee、Github等
被Git托管的文件夾構成如下圖所示:
Directory:使用Git管理的目錄,包含工作空間和Git的管理空間
-
WorkSpace:工作區,存放通過Git進行版本控制的目錄和文件 -
.git隱藏文件:存放Git管理信息的目錄,初始化倉庫的時候自動創建index:指向暫存區,或者叫待提交更新區,在提交進入repo之前,我們可以把所有的更新放在暫存區。Head:指向當前的開發分支(branch)
4.2、Git常用命令
日常使用只需要記住其中下圖六個命令即可
4.3、工作流程
1、在工作目錄中添加、修改文件;
2、將需要進行版本管理的文件放入暫存區域;
3、將暫存區域的文件提交到git倉庫。
因此,git管理的文件有三種狀態:已修改(modified),已暫存(staged),已提交(committed)
5、Git項目搭建
搭建一個Git項目有兩種方式,一種是在本地創建新倉庫,一種是克隆遠程倉庫
方式一:創建新倉庫
新建一個空文件夾GitCode,作為Git管理的項目文件夾
首先在該目錄下執行以下代碼初始化稱為一個Git代碼庫
# 在當前目錄新建一個Git代碼庫
git init
執行完成后,就可以看到新生成了一個.git隱藏目錄,關于版本的信息都在這個目錄里面
方式二:克隆遠程倉庫
# 克隆一個項目和它的整個代碼歷史(版本信息)
git clone [url]
首先復制項目url
然后輸入上述命令進行克隆指定的項目地址
然后發現新生成了一個文件夾,這就對應著遠程倉庫里的內容
6、Git文件操作
6.1、文件的四種狀態
- 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
6.2、查看文件狀態
上面說文件有4種狀態,通過如下命令可以查看到文件的狀態:
#查看指定文件狀態
git status [filename]#查看所有文件狀態
git status#添加所有文件到暫存區
git add . #提交暫存區中的內容到本地倉庫 -m 提交信息
git commit -m "消息內容"
6.3、gitignore文件
有些時候我們不想把某些文件納入版本控制中,比如數據庫文件,臨時文件,設計文件等
此時可以在主目錄下建立
.gitignore文件,配置不需要納入版本控制的文件
.gitignore文件規則:
- 忽略文件中的空行或以
#開始的行 - 可以使用Linux通配符
- 星號
*代表任意多個字符 - 問號
?代表一個字符 - 方括號
[abc]代表可選字符范圍 - 大括號
{string1,string2,...}代表可選的字符串等
- 星號
- 如果名稱的最前面有感嘆號
!,表示不忽略當前文件或目錄 - 如果名稱第一個符號為
/,表示忽略當前路徑下該名稱的文件 - 如果名稱最后一個符號為
/,表示忽略該名稱目錄下的所有文件
常用配置:
# Java相關
*.class
*.log
*.lock# 打包文件
*.jar
*.war
*.ear
target/# IDEA相關
.idea/
*.iml
*.ipr
*.iws
.classpath
.project
.settings/
bin/# 日志文件
*.log# 臨時文件
tmp/
7、使用碼云+Git托管項目
7.1、碼云創建遠程倉庫
github 是有墻的,比較慢,在國內的話,我們一般使用 gitee ,公司中有時候會搭建自己的gitlab服務器
7.1.1、注冊賬號
注冊一個賬號,完善個人信息
7.1.2、免密碼登錄——SSH公鑰配置
碼云是遠程倉庫,而我們是平時工作在本地倉庫,因此免密碼登錄十分重要
1?? 設置本機綁定SSH公鑰,實現免密碼登錄
首先進入C:\Users\用戶名\.ssh目錄
然后在當前目錄打開cmd輸入以下代碼生成SSH公鑰
# 生成公鑰
ssh-keygen -t rsa
會生成對應的兩個文件
2?? 將公鑰信息添加到碼云SSH公鑰中
打開id-rsa.pub文件復制
粘貼到Gitee公鑰中,會自動生成標題
然后點擊確定,輸入密碼驗證,成功
然后就可以看到新添加的SSH公鑰
7.1.3、使用碼云創建遠程倉庫
點擊新建一個倉庫作為我們項目的遠程倉庫
點擊創建遠程倉庫
7.1.4、clone到本地
克隆剛剛遠程倉庫Remote到本地目錄
git clone https://gitee.com/zhong_siru/remote.git
克隆完成后,生成了remote文件夾,里面就是遠程倉庫中的文件內容以及Git的相關配置
7.2、創建springboot項目使用Git托管
創建一個springboot項目
接下來要需要讓該項目被Git托管,只需要將前面我們clone到本地的Gitee遠程倉庫的Git文件拷貝到該項目目錄中即可,也就是將倉庫remote中的文件拷貝到該項目目錄中
這樣該項目下,就有了.git文件夾,也就是被Git托管;回到IDEA,可以發現相應的變化
到此,Git就綁定成功了
7.3、使用IDEA操作Git
首先需要了解一些IDEA中的一些基本操作
1?? 點擊下方的Git(或者alt+9)可以查看關于倉庫的所有信息
2?? 拉取、提交按鈕的位置
7.3.1、add添加到暫存區
打開IDEA的Terminal,輸入以下命令將代碼添加到暫存區
git add .
然后可以看見項目目錄被`add`的文件變成綠色
如果我們修改了某個文件,可以直接右鍵進行add更改內容到暫存區
7.3.2、commit提交到本地倉庫
點擊上述提交按鈕或者(ctrl+k)
2020IDEA代碼提交已經不是以前那種模態化彈框式窗口,現在集成到左邊commit側邊欄中
如果想使用以前彈出式的提交窗口,可以按下圖所示進行切換
切換后,想要換回來,可以在如下圖所示進行設置
提交代碼前,需要做相關設置
勾選要提交的文件,然后填寫提交的信息,然后點擊Commit
提交完成后,點擊Git可以查看關于倉庫的所有信息,我們在Log中可以看到我們剛提交的操作以及提交的文件
同時在Console控制臺可以看到相關信息
7.3.3、push到遠程倉庫
同樣在Terminal中輸入以下代碼,push到遠程倉庫
git push
出現如下結果即成功
然后我們打開前面在Gitee新建的遠程倉庫檢驗,可以看到我們提交上來的文件
7.4、修改代碼重新提交到Gitee
我們隨便在一個地方新建一個Hello類,這時候顯示為紅色
然后會彈框提示你是否將這個文件添加到Git
我們點擊Add即可添加到Git,然后可以看到文件變為綠色
接下來,我們通過命令行的方式將這個添加的Hello.java添加到遠程倉庫
打開Terminal窗口,先后輸入以下三個命令
git add .
git commit -m "new .java file Hello"
git push
同樣,我們可以查看我們提交的相關信息
然后打開Gitee,可以看到我們剛提交的代碼
8、GIT分支
上述的操作都是單人的操作,實際開發中,一個項目是由多個人共同開發的;我們可以在Gitee隨便找一個項目,查看其分支
8.1、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]
8.2、IDEA中分支操作
我們也可以在IDEA中查看分支,并進行相應的操作
項目右鍵,點擊Git,然后點擊Repository,然后點擊Branches
然后彈出以下分支信息
然后我們可以在指定分支右鍵進行相應的分支操作
如果同一個文件在合并分支時都被修改了則會引起沖突
- 解決辦法:我們可以修改沖突文件后重新提交!選擇要保留他的代碼還是你的代碼!
master主分支應該非常穩定,用來發布新版本,一般情況下不允許在上面工作,工作一般情況下在新建的dev分支上工作,工作完后,比如上要發布,或者說dev分支代碼穩定后可以合并到主分支master上來。
9、Git相關資料
在Gitee中有關于Git的相關資料,大家可以自行查看
- Git大全:https://gitee.com/all-about-git
- Git命令大全:https://oschina.gitee.io/learn-git-branching/
總結
以上是生活随笔為你收集整理的Git最新版从零开始详细教程(迅速搞定~)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 面试高频!JVM必备教程~
- 下一篇: 手把手从零开始搭建k8s集群超详细教程