1. 程式人生 > 其它 >Git 教程

Git 教程

Git教程

Git配置命令

#檢視git所有配置
git config -l
#檢視git系統配置
git config --system --list
#檢視當前使用者配置
git config --global --list

Git配置

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

​ plain.textconv=astex

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

​ 這裡可以直接編輯配置檔案,通過命令設定後會同步更新此檔案

配置使用者個性配置

#引號可以有也可以沒有
git config --global user.name "pixiang"
git config --global user.email "[email protected]"

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 的工作流程:

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

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

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

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

Git專案搭建

建立工作目錄與常用命令

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

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

本地倉庫搭建

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

1.建立全新的,需要用git管理的專案的根目錄下執行:

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

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

克隆遠端倉庫

將遠端伺服器上的倉庫完全映象一份至本地

#克隆一個專案和它的整個程式碼歷史(版本資訊)
git clone [url]

Git檔案操作

檔案的4種狀態

版本控制就是對檔案的版本控制,要對檔案進行修改、提交操作,首先要知道檔案當前處於什麼狀態,不然可能會提交了現在還不想提交的檔案,或者要提交的檔案沒提交上去

  • Untranked:未跟蹤,此檔案在資料夾中,但並沒有加入到git庫,不參與版本控制,通過 git add 命令將狀態變為 Stage
  • Unmodify:檔案已經入庫,未修改,即版本庫中的檔案快照內容與資料夾中完全一致,這種型別的檔案有兩種去處,如果它被修改,變為 Modified,如果用 git rm移出版本庫,則變成 Untracked檔案
  • Modified:檔案已修改,僅僅是修改,並沒有進行其他的操作,這個檔案也有兩個去處,通過 git add可進入暫存Stagez狀態,使用 git checkout則丟棄修改,返回到Unmodify狀態,這個git checkout即從庫中取出檔案,覆蓋當前修改
  • Stage:暫存狀態,執行git commit則將修改同步到庫中,這時庫中的檔案和本地檔案又變為一致,檔案為Unmodify狀態,執行git rest HEAD filename取消暫存,檔案狀態變為Modified

檢視檔案狀態

#檢視指定檔案狀態
git status [filename]
#檢視所有檔案狀態
git status 
#新增所有檔案到暫存區
git add .
#提交暫存區中的內容到本地倉庫 -m 提交資訊
git commit -m "提交內容描述"

忽略檔案

根目錄下建立".gitignore"檔案,此檔案規則如下:

  1. 忽略檔案中的空行或以井號(#)開始的行將會被忽略
  2. 可以使用Linux萬用字元。例如*代表任意多個字元,?代表一個字元,[abcd]代表可選字元範圍,{aaa,bb,cc}代表可選的字串
  3. 如果名稱的最前面有一個 !,表示例外規則,將不被忽略
  4. 如果名稱的最前面是一個 /,表示要被忽略的檔案在此目錄下,而子目錄中的檔案不被忽略
  5. 如果名稱的最後面試一個 /,表示要忽略的是此目錄下該名稱的子目錄,而非檔案(預設檔案或目錄都被忽略)

Git 分支

分支在git中相對較難

git分支常用命令

#列出所有本地分支
git branch

#列出所有遠端分支
git branch -r

#新建一個分支,但依然停留在當前分支
git branch [branch-name]

#新建一個分支,並切換到該分支
git branch -b [branch-name]

#合併指定分支到當前分支
git merge [branch]

#刪除分支
git branch -d [branch-name]

#刪除遠端分支
git push origin --delete [branch-name]
git branch -dr [remote/branch]

解決檔案衝突

如果將一個檔案在合併分支的時候都被修改了則會引起衝突:解決衝突的辦法是我們可以修改衝突檔案後重新提交。master主分支應該非常穩定,用來發布新版本,一般情況下不允許在master分支上面修改程式碼,工作一般情況下在新建的dev分支上工作,工作完成後,要上線釋出,或者dev分支程式碼穩定後可以合併到主分支master上來