天天看點

Git入門

學習git之前,我們需要先明白一個概念,版本控制!

版本控制(Revision control)是一種在開發的過程中用于管理我們對檔案、目錄或工程等内容的修改曆 史,友善檢視更改曆史記錄,備份以便恢複以前的版本的軟體工程技術。

實作跨區域多人協同開發

追蹤和記載一個或者多個檔案的曆史記錄

組織和保護你的源代碼和文檔

統計工作量

并行開發、提高開發效率

跟蹤記錄整個軟體的開發過程

減輕開發人員的負擔,節省時間,同時降低人為錯誤

簡單說就是用于管理多人協同開發項目的技術。

沒有進行版本控制或者版本控制本身缺乏正确的流程管理,在軟體開發過程中将會引入很多問題,如軟 件代碼的一緻性、軟體内容的備援、軟體過程的事物性、軟體開發過程中的并發性、軟體源代碼的安全 性,以及軟體的整合等問題。

Git入門

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

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、本地版本控制

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

Git入門

2、集中版本控制

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

Git入門

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

3、分布式版本控制

所有版本資訊倉庫全部同步到本地的每個使用者,這樣就可以在本地檢視所有版本曆史,可以離線在本地 送出,隻需在連網時push到相應的伺服器或其他使用者那裡。由于每個使用者那裡儲存的都是所有的版本數 據,隻要有一個使用者的裝置沒有問題就可以恢複所有的資料,但這增加了本地存儲空間的占用

Git入門

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

Git入門

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

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

同生活中的許多偉大事物一樣,Git 誕生于一個極富紛争大舉創新的年代。

Linux 核心開源項目有着為數衆廣的參與者。 絕大多數的 Linux 核心維護工作都花在了送出更新檔和儲存 歸檔的繁瑣事務上(1991-2002年間)。 到 2002 年,整個項目組開始啟用一個專有的分布式版本控制系 統 BitKeeper 來管理和維護代碼。

Git是免費、開源的,最初Git是為輔助 Linux 核心開發的,來替代 BitKeeper!

Git入門

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

打開 [git官網] https://git-scm.com/,下載下傳git對應作業系統的版本。

官網下載下傳太慢,我們可以使用淘寶鏡像下載下傳:http://npm.taobao.org/mirrors/git-for-windows/

Git入門

我們這裡使用淘寶鏡像下載下傳,選取版本<code>v2.25.1.windows.1</code>

Git入門

1、删除環境變量

Git入門

2、解除安裝應用

Git入門

1、輕按兩下應用程式

Git入門

2、點選next

Git入門

3、自己選一個安裝路徑

Git入門

4、直接next

Git入門

5、輸入Git,點選next

Git入門

6、選擇預設文本編輯器,我這邊預設vim,點選next

Git入門

7、點選next

Git入門

8、點選next

Git入門

9、點選next

Git入門

10、點選next

Git入門

11、點選Install

Git入門

安裝成功後在開始菜單中會有Git項,菜單下有3個程式:

Git入門

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

Git CMD:Windows風格的指令行

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

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目錄

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

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

11)、clear 清屏。

12)、history 檢視指令曆史。

13)、help 幫助。

14)、exit 退出。

15)、#表示注釋

檢視配置 <code>git config -l</code>

Git入門

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

Git相關的配置檔案:

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

Git入門

2)、C:\Users\Administrator\ .gitconfig 隻适用于目前登入使用者的配置 --global 全局

Git入門

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

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

隻需要做一次這個設定,如果你傳遞了--global 選項,因為Git将總是會使用該資訊來處理你在系統中所 做的一切操作。如果你希望在一個特定的項目中使用不同的名稱或e-mail位址,你可以在該項目中運作該指令而不要--global選項。 總之--global為全局配置,不加為某個項目的特定配置。

Git入門

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

Git入門

Workspace:工作區,就是你平時存放項目代碼的地方

Index / Stage:暫存區,用于臨時存放你的改動,事實上它隻是一個檔案,儲存即将送出的檔案清單資訊

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

Remote:遠端倉庫,托管代碼的伺服器,可以簡單的認為是你項目組中的一台電腦用于遠端資料 交換

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

Git入門

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

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

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

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

Local Repo:本地倉庫,一個存放在本地的版本庫;

HEAD會指向目前的開發分支(branch)。

Stash:隐藏,是一個工作狀态儲存棧,用于儲存/恢複WorkSpace中的臨時狀态。

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

1、在工作目錄中添加、修改檔案;

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

3、将暫存區域的檔案送出到git倉庫。

是以,git管理的檔案有三種狀态:已修改(modified),已暫存(staged),已送出(committed)

Git入門

工作目錄(WorkSpace)一般就是你希望Git幫助你管理的檔案夾,可以是你項目的目錄,也可以是一個 空目錄,建議不要有中文。 日常使用隻要記住下圖6個指令:

Git入門

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

1、建立全新的倉庫,需要用GIT管理的項目的根目錄執行:

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

1、另一種方式是克隆遠端目錄,由于是将遠端伺服器上的倉庫完全鏡像一份至本地!

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

版本控制就是對檔案的版本控制,要對檔案進行修改、送出等操作,首先要知道檔案目前在什麼狀态, 不然可能會送出了現在還不想送出的檔案,或者要送出的檔案沒送出上。

Untracked: 未跟蹤, 此檔案在檔案夾中, 但并沒有加入到git庫, 不參與版本控制. 通過 <code>git add</code> 狀态變為 <code>Staged</code> .

Unmodify: 檔案已經入庫, 未修改, 即版本庫中的檔案快照内容與檔案夾中完全一緻. 這種類型的文 件有兩種去處, 如果它被修改, 而變為 <code>Modified</code> . 如果使用 <code>git rm</code> 移出版本庫, 則成為 <code>Untracked</code> 檔案

Modified: 檔案已修改, 僅僅是修改, 并沒有進行其他的操作. 這個檔案也有兩個去處, 通過 <code>git add</code> 可進入暫存 <code>staged</code> 狀态, 使用 <code>git checkout</code> 則丢棄修改過, 傳回到 <code>unmodify</code> 狀态, 這個 <code>git checkout</code> 即從庫中取出檔案, 覆寫目前修改 !

Staged: 暫存狀态. 執行 <code>git commit</code> 則将修改同步到庫中, 這時庫中的檔案和本地檔案又變為一 緻, 檔案為 <code>Unmodify</code>狀态. 執行 git <code>reset HEAD filename</code> 取消暫存, 檔案狀态為 Modified

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

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

忽略檔案中的空行或以井号(#)開始的行将會被忽略。

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

如果名稱的最前面有一個感歎号(!),表示例外規則,将不被忽略。

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

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

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

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

Git入門
Git入門

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

公鑰生成目錄

Git入門

執行指令,生成公鑰

Git入門

3、将公鑰資訊public key 添加到碼雲賬戶中即可!

Git入門

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

建立倉庫

Git入門

倉庫設定

Git入門

克隆到本地!

1、建立項目,綁定git。

将我們遠端的git檔案目錄克隆之後剪切到我們建立的項目中即可!

Git入門

注意觀察IDEA中的變化

Git入門

2、修改檔案,使用IDEA操作git。

添加到暫存區

commit 送出

push到遠端倉庫

3、送出測試

Git入門

這些都是單個人的操作!

分支在GIT中相對較難,分支就是科幻電影裡面的平行宇宙,如果兩個平行宇宙互不幹擾,那對現在的你 也沒啥影響。不過,在某個時間點,兩個平行宇宙合并了,我們就需要處理一些問題了!

Git入門
Git入門

git分支中常用指令:

Git入門

如果同一個檔案在合并分支時都被修改了則會引起沖突:解決的辦法是我們可以修改沖突檔案後重新提 交!

master主分支應該非常穩定,用來釋出新版本,一般情況下不允許在上面工作,工作一般情況下在建立 的dev分支上工作,工作完後,比如上要釋出,或者說dev分支代碼穩定後可以合并到主分支master上 來。