欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java基礎篇之分布式版本控制工具Git

 更新時間:2021年10月27日 10:39:25   作者:龍弟-idea  
Git是一個開源的分布式版本控制系統(tǒng),可以有效、高速地處理從很小到非常大的項目版本管理。 也是Linus Torvalds為了幫助管理Linux內核開發(fā)而開發(fā)的一個開放源碼的版本控制軟件

版本控制

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

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

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

常見的版本控制工具

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

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

版本控制分類

1.本地版本控制

記錄文件每次的更新,可以對每個版本做一個快照,或是記錄補丁文件,適合個人用。

2.集中版本控制SVN

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

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

3.分布式版本控制

每個人都擁有全部的代碼!安全隱患!

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

不會因為服務器損壞或者網絡問題,造成不能工作的情況!

Git和SVN的區(qū)別

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

Git是分布式版本控制系統(tǒng),沒有中央服務器,每個人的電腦就是一個完整的版本庫,工作的時候不需要聯(lián)網了,因為版本都在自己電腦上。協(xié)同的方法是這樣的:比如說自己在電腦上改了文件A,其他人也在電腦上改了文件A,這時,你們兩之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。Git可以直接看到更新了哪些代碼和文件!

Git的歷史:

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

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

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

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

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

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

Git官網 :Git,下載git對應操作系統(tǒng)的版本。

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

啟動git

Git Bash:Unix與Linux風格的命令行,使用最多,推薦最多

Git CMD:Windows風格的命令行

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

常用的Linux命令

1)、cd : 改變目錄。

2)、cd . . 回退到上一個目錄,直接cd進入默認目錄

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

4)、ls(ll): 都是列出當前目錄中的所有文件,只不過ll(兩個ll)列出的內容更為詳細。

5)、touch : 新建一個文件 如 touch index.js 就會在當前目錄下新建一個index.js文件。

6)、rm: 刪除一個文件, rm index.js 就會把index.js文件刪除。

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

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

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

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

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

11)、clear 清屏。

12)、history 查看命令歷史。

13)、help 幫助。

14)、exit 退出。

15)、#表示注釋

Git配置

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

查看配置 git config -l

查看不同級別的配置文件:

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

Git相關的配置文件:

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

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

設置用戶名與郵箱(用戶標識,必要)

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

這里可以直接編輯配置文件,通過命令設置后會響應到這里。

Git基本理論(重要)

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

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

本地的三個區(qū)域確切的說應該是git倉庫中HEAD指向的版本:

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

工作流程

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

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

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

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

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

Git項目搭建

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

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

日常使用只要記住下圖6個命令:

本地倉庫搭建

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

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

# 在當前目錄新建一個Git代碼庫
$ git init

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

克隆遠程倉庫

另一種方式是克隆遠程目錄,由于是將遠程服務器上的倉庫完全鏡像一份至本地

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

Git文件操作

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

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

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

查看文件狀態(tài)

 
#查看指定文件狀態(tài)
git status [filename]
 
#查看所有文件狀態(tài)
git status
 
# git add .                  添加所有文件到暫存區(qū)
# git commit -m "消息內容"    提交暫存區(qū)中的內容到本地倉庫 -m 提交信息

忽略文件

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

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

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

使用碼云

github 是有墻的,比較慢,在國內的話,我們一般使用 gitee ,公司中有時候會搭建自己的gitlab服務器

1、注冊登錄碼云,完善個人信息

2、設置本機綁定SSH公鑰,實現(xiàn)免密碼登錄?。饷艽a登錄,這一步挺重要的,碼云是遠程倉庫,我們是平時工作在本地倉庫!)

 
# 進入 C:\Users\Administrator\.ssh 目錄
# 生成公鑰
ssh-keygen

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

4、使用碼云創(chuàng)建一個自己的倉庫!

5、克隆到本地!

IDEA集成Git

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

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

添加到暫存區(qū)

commit 提交

push到遠程倉庫

3、提交測試

Git分支

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]

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

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

到此這篇關于Java基礎篇之分布式版本控制工具Git的文章就介紹到這了,更多相關Java Git內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java實現(xiàn)插入排序,希爾排序和歸并排序

    Java實現(xiàn)插入排序,希爾排序和歸并排序

    這篇文章主要為大家詳細介紹了插入排序,希爾排序和歸并排序的多種語言的實現(xiàn)(JavaScript、Python、Go語言、Java),感興趣的小伙伴可以了解一下
    2022-12-12
  • 使用@RequestBody配合@Valid校驗入參參數(shù)

    使用@RequestBody配合@Valid校驗入參參數(shù)

    這篇文章主要介紹了使用@RequestBody配合@Valid校驗入參參數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 淺談Java中FastJson的使用

    淺談Java中FastJson的使用

    今天給大家?guī)淼氖顷P于Java的相關知識,文章圍繞著FastJson的使用展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Lombok之@AllArgsConstructor的使用方式

    Lombok之@AllArgsConstructor的使用方式

    這篇文章主要介紹了Lombok之@AllArgsConstructor的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 全面剖析java 數(shù)據(jù)類型與運算符

    全面剖析java 數(shù)據(jù)類型與運算符

    這篇文章主要介紹了Java基本數(shù)據(jù)類型和運算符,結合實例形式詳細分析了java基本數(shù)據(jù)類型、數(shù)據(jù)類型轉換、算術運算符、邏輯運算符等相關原理與操作技巧,需要的朋友可以參考下
    2021-09-09
  • Spring?AOP原理及動態(tài)代理

    Spring?AOP原理及動態(tài)代理

    這篇文章主要介紹了Spring?AOP原理及動態(tài)代理,文章通過圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • Java8 使用 stream().sorted()對List集合進行排序的操作

    Java8 使用 stream().sorted()對List集合進行排序的操作

    這篇文章主要介紹了Java8 使用 stream().sorted()對List集合進行排序的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • JavaWeb中的Filter過濾器解讀

    JavaWeb中的Filter過濾器解讀

    這篇文章主要介紹了JavaWeb中的Filter過濾器解讀,Filter過濾器是JavaWeb的三大組件之一,Filter過濾器是JavaEE的規(guī)范也就是接口,Filter的作用是攔截請求,過濾響應,需要的朋友可以參考下
    2023-10-10
  • Java隨機生成手機短信驗證碼的方法

    Java隨機生成手機短信驗證碼的方法

    這篇文章主要介紹了Java隨機生成手機短信驗證碼的方法,涉及Java數(shù)學運算計算隨機數(shù)及字符串操作的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • Java中jdk1.8和jdk17相互切換實戰(zhàn)步驟

    Java中jdk1.8和jdk17相互切換實戰(zhàn)步驟

    之前做Java項目時一直用的是jdk1.8,現(xiàn)在想下載另一個jdk版本17,并且在之后的使用中可以進行相互切換,下面這篇文章主要給大家介紹了關于Java中jdk1.8和jdk17相互切換的相關資料,需要的朋友可以參考下
    2023-05-05

最新評論