【狂神說Java】Git最新教程通俗易懂

P1 1、前言 之 版本控制
06:12
?
目錄
版本控制
聊聊Git歷史
git環(huán)境配置
git基本理論
git項(xiàng)目搭建
---------------
git文件操作
使用碼云
?IDEA中集成git
說明:git分支
版本控制 – 版本迭代 版本控制器
管理文件 修改歷史、記錄、備份
管理多人協(xié)同開發(fā)的項(xiàng)目技術(shù)
?
功能
??????實(shí)現(xiàn)跨區(qū)域多人協(xié)同開發(fā)
??????追蹤和記載一個(gè)或多個(gè)文件的歷史記錄
??????組織和保護(hù)你的源代碼和文檔
??????統(tǒng)計(jì)工作量
??????并行開發(fā)、提高開發(fā)效率
??????跟蹤記錄整個(gè)軟件的開發(fā)過程
??????減輕開發(fā)人員的福安,節(jié)省時(shí)間,同時(shí)降低認(rèn)為錯(cuò)誤
?
P2 2、Git和SVN的區(qū)別
07:38
?
本地版本控制
記錄文件每次的更新,可以對每個(gè)版本做一個(gè)快照,或是記錄補(bǔ)丁文件,適合個(gè)人使用,如RCS
?
集中版本控制(集群) SVN
所有的版本數(shù)據(jù)都保存在服務(wù)器上,協(xié)同開發(fā)者從服務(wù)器上同步更新或上傳自己的修改
所有的版本數(shù)據(jù)都存在服務(wù)器上,用戶的本地只有自己以前所同步的版本,如果不聯(lián)網(wǎng)的化,用戶就看不到歷史版本,也無法切換版本驗(yàn)證問題,或子啊不同分支工作。而且,所有數(shù)據(jù)都保存在單一的服務(wù)器上,由很大的風(fēng)險(xiǎn)這個(gè)服務(wù)器會(huì)損壞,這樣就會(huì)丟失所有的數(shù)據(jù),可以定期備份。
代表產(chǎn)品:SVN、CVS、VSS
需要定期備份
?
分布式版本控制 Git
每個(gè)人都擁有全部的代碼 安全隱患
所有版本信息倉庫全部同步到本地的每個(gè)用戶,這樣就可以在本地查看所有版本歷史,可以離線在本地提交,秩序在聯(lián)網(wǎng)時(shí)push到相應(yīng)的服務(wù)器或其他用戶那里。由于每個(gè)用戶那里保存的都是所有的版本數(shù)據(jù),只要有一個(gè)用戶的設(shè)備沒有問題就可以恢復(fù)所有的數(shù)據(jù),但這增加了本地存儲(chǔ)空間的占用。
不會(huì)因?yàn)榉?wù)器損壞或者網(wǎng)絡(luò)問題,造成不能工作的情況
?
Git VS SVN
SVN是集中式版本控制系統(tǒng),版本庫是集中放在中央服務(wù)器的,而工作的時(shí)候,用的都是自己的電腦,所有首先要從中央服務(wù)器得到最新的版本,然后工作,完成工作后,需要把自己昨晚的活推送到中央服務(wù)器。集中版本控制系統(tǒng)是必須聯(lián)網(wǎng)才能工作,對網(wǎng)絡(luò)帶寬要求較高。
GIT是分布式版本控制系統(tǒng),沒有中央服務(wù)器,每個(gè)人的電腦就是一個(gè)完整的版本庫,工作的時(shí)候不需要聯(lián)網(wǎng)了,因?yàn)榘姹径荚谧约弘娔X上。協(xié)同的方法是這樣的:比如說自己在電腦上改了文件A,其他人也在電腦上改了文件A,這時(shí),兩人只需要把各自修改推送給對方,就可以互相看到對方的修改了。
git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)。
Git可以直接看到更新了哪些代碼和文件
?
?
P3 3、聊聊Git的歷史
03:53
?
BitKeeper
?
P4 4、安裝Git及環(huán)境配置
07:02
下載慢 —— 鏡像下載
?
先卸載
環(huán)境變量
?
Git Bash:Unix和Linux風(fēng)格的命令行,使用最多,推薦最多
Git CMD:Windows風(fēng)格的命令行
Git GUI:圖形界面的Git,不建議初學(xué)者使用,盡量先熟悉常用命令
?
P5 5、常用的Linux命令
08:06
?
cd 改變目錄
cd.. 回退到上一個(gè)目錄,直接cd進(jìn)入默認(rèn)目錄
pwd 顯示當(dāng)前所在的目錄路徑
ls(ll) 都是列出當(dāng)前目錄的所有文件,只不過ll列出的內(nèi)容更為詳細(xì)
touch 新建一個(gè)文件 如:touch index.js就會(huì)在當(dāng)前目錄下新建一個(gè)index.js文件
rm 刪除一個(gè)文件,rm index.js就會(huì)把index.js文件刪除
mkdir 新建一個(gè)目錄,就是新建一個(gè)文件夾
rm -r 刪除一個(gè)文件夾,rm -r src刪除src目錄
mv移動(dòng)文件,mv index.html src index.html是我們要移動(dòng)的文件,src是目標(biāo)文件夾,當(dāng)然,這樣寫,必夾在同意目錄下
reset 重新初始化終端 / 清屏
clear 清屏
history 查看命令歷史
help 幫助
exit 退出
# 注釋
?
右鍵 新建文件夾
在文件夾里打開 Git Bash Here
?
P6 6、Git的必要配置
09:09
?
多有的配置文件都保存在本地
?
$ git config -l
$ git config –system --list
$ git config –golbal --list
配置郵箱地址
$ git config –global user.name “zhangsan”
$ git config –global user.email “zhangsan@qq.com”
?
P7 7、Git的工作原理
07:56
?
Git本地三個(gè)工作區(qū)域:
Workspace 工作目錄(平時(shí)放代碼的地方)
Index / Stage 暫存區(qū)(文件。用于臨時(shí)存放改動(dòng),保存即將提交到文件列表信息)
Repository 資源庫(資源。安全存放數(shù)據(jù)的位置,要提交到所有版本的數(shù)據(jù)。其中HEAD指向最新放入倉庫的版本)
+
Remote 遠(yuǎn)程的git倉庫(托管代碼的服務(wù)器,可以簡單的認(rèn)為是項(xiàng)目組中的一臺(tái)電腦用于遠(yuǎn)程數(shù)據(jù)交換)
?
本地的三個(gè)區(qū)域確切的說應(yīng)該是git倉庫中HEAD 指向的版本
HEAD(隱藏文件)
?Directory:使用git管理的一個(gè)目錄,也就是一個(gè)倉庫,包含我們的工作空間和git的管理空間
WorkSpace:需要通過git進(jìn)行版本控制的目錄和文件,這些目錄和文件組成了工作空間
.git:存放git管理信息的目錄,初始化倉庫的時(shí)候u自動(dòng)創(chuàng)建
Index / Stage:暫存區(qū),或叫待提交更新去,在提交進(jìn)入repo之前,我們可以把所有的更新放在暫存區(qū)
Local Repo:本地倉庫,一個(gè)存放在本地的版本庫;HEAD會(huì)只是當(dāng)前的開發(fā)分支(branch)
Stash:隱藏,是一個(gè)工作狀態(tài)保存棧,用于保存 / 恢復(fù)QorkSpace中的臨時(shí)狀態(tài)
Git的工作流程
1 在工作目錄中添加、修改文件
UserMapper.xml
2 將需要進(jìn)行版本管理的文件放入暫存區(qū)域
git add .
3 將暫存區(qū)域的文件提交到git倉庫
git commit
因此,git管理的文件由三種狀態(tài):
已修改(modified)
已暫存(staged)
已提交(committed)
P8 8、Git項(xiàng)目創(chuàng)建及克隆
05:34
?
命令
pull、fetch / clone、checkout、push、commit、add
?
創(chuàng)建本地倉庫的兩種方法:
創(chuàng)建全新的倉庫
git init
克隆遠(yuǎn)程倉庫 —— Clone
Github
Gitee
?
P9 9、Git的基本操作命令
09:18
?· Untracked:未跟蹤,此文件在文件夾中,但并沒有加入到git庫,不參與版本控制,通過git add狀態(tài)變?yōu)镾taged
· Unmodify:文件已經(jīng)入庫,未修改,即版本庫中的文件快照內(nèi)容與文件夾中完全一致,這種類型的文件有兩種去處,如果他被修改,而變?yōu)镸odified。如果使用git rm移除版本庫,則稱為Untracked文件
· Modified:文件已修改,僅僅是修改,并沒有進(jìn)行其他的操作。這個(gè)文件也有兩個(gè)去處,通過git add可進(jìn)入暫存Staged狀態(tài),使用git checkout,則丟棄修改過,返回到unmodify狀態(tài),這個(gè)git checkout,即從庫中取出文件,覆蓋當(dāng)前修改
· Staged:暫存狀態(tài)。執(zhí)行g(shù)it commit,則將修改同步到庫中,這時(shí)苦衷的文件和本地文件又變?yōu)橐恢拢募閁nmodify狀態(tài),執(zhí)行g(shù)it reset HEAD filename,取消暫存,文件狀態(tài)為Modified
?查看文件的狀態(tài)
查看指定文件狀態(tài)
git status [filename]
?查看所有文件狀態(tài)
git status
添加所有文件到暫存區(qū)
git add
提交暫存區(qū)中的內(nèi)容到本地倉庫 -m 提交信息
git commit -m "消息內(nèi)容"
忽略不需要上傳的文件
有時(shí)不把某些文件納入版本控制中,如:數(shù)據(jù)庫文件,臨時(shí)文件,設(shè)計(jì)文件等
在主目錄下建立“.gitignore”文件,此文件由如下規(guī)則:
1 忽略文件中的空行或以井號#開始的行將會(huì)被忽略
2 可以使用Linux通配符。
如:
*(代表任意多個(gè)字符)
?(代表一個(gè)字符)
[](代表可選字符范圍)
{}(代表可選的字符串)
3 如果名稱的最前面有一個(gè)!,標(biāo)識例外規(guī)則,將不被忽略
4 如果名稱的最前面是一個(gè)路徑分隔符/,表示要忽略的文件在此目錄下,而子目錄中的文件不忽略
5 如果名稱的最后面是一個(gè)路徑分隔符/,表示要忽略的時(shí)此目錄下該名稱的子目錄,而非文件(默認(rèn)文件或目錄都忽略)
/ 的位置
在前面:往上走
先后面:往下走
?
*.class
*.log
*.lock
# Package Files #
*.jar
*.war
*.ear
target/
# idea
.idea/
*.iml
*velocity.log*
### STS ###
.apt_generated
.factorypath
.springBeans
### IntelliJ IDEA ###
*.iml
*.ipr
*.iws
.idea
.classpath
.project
.settings/
bin/
*.log
tmp/
#rebel
*rebel.xml*
?
P10 10、碼云的注冊和使用
06:46
?
P11 11、配置SSH公鑰及創(chuàng)建遠(yuǎn)程倉庫
08:25
?
P12 12、IDEA中集成Git操作
12:44
?
1 新建項(xiàng)目,綁定git
??????將遠(yuǎn)程的git文件目錄拷貝到項(xiàng)目中
?
2 修改文件,使用IDEA操作git
??????提交到暫存區(qū)
??????Commit提交到本地
??????Push到遠(yuǎn)程倉庫
Commit提交信息
提交到本地

不檢查 省時(shí)間

3 提交測試
?
?
快速提交:
git add .
git commit -m “文件名”
git push
?
P13 13、關(guān)于Git中分支說明
11:31
?
Master 主分支
· 新建一個(gè)分支,但依然停留在當(dāng)前分支
git branch [brach -name]
· 新建一個(gè)分支,并切換到該分支
git checkout -b [branch]
· 合并指定分支到當(dāng)前分支
git merge [branch]
· 刪除分支
git branch -d [branch-name]
· 刪除遠(yuǎn)程分支
git push origin --delete [branch-name]
git branch -dr [remote/branch]
多個(gè)分支如果并行執(zhí)行,會(huì)導(dǎo)致代碼不沖突,
即同時(shí)存在多個(gè)版本
?
master主分支應(yīng)該非常穩(wěn)定,用來發(fā)布新版本,一般情況下不允許在上面工作,工作一般情況下在新建的dev分支上工作,工作完后,如發(fā)布,或dev分支代碼穩(wěn)定后可以合并到主分支master上。
?
P14 14、Git后續(xù)操作說明
05:16
?
Gitee頁面下的導(dǎo)航欄 —— 用于學(xué)習(xí)(git命令、git下載)
?