1. 程式人生 > 其它 >Git下載安裝及使用方法總結

Git下載安裝及使用方法總結

參考連結:

1、版本控制

  版本控制(Revision control)是一種在開發的過程中用於管理檔案、目錄或工程等內容的修改歷史,方便檢視更改歷史記錄,備份以便恢復以前的版本的軟體工程技術。

1.1 常見的版本控制工具

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

  • Git

  • SVN(Subversion)

  • CVS(Concurrent Versions System)

  • VSS(Micorosoft Visual SourceSafe)

  • TFS(Team Foundation Server)

  • Visual Studio Online

  版本控制產品非常的多(Perforce、Rational ClearCase、RCS(GNU Revision Control System)、Serena Dimention、SVK、BitKeeper、Monotone、Bazaar、Mercurial、SourceGear Vault),現在影響力最大且使用最廣泛的是Git與SVN。

1.2 版本控制分類

1、本地版本控制

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

2、集中版本控制 SVN

  所有的版本資料都儲存在伺服器上,協同開發者從伺服器上同步更新或上傳自己的修改。

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

3、分散式版本控制 Git

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

1.3 Git與SVN的主要區別

  SVN是集中式版本控制系統,版本庫是集中放在中央伺服器的,而工作的時候,用的都是自己的電腦,所以首先要從中央伺服器得到最新的版本,然後工作,完成工作後,需要把自己做完的活推送到中央伺服器。集中式版本控制系統是必須聯網才能工作,對網路頻寬要求較高(集中式的版本控制軟體,許可權控制強,適合集中協作)。

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

2、Git

  Git 是一個分散式版本控制軟體, 最初是為了更好的管理Linux核心而設計的的,如今發展為各種語言進行版本控制。Git的作者就是Linux的作者林納斯.託瓦茲。 他是Linux核心的首要架構師與專案協調者, 是當今世界上最著名的電腦程式設計師與黑客之一。

2.1 Git的組成結構圖

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

  • Workspace:工作區,就是你平時存放專案程式碼的地方

  • Index / Stage:暫存區,用於臨時存放你的改動,事實上它只是一個檔案,儲存即將提交到檔案列表資訊

  • Repository:倉庫區(或本地倉庫),就是安全存放資料的位置,這裡面有你提交到所有版本的資料。其中HEAD指向最新放入倉庫的版本

  • Remote:遠端倉庫,託管程式碼的伺服器,可以簡單的認為是你專案組中的一臺電腦用於遠端資料交換

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

  • Directory:使用Git管理的一個目錄,也就是一個倉庫,包含我們的工作空間和Git的管理空間。

  • WorkSpace:需要通過Git進行版本控制的目錄和檔案,這些目錄和檔案組成了工作空間。

  • .git:存放Git管理資訊的目錄,初始化倉庫的時候自動建立。

  • Index/Stage:暫存區,或者叫待提交更新區,在提交進入repo之前,我們可以把所有的更新放在暫存區。

  • Local Repo:本地倉庫,一個存放在本地的版本庫;HEAD會只是當前的開發分支(branch)。

  • Stash:隱藏,是一個工作狀態儲存棧,用於儲存/恢復WorkSpace中的臨時狀態。

Git組成架構:

  • Remote遠端倉庫:各廠商提供的倉庫。 例如GitHub, Gitee, GitLab

  • Repository本地倉庫:在本地存放專案或檔案的目錄

  • index暫存區:暫時存放檔案。 覺得檔案不需要修改了, 在提交到本 地倉庫中。 最終可以提交到遠端倉庫上

  • workspace工作區:就是存放專案或檔案的工作目錄

2.2 工作流程

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

  1.在工作目錄中新增、修改檔案;

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

  3.將暫存區域的檔案提交到git倉庫。

因此,git管理的檔案有三種狀態:已修改(modified),已暫存(staged),已提交(committed)

2.3 Git檔案操作

(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。

(2)檢視檔案狀態

  上面說檔案有4種狀態,通過如下命令可以檢視到檔案的狀態:

#檢視指定檔案狀態
git status [filename]

#檢視所有檔案狀態
git status

# git add . 新增所有檔案到暫存區
# git commit -m "訊息內容" 提交暫存區中的內容到本地倉庫 -m 提交資訊

(3)忽略檔案

  有些時候我們不想把某些檔案納入版本控制中,比如資料庫檔案,臨時檔案,設計檔案等,可以在主目錄下建立".gitignore"檔案,此檔案有如下規則:

  1. 忽略檔案中的空行或以井號(#)開始的行將會被忽略。

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

  3. 如果名稱的最前面有一個感嘆號(!),表示例外規則,將不被忽略。

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

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

#為註釋*
.txt #忽略所有.txt結尾的檔案,這樣的話上傳就不會被選中!
!lib.txt #但lib.txt除外
/temp #僅忽略專案根目錄下的TODO檔案,不包括其它目錄
tempbuild/ #忽略build/目錄下的所有檔案
doc/*.txt #會忽略doc/notes.txt但不包括 doc/server/arch.txt


忽略檔案:.gitignore:
*.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
tem/

#rebel
*rebel.xml*

2.4 工作中使用Git來克隆並開發專案的整個流程

  第一步:首先通過組裡給分配的賬號通過Git克隆一個專案到自己的電腦中。 這一步一定要有網!

  第二步:克隆專案到本地電腦的倉庫中後, 通過checkout從本地倉庫中檢出到自己的開發工作空間中。

  第三步:開始編寫程式碼, 編寫完畢後, 確保沒有問題了, 再提交到暫存區裡。 如果覺得程式碼有問題, 重新編寫程式碼再次提交到暫存區中。 確定無誤後, 在提交到本地倉庫中。

  第四步:最終檢查程式碼, 如果沒有問題了, 則將本地倉庫中的程式碼最終提交給遠端倉庫裡。 一定要記住, 遠端倉庫裡的程式碼是最終要上線的, 所以一定要本地倉庫中的 程式碼測試沒有問題了, 在最終提交到遠端倉庫中。

  注意:pull 這個命令僅僅是把專案拉到你的工作空間中, 但是不能進行提交, 僅作為檢視來使用。

3、安裝Git

3.1 下載

官網下載https://git-scm.com,下載速度較慢

淘寶映象下載http://npm.taobao.org/mirrors/git-for-windows/,下載速度較快

下載對應的版本即可安裝!

3.2 安裝

  一路Next就可以完成安裝,安裝完畢就可以使用了。

3.3 啟動Git

  安裝成功後在開始選單中會有Git項,選單下有3個程式:任意資料夾下右鍵也可以看到對應的程式!Git的中的命令與Linux的命令一樣。

  Git Bash:Unix與Linux風格的命令列,使用最多,推薦最多;【主要使用這個】

  Git CMD:Windows風格的命令列;

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

3.5 常用的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)#表示註釋

3.5 配置Git身份資訊

  所有的配置檔案,其實都儲存在本地!

檢視配置: git config -l

檢視不同級別的配置檔案:

#檢視系統config
git config --system --list  

#檢視當前使用者(global)配置
git config --global --list

Git相關的配置檔案:

  1)Git\etc\gitconfig :Git 安裝目錄下的 gitconfig --system 系統級

  2)C:\Users\Administrator\ .gitconfig 只適用於當前登入使用者的配置 --global 全域性

  這裡可以直接編輯配置檔案,通過命令設定後會響應到這裡。

設定使用者名稱與郵箱(使用者標識,必要)

  當你安裝Git後首先要做的事情是設定你的使用者名稱稱和e-mail地址。這是非常重要的,因為每次Git提交都會使用該資訊。它被永遠的嵌入到了你的提交中:

git config --global user.name "kuangshen"  #名稱
git config --global user.email [email protected] #郵箱

  只需要做一次這個設定,如果你傳遞了--global 選項,因為Git將總是會使用該資訊來處理你在系統中所做的一切操作。如果你希望在一個特定的專案中使用不同的名稱或e-mail地址,你可以在該專案中執行該命令而不要--global選項。總之--global為全域性配置,不加為某個專案的特定配置。

4、Git專案搭建

4.1 建立工作目錄與常用指令

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

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

4.2 本地倉庫搭建

  建立本地倉庫的方法有兩種:一種是建立全新的倉庫,另一種是克隆遠端倉庫。

(1)建立全新的倉庫,需要用GIT管理的專案的根目錄執行:

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

執行後可以看到,僅僅在專案目錄多出了一個.git目錄,關於版本等的所有資訊都在這個目錄裡面。

(2)另一種方式是克隆遠端目錄,是將遠端伺服器上的倉庫完全映象一份至本地!

# 克隆一個專案和它的整個程式碼歷史(版本資訊)
$ git clone [url] # https://gitee.com/kuangstudy/openclass.git

去 gitee 或者 github 上克隆一個測試!

4.3 使用碼雲

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

1、註冊登入碼雲,完善個人資訊

2、設定本機繫結SSH公鑰,實現免密碼登入!(免密碼登入,這一步挺重要的,碼雲是遠端倉庫,我們是平時工作在本地倉庫!)

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

3、將公鑰資訊public key 新增到碼雲賬戶中即可!

4、使用碼雲建立一個自己的倉庫!

許可證:開源是否可以隨意轉載,開源但是不能商業使用,不能轉載,... 限制!

克隆到本地!

檢視賬號資訊:

檢視SSH公鑰:

檢視私有倉庫成員:

點選倉庫右側的“管理”可修改倉庫是否開源:私有or公開

5、IDEA中整合Git

5.1 配置Git

選單欄順序選擇: File->Settings,在彈出框中選擇下圖中的Git

然後點選右側上方輸入框 Path to Git executable:中右面的瀏覽圖示(小資料夾),並定位git的可執行程式(git.exe檔案在git安裝目錄下的cmd資料夾中)。

點選Test按鈕。如果點選後可以顯示出版本號,說明配置成功,此時點選視窗下側的OK按鈕即可。

5.2 使用Git推送專案

1、建立倉庫

點選頁面右上方的"+"並選擇"建立倉庫"

2、設定倉庫相關資訊

首先輸入倉庫名,通常可以和IDEA中專案名相同,是否開源則可結合需求選擇,這裡選擇的私有(該專案僅自己可見)

然後點選下方的"建立"按鈕.

此時gitee上完成了倉庫的建立工作。

3、複製當前倉庫路徑,這個路徑需要在後面IDEA上傳專案時使用.

4、在IDEA中將專案匯入版本控制

在IDEA選單欄順序選擇: VCS->Import into Version Control->Create Git Repository,目的是先在本地建立一個git倉庫

彈出框中當前專案,點選"OK"按鈕即可

5、滑鼠右鍵專案名,在彈出的選單欄中順序選擇:Git->Add

目的是將當前專案中本地倉庫沒有的內容新增到本地倉庫中(實際上並沒有真實新增,只有在下一步操作中才會真實新增,但是所有倉庫中沒有的檔案都需要先add後才可以通過下面的步驟新增到倉庫!)

6、提交更改

滑鼠右鍵當前專案名,在彈出的選單欄中順序選擇:Git->Commit Directory

之後輸入本次提交的備註,例如:第一次提交(注:這裡必須輸入內容,否則無法提交)。然後點選Commit按鈕進行本地提交。

目的:提交的目的是將當前專案儲存到本地倉庫中。

之後,點選IDEA左側邊條的1:Project回到專案結構檢視

滑鼠右鍵專案名,在彈出的選單欄中順序選擇:Git->Repository->Push

目的就是將本地倉庫儲存的內容同步到伺服器(上傳到伺服器,並使伺服器中的倉庫與本地倉庫內容保持一致)。

第一次操作時需要配置伺服器倉庫地址,點選彈出框中的Define remote

在彈出框中的URL輸入框中新增gitee上建立的倉庫路徑(第一大步最後一小步中在頁面上覆制的倉庫路徑),並點選OK按鈕

之後IDEA會自動檢查連結,沒有問題,則點選下方的Push按鈕

第一次提交時要求輸入gitee上的賬號和密碼,輸入後可選中Remember記住密碼,後續就不需要輸入了。

此時完成提交,右下方會提示。

附:push失敗的解決辦法:

上面最後一步若提交失敗,會在右下側提示。

此時點選IDEA下測控制檯選項開啟控制檯檢視:

在控制檯中依次執行下面三個命令:

git pull
git pull origin master
git pull origin master --allow-unrelated-histories

如圖:

之後再嘗試push。

5.3 利用Git拉取專案

1、訪問gitee或github,找到專案對應的倉庫,並複製倉庫地址。

2、開啟IDEA,依次選擇選單:File->New->Project from Version Control

3、在彈出框中輸入倉庫路徑(從第一步中gitee或github複製的路徑),並點選Clone

4、在彈出框中輸入gitee或github的賬號和密碼並點選Log in

等待下載完畢即可。