激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

香港云服务器
服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - Java基礎(chǔ)篇之分布式版本控制工具Git

Java基礎(chǔ)篇之分布式版本控制工具Git

2022-03-02 00:56龍弟-idea Java教程

Git是一個(gè)開(kāi)源的分布式版本控制系統(tǒng),可以有效、高速地處理從很小到非常大的項(xiàng)目版本管理。 也是Linus Torvalds為了幫助管理Linux內(nèi)核開(kāi)發(fā)而開(kāi)發(fā)的一個(gè)開(kāi)放源碼的版本控制軟件

版本控制

版本控制(Revision control)是一種在開(kāi)發(fā)的過(guò)程中用于管理我們對(duì)文件、目錄或工程等內(nèi)容的修改歷史,方便查看更改歷史記錄,備份以便恢復(fù)以前的版本的軟件工程技術(shù)。

  • 實(shí)現(xiàn)跨區(qū)域多人協(xié)同開(kāi)發(fā)
  • 追蹤和記載一個(gè)或者多個(gè)文件的歷史記錄
  • 組織和保護(hù)你的源代碼和文檔
  • 統(tǒng)計(jì)工作量
  • 并行開(kāi)發(fā)、提高開(kāi)發(fā)效率
  • 跟蹤記錄整個(gè)軟件的開(kāi)發(fā)過(guò)程
  • 減輕開(kāi)發(fā)人員的負(fù)擔(dān),節(jié)省時(shí)間,同時(shí)降低人為錯(cuò)誤

就是用于管理多人協(xié)同開(kāi)發(fā)項(xiàng)目的技術(shù)。

Java基礎(chǔ)篇之分布式版本控制工具Git

常見(jiàn)的版本控制工具

主流的版本控制器有如下這些:

  • Git
  • SVN(Subversion)
  • CVS(Concurrent Versions System)
  • VSS(Micorosoft Visual SourceSafe)
  • TFS(Team Foundation Server)
  • Visual Studio Online

版本控制分類(lèi)

1.本地版本控制

記錄文件每次的更新,可以對(duì)每個(gè)版本做一個(gè)快照,或是記錄補(bǔ)丁文件,適合個(gè)人用。

Java基礎(chǔ)篇之分布式版本控制工具Git

2.集中版本控制SVN

所有的版本數(shù)據(jù)都保存在服務(wù)器上,協(xié)同開(kāi)發(fā)者從服務(wù)器上同步更新或上傳自己的修改

Java基礎(chǔ)篇之分布式版本控制工具Git

所有的版本數(shù)據(jù)都存在服務(wù)器上,用戶(hù)的本地只有自己以前所同步的版本,如果不連網(wǎng)的話(huà),用戶(hù)就看不到歷史版本,也無(wú)法切換版本驗(yàn)證問(wèn)題,或在不同分支工作。而且,所有數(shù)據(jù)都保存在單一的服務(wù)器上,有很大的風(fēng)險(xiǎn)這個(gè)服務(wù)器會(huì)損壞,這樣就會(huì)丟失所有的數(shù)據(jù),當(dāng)然可以定期備份。代表產(chǎn)品:SVN、CVS、VSS

3.分布式版本控制

每個(gè)人都擁有全部的代碼!安全隱患!

所有版本信息倉(cāng)庫(kù)全部同步到本地的每個(gè)用戶(hù),這樣就可以在本地查看所有版本歷史,可以離線在本地提交,只需在連網(wǎng)時(shí)push到相應(yīng)的服務(wù)器或其他用戶(hù)那里。由于每個(gè)用戶(hù)那里保存的都是所有的版本數(shù)據(jù),只要有一個(gè)用戶(hù)的設(shè)備沒(méi)有問(wèn)題就可以恢復(fù)所有的數(shù)據(jù),但這增加了本地存儲(chǔ)空間的占用。

不會(huì)因?yàn)榉?wù)器損壞或者網(wǎng)絡(luò)問(wèn)題,造成不能工作的情況!

Java基礎(chǔ)篇之分布式版本控制工具Git

Git和SVN的區(qū)別

SVN是集中式版本控制系統(tǒng),版本庫(kù)是集中放在中央服務(wù)器的,而工作的時(shí)候,用的都是自己的電腦,所以首先要從中央服務(wù)器得到最新的版本,然后工作,完成工作后,需要把自己做完的活推送到中央服務(wù)器。集中式版本控制系統(tǒng)是必須聯(lián)網(wǎng)才能工作,對(duì)網(wǎng)絡(luò)帶寬要求較高。

Git是分布式版本控制系統(tǒng),沒(méi)有中央服務(wù)器,每個(gè)人的電腦就是一個(gè)完整的版本庫(kù),工作的時(shí)候不需要聯(lián)網(wǎng)了,因?yàn)榘姹径荚谧约弘娔X上。協(xié)同的方法是這樣的:比如說(shuō)自己在電腦上改了文件A,其他人也在電腦上改了文件A,這時(shí),你們兩之間只需把各自的修改推送給對(duì)方,就可以互相看到對(duì)方的修改了。Git可以直接看到更新了哪些代碼和文件!

 

Git的歷史:

Linux 內(nèi)核開(kāi)源項(xiàng)目有著為數(shù)眾廣的參與者,絕大多數(shù)的 Linux 內(nèi)核維護(hù)工作都花在了提交補(bǔ)丁和保存歸檔的繁瑣事務(wù)上(1991-2002年間)。到 2002 年,整個(gè)項(xiàng)目組開(kāi)始啟用一個(gè)專(zhuān)有的分布式版本控制系統(tǒng) BitKeeper 來(lái)管理和維護(hù)代碼。

Linux社區(qū)中存在很多的大佬!破解研究 BitKeeper !

到了 2005 年,開(kāi)發(fā) BitKeeper 的商業(yè)公司同 Linux 內(nèi)核開(kāi)源社區(qū)的合作關(guān)系結(jié)束,他們收回了 Linux 內(nèi)核社區(qū)免費(fèi)使用 BitKeeper 的權(quán)力。這就迫使 Linux 開(kāi)源社區(qū)(特別是 Linux 的締造者 Linus Torvalds)基于使用 BitKeeper 時(shí)的經(jīng)驗(yàn)教訓(xùn),開(kāi)發(fā)出自己的版本系統(tǒng)。(2周左右!) 也就是后來(lái)的 Git!

Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)。

Git是免費(fèi)、開(kāi)源的,最初Git是為輔助 Linux 內(nèi)核開(kāi)發(fā)的,來(lái)替代 BitKeeper!

Linux和Git之父李納斯?托沃茲(Linus Benedic Torvalds)1969、芬蘭

Git官網(wǎng) :Git,下載git對(duì)應(yīng)操作系統(tǒng)的版本。

官網(wǎng)下載太慢,我們可以使用淘寶鏡像下載:git-for-windows Mirror

Java基礎(chǔ)篇之分布式版本控制工具Git

啟動(dòng)git

Java基礎(chǔ)篇之分布式版本控制工具Git

Git Bash:Unix與Linux風(fēng)格的命令行,使用最多,推薦最多

Git CMD:Windows風(fēng)格的命令行

Git GUI:圖形界面的Git,不建議初學(xué)者使用,盡量先熟悉常用命令

 

常用的Linux命令

1)、cd : 改變目錄。

2)、cd . . 回退到上一個(gè)目錄,直接cd進(jìn)入默認(rèn)目錄

3)、pwd : 顯示當(dāng)前所在的目錄路徑。

4)、ls(ll): 都是列出當(dāng)前目錄中的所有文件,只不過(guò)ll(兩個(gè)ll)列出的內(nèi)容更為詳細(xì)。

5)、touch : 新建一個(gè)文件 如 touch index.js 就會(huì)在當(dāng)前目錄下新建一個(gè)index.js文件。

6)、rm: 刪除一個(gè)文件, rm index.js 就會(huì)把index.js文件刪除。

7)、mkdir: 新建一個(gè)目錄,就是新建一個(gè)文件夾。

8)、rm -r : 刪除一個(gè)文件夾, rm -r src 刪除src目錄

  rm -rf / 切勿在Linux中嘗試!刪除電腦中全部文件!

9)、mv 移動(dòng)文件, 【mv index.html src】 index.html 是我們要移動(dòng)的文件, src 是目標(biāo)文件夾,當(dāng)然, 這樣寫(xiě),必須保證文件和目標(biāo)文件夾在同一目錄下。

10)、reset 重新初始化終端/清屏。

11)、clear 清屏。

12)、history 查看命令歷史。

13)、help 幫助。

14)、exit 退出。

15)、#表示注釋

Java基礎(chǔ)篇之分布式版本控制工具Git

Java基礎(chǔ)篇之分布式版本控制工具Git

 

Git配置

所有的配置文件,其實(shí)都保存在本地!

查看配置 git config -l

查看不同級(jí)別的配置文件:

#查看系統(tǒng)config
git config --system --list
  
#查看當(dāng)前用戶(hù)(global)配置
git config --global  --list

Git相關(guān)的配置文件:

1)、Git\etc\gitconfig :Git 安裝目錄下的 gitconfig --system 系統(tǒng)級(jí)

2)、C:\Users\Administrator\ .gitconfig 只適用于當(dāng)前登錄用戶(hù)的配置 --global 全局

設(shè)置用戶(hù)名與郵箱(用戶(hù)標(biāo)識(shí),必要)

git config --global user.name "龍的想法"  #名稱(chēng)
git config --global user.email "864232360@qq.com"   #郵箱

這里可以直接編輯配置文件,通過(guò)命令設(shè)置后會(huì)響應(yīng)到這里。

Java基礎(chǔ)篇之分布式版本控制工具Git

 

Git基本理論(重要)

Git本地有三個(gè)工作區(qū)域:工作目錄(Working Directory)、暫存區(qū)(Stage/Index)、資源庫(kù)(Repository或Git Directory)。如果在加上遠(yuǎn)程的git倉(cāng)庫(kù)(Remote Directory)就可以分為四個(gè)工作區(qū)域。文件在這四個(gè)區(qū)域之間的轉(zhuǎn)換關(guān)系如下:

Java基礎(chǔ)篇之分布式版本控制工具Git

  • Workspace:工作區(qū),就是你平時(shí)存放項(xiàng)目代碼的地方
  • Index / Stage:暫存區(qū),用于臨時(shí)存放你的改動(dòng),事實(shí)上它只是一個(gè)文件,保存即將提交到文件列表信息
  • Repository:倉(cāng)庫(kù)區(qū)(或本地倉(cāng)庫(kù)),就是安全存放數(shù)據(jù)的位置,這里面有你提交到所有版本的數(shù)據(jù)。其中HEAD指向最新放入倉(cāng)庫(kù)的版本
  • Remote:遠(yuǎn)程倉(cāng)庫(kù),托管代碼的服務(wù)器,可以簡(jiǎn)單的認(rèn)為是你項(xiàng)目組中的一臺(tái)電腦用于遠(yuǎn)程數(shù)據(jù)交換

本地的三個(gè)區(qū)域確切的說(shuō)應(yīng)該是git倉(cāng)庫(kù)中HEAD指向的版本:

Java基礎(chǔ)篇之分布式版本控制工具Git

  • Directory:使用Git管理的一個(gè)目錄,也就是一個(gè)倉(cāng)庫(kù),包含我們的工作空間和Git的管理空間。
  • WorkSpace:需要通過(guò)Git進(jìn)行版本控制的目錄和文件,這些目錄和文件組成了工作空間。
  • .git:存放Git管理信息的目錄,初始化倉(cāng)庫(kù)的時(shí)候自動(dòng)創(chuàng)建。
  • Index/Stage:暫存區(qū),或者叫待提交更新區(qū),在提交進(jìn)入repo之前,我們可以把所有的更新放在暫存區(qū)。
  • Local Repo:本地倉(cāng)庫(kù),一個(gè)存放在本地的版本庫(kù);HEAD會(huì)只是當(dāng)前的開(kāi)發(fā)分支(branch)。
  • Stash:隱藏,是一個(gè)工作狀態(tài)保存棧,用于保存/恢復(fù)WorkSpace中的臨時(shí)狀態(tài)

工作流程

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

1、在工作目錄中添加、修改文件; UserMapper.xml

2、將需要進(jìn)行版本管理的文件放入暫存區(qū)域; git add.

3、將暫存區(qū)域的文件提交到git倉(cāng)庫(kù)。 git commit

因此,git管理的文件有三種狀態(tài):已修改(modified),已暫存(staged),已提交(committed)

Java基礎(chǔ)篇之分布式版本控制工具Git

 

Git項(xiàng)目搭建

創(chuàng)建工作目錄與常用指令

工作目錄(WorkSpace)一般就是你希望Git幫助你管理的文件夾,可以是你項(xiàng)目的目錄,也可以是一個(gè)空目錄,建議不要有中文。

日常使用只要記住下圖6個(gè)命令:

Java基礎(chǔ)篇之分布式版本控制工具Git

本地倉(cāng)庫(kù)搭建

創(chuàng)建本地倉(cāng)庫(kù)的方法有兩種:一種是創(chuàng)建全新的倉(cāng)庫(kù),另一種是克隆遠(yuǎn)程倉(cāng)庫(kù)。

1、創(chuàng)建全新的倉(cāng)庫(kù),需要用GIT管理的項(xiàng)目的根目錄執(zhí)行:

# 在當(dāng)前目錄新建一個(gè)Git代碼庫(kù)
$ git init

2、執(zhí)行后可以看到,僅僅在項(xiàng)目目錄多出了一個(gè).git目錄,關(guān)于版本等的所有信息都在這個(gè)目錄里面。

克隆遠(yuǎn)程倉(cāng)庫(kù)

另一種方式是克隆遠(yuǎn)程目錄,由于是將遠(yuǎn)程服務(wù)器上的倉(cāng)庫(kù)完全鏡像一份至本地

# 克隆一個(gè)項(xiàng)目和它的整個(gè)代碼歷史(版本信息)
$ git clone [url] 

 

Git文件操作

文件的四種狀態(tài)

版本控制就是對(duì)文件的版本控制,要對(duì)文件進(jìn)行修改、提交等操作,首先要知道文件當(dāng)前在什么狀態(tài),不然可能會(huì)提交了現(xiàn)在還不想提交的文件,或者要提交的文件沒(méi)提交上。

  • Untracked: 未跟蹤, 此文件在文件夾中, 但并沒(méi)有加入到git庫(kù), 不參與版本控制. 通過(guò)git add 狀態(tài)變?yōu)镾taged.
  • Unmodify: 文件已經(jīng)入庫(kù), 未修改, 即版本庫(kù)中的文件快照內(nèi)容與文件夾中完全一致. 這種類(lèi)型的文件有兩種去處, 如果它被修改, 而變?yōu)镸odified. 如果使用git rm移出版本庫(kù), 則成為Untracked文件
  • Modified: 文件已修改, 僅僅是修改, 并沒(méi)有進(jìn)行其他的操作. 這個(gè)文件也有兩個(gè)去處, 通過(guò)git add可進(jìn)入暫存staged狀態(tài), 使用git checkout 則丟棄修改過(guò), 返回到unmodify狀態(tài), 這個(gè)git checkout即從庫(kù)中取出文件, 覆蓋當(dāng)前修改 !
  • Staged: 暫存狀態(tài). 執(zhí)行g(shù)it commit則將修改同步到庫(kù)中, 這時(shí)庫(kù)中的文件和本地文件又變?yōu)橐恢? 文件為Unmodify狀態(tài). 執(zhí)行g(shù)it reset HEAD filename取消暫存, 文件狀態(tài)為Modified

查看文件狀態(tài)

#查看指定文件狀態(tài)
git status [filename]

#查看所有文件狀態(tài)
git status

# git add .                  添加所有文件到暫存區(qū)
# git commit -m "消息內(nèi)容"    提交暫存區(qū)中的內(nèi)容到本地倉(cāng)庫(kù) -m 提交信息

忽略文件

有些時(shí)候我們不想把某些文件納入版本控制中,比如數(shù)據(jù)庫(kù)文件,臨時(shí)文件,設(shè)計(jì)文件等

在主目錄下建立".gitignore"文件,此文件有如下規(guī)則:

  • 忽略文件中的空行或以井號(hào)(#)開(kāi)始的行將會(huì)被忽略。
  • 可以使用Linux通配符。例如:星號(hào)(*)代表任意多個(gè)字符,問(wèn)號(hào)(?)代表一個(gè)字符,方括號(hào)([abc])代表可選字符范圍,大括號(hào)({string1,string2,...})代表可選的字符串等。
  • 如果名稱(chēng)的最前面有一個(gè)感嘆號(hào)(!),表示例外規(guī)則,將不被忽略。
  • 如果名稱(chēng)的最前面是一個(gè)路徑分隔符(/),表示要忽略的文件在此目錄下,而子目錄中的文件不忽略。
  • 如果名稱(chēng)的最后面是一個(gè)路徑分隔符(/),表示要忽略的是此目錄下該名稱(chēng)的子目錄,而非文件(默認(rèn)文件或目錄都忽略)。
#為注釋
*.txt        #忽略所有 .txt結(jié)尾的文件,這樣的話(huà)上傳就不會(huì)被選中!
!lib.txt     #但lib.txt除外
/temp        #僅忽略項(xiàng)目根目錄下的TODO文件,不包括其它目錄temp
build/       #忽略build/目錄下的所有文件
doc/*.txt    #會(huì)忽略 doc/notes.txt 但不包括 doc/server/arch.txt

 

使用碼云

github 是有墻的,比較慢,在國(guó)內(nèi)的話(huà),我們一般使用 gitee ,公司中有時(shí)候會(huì)搭建自己的gitlab服務(wù)器

1、注冊(cè)登錄碼云,完善個(gè)人信息

2、設(shè)置本機(jī)綁定SSH公鑰,實(shí)現(xiàn)免密碼登錄!(免密碼登錄,這一步挺重要的,碼云是遠(yuǎn)程倉(cāng)庫(kù),我們是平時(shí)工作在本地倉(cāng)庫(kù)!)

# 進(jìn)入 C:\Users\Administrator\.ssh 目錄
# 生成公鑰
ssh-keygen

3、將公鑰信息public key 添加到碼云賬戶(hù)中即可!

4、使用碼云創(chuàng)建一個(gè)自己的倉(cāng)庫(kù)!

5、克隆到本地!

IDEA集成Git

1、新建項(xiàng)目,綁定git,注意觀察idea中的變化 紅色為選中狀態(tài)

2、修改文件,使用IDEA操作git。

添加到暫存區(qū)

commit 提交

push到遠(yuǎn)程倉(cāng)庫(kù)

3、提交測(cè)試

 

Git分支

Java基礎(chǔ)篇之分布式版本控制工具Git

git分支中常用指令:

# 列出所有本地分支
git branch

# 列出所有遠(yuǎn)程分支
git branch -r

# 新建一個(gè)分支,但依然停留在當(dāng)前分支
git branch [branch-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]

Java基礎(chǔ)篇之分布式版本控制工具Git

如果同一個(gè)文件在合并分支時(shí)都被修改了則會(huì)引起沖突:解決的辦法是我們可以修改沖突文件后重新提交!選擇要保留他的代碼還是你的代碼!

master主分支應(yīng)該非常穩(wěn)定,用來(lái)發(fā)布新版本,一般情況下不允許在上面工作,工作一般情況下在新建的dev分支上工作,工作完后,比如上要發(fā)布,或者說(shuō)dev分支代碼穩(wěn)定后可以合并到主分支master上來(lái)。

到此這篇關(guān)于Java基礎(chǔ)篇之分布式版本控制工具Git的文章就介紹到這了,更多相關(guān)Java Git內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/weixin_48838340/article/details/120721027

延伸 · 閱讀

精彩推薦
1315
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 高清国产在线 | 亚洲 综合 欧美 动漫 丝袜图 | 99爱精品在线 | 国产精品欧美久久久久一区二区 | 日本高清视频网站www | 国产女同疯狂激烈互摸 | 国产伦精品一区二区三区在线 | 欧美特黄a| 视频毛片| 成人黄色小视频网站 | 欧美一区公司 | 亚洲日韩精品欧美一区二区 | 免费观看一级欧美大 | 18pao国产成人免费视频 | 成人三级黄色片 | 亚洲精品欧美二区三区中文字幕 | 成年毛片| 国产精品视频久久久 | 欧美成人午夜 | 黄色片小说 | 一区二区久久精品66国产精品 | 中文日韩欧美 | 国产精品午夜未成人免费观看 | 亚洲伊人色欲综合网 | 91网视频 | 日韩黄色av | 大学生一级毛片在线视频 | 深夜视频福利 | www噜噜偷拍在线视频 | 久久亚洲精品国产 | 欧美三日本三级少妇三级99观看视频 | 一区二区三区在线观看免费视频 | 亚洲国产精品500在线观看 | 日本欧美中文字幕 | 亚洲免费毛片基地 | 91精品国产乱码久久桃 | 久久99精品国产自在现线 | 羞羞答答视频 | 精品国产91久久久久 | 免费国产a | 欧美一级高潮片免费的 |