學習 Git 這一篇就夠了


第一章 Git 概述

1.一、Git 概述

Git 是一個開源的分佈式版本控制系統,用於敏捷高效地處理任何或小或大的項目。git

Git 是 Linus Torvalds 爲了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。服務器

Git 與經常使用的版本控制工具 SVN,CVS,Subversion 等不一樣,它採用了分佈式版本庫的方式,沒必要服務器端軟件支持。分佈式

Git 不只僅是個版本控制系統,它也是個內容管理系統 (CMS),工做管理系統等。ide

若是你是一個具備使用 SVN 背景的人,你須要作必定的思想轉換,來適應 Git 提供的一些概念和特徵。工具

1.二、Git 官網

官方地址:https://git-scm.com/fetch

下載地址:https://git-scm.com/downloads操作系統

1.三、Git 安裝

安裝版本:Git-2.22.0-64-bit.exe版本控制

img

img

img

img

img

img

img

img

img

img

img

img

img

第二章 Git 工做流程

2.一、單人開發流程

img

2.二、團隊內部協做

img

第三章 Git 基本操做

3.一、配置的操做

3.1.一、查看當前 Git 配置

git config --list複製代碼

3.1.二、編輯當前 Git 配置

編輯本地倉庫級別的配置文件: 僅在當前本地倉庫範圍有效,該文件默認在工做空間/.git/config日誌

git config -e複製代碼

編輯系統用戶級別的配置文件: 登陸操做系統用戶範圍有效,該文件默認在~/.gitconfigblog

git config -e --global複製代碼

3.1.三、添加當前 Git 簽名

本地倉庫級別 Git 簽名:

git config user.name [用戶名稱]
git config user.email [用戶郵箱]複製代碼

系統用戶級別 Git 簽名:

git config --global user.name [用戶名稱]
git config --global user.email [用戶郵箱]複製代碼

3.二、初始化操做

# 在當前目錄建立一個本地倉庫
git init

# 在當前目錄建立指定名稱目錄,並將其初始化本地倉庫
git init [倉庫名稱]複製代碼

3.三、暫存區操做

3.3.一、添加文件

# 添加指定文件到暫存區
git add [文件1] [文件2] ...

# 添加指定目錄到暫存區
git add [目錄名]

# 添加當前目錄的全部文件到暫存區
git add .複製代碼

3.3.二、刪除文件

# 普通刪除工做區文件,而且將此次刪除放入暫存區
git rm [文件1] [文件2] ...

# 強制刪除工做區文件,而且將此次刪除放入暫存區
git rm --force [文件1] [文件2] ...

# 若是想把文件從暫存區域移除,但仍然但願保留在當前工做目錄中,使用 --cached 選項便可
git rm --cached [文件1] [文件2] ...複製代碼

3.3.三、更名文件

# 更名文件,而且將這個更名放入暫存區
git mv [舊文件名] [新文件名]複製代碼

3.3.四、查看狀態

# 文件,文件夾在工做區,暫存區的狀態
git status複製代碼

3.四、本地庫操做

3.4.一、從暫存區提交文件

# 提交暫存區到本地倉庫
git commit -m [備註信息]

# 提交暫存區的指定文件到本地倉庫
git commit -m [備註信息] [文件1] [文件2] ...

# 提交工做區自上次commit以後的變化到本地倉庫
git commit -a

# 提交時顯示全部diff信息
git commit -v

# 使用一次新的commit,替代上一次提交
# 若是文件沒有任何新變化,則用來改寫上一次commit的備註信息
git commit --amend -m [備註信息]

# 重作上一次commit,幷包括指定文件的新變化
git commit --amend [文件1] [文件2] ...複製代碼

3.4.二、從遠程庫克隆文件

# 下載遠程倉庫的一個項目(包括歷史記錄版本)到本地的當前目錄下
git clone [遠程倉庫項目地址]複製代碼

3.4.三、從遠程庫更新文件

# 下載遠程倉庫的全部變更
git fetch [遠程倉庫項目地址]複製代碼

3.4.四、查看推送歷史版本

# 顯示當前分支的版本歷史
git log

# 顯示當前分支的版本歷史,美化輸出格式(顯示所有hash值)
git log --pretty=oneline

# 顯示當前分支的版本歷史,美化輸出格式(顯示部分hash值)
git log --oneline

# 顯示當前分支的版本歷史,以及每次commit發生變動的文件
git log --stat
 
# 根據關鍵詞搜索提交歷史
git log -S [關鍵詞]

# 顯示指定次數的提交歷史
git log -10複製代碼

3.五、遠程庫操做

3.5.一、別名設置

# 查看當前全部遠程地址別名
git remote -v

# 增長一個新的遠程地址別名
git remote add [遠程地址別名] [遠程地址]

# 顯示指定的遠程地址的信息
git remote show [遠程地址別名]複製代碼

3.5.二、推送分支

# 上傳本地指定分支到遠程倉庫
git push [遠程地址別名] [本地分支名]

# 強行推送當前分支到遠程倉庫,即便有衝突
git push --force [遠程地址別名]
 
# 推送全部分支到遠程倉庫
git push --all [遠程地址別名]

# 刪除遠程分支
git push [遠程地址別名] --delete [遠程分支名]複製代碼

3.六、工做區操做

3.6.一、從本地庫檢出

# 恢復暫存區的指定文件到工做區
git checkout [文件1] [文件2] ...
 
# 恢復某個commit的指定文件到暫存區和工做區
git checkout [commithash] [文件1] [文件2] ...
 
# 恢復暫存區的全部文件到工做區
git checkout .複製代碼

3.6.二、從遠程庫拉取

# 取回遠程倉庫的變化,並與本地分支合併
git pull [遠程地址別名] [本地分支名]複製代碼

3.6.三、比較文件差別

# 將工做區中的文件和暫存區進行比較
git diff [文件名]

# 將工做區中的文件和本地庫歷史記錄比較
git diff [commithash] [文件名]

# 查看未提交的暫存
git diff --cached複製代碼

3.七、重置各區內容

# 用commithash的內容重置HEAD內容
git reset --soft [commithash]

# 用commithash的內容重置HEAD內容,重置暫存區
git reset --mixed [commithash]

# 用commithash的內容重置HEAD內容,重置暫存區,重置工做目錄
git reset --hard [commithash]複製代碼

3.八、歷史版本回退

  • 基於哈希索引值的操做
    • git reset --hard [commithash]
    • 注意:該方法既能夠前進,也能夠後退,是推薦使用的方法
  • 使用 ^ 符號:只能後退
    • git reset --hard HEAD^
    • 注意:一個 ^ 表示後退一步,n 個表示後退 n 步
  • 使用~ 符號:只能後退
    • git reset --hard HEAD~n
    • 注意:表示後退 n 步

3.九、標籤簽名管理

# 列出全部tag
git tag

# 查看tag信息
git show [tag]

# 新建一個tag在當前commit
git tag [tag]

# 新建一個tag在指定commit
git tag [tag] [commithash]

# 刪除本地tag
git tag -d [tag]

# 提交指定tag
git push [遠程地址別名] [tag]

# 刪除遠程tag
git push [遠程地址別名] :refs/tags/[tagName]

# 提交全部tag
git push [遠程地址別名] --tags複製代碼
第四章 Git 分支管理

4.一、分支概述

幾乎全部的版本控制系統都以某種形式支持分支。

使用分支意味着你能夠把你的工做從開發主線上分離開來,以避免影響開發主線。

在不少版本控制系統中,這是一個略微低效的過程,經常須要徹底建立一個源代碼目錄的副本。

對於大項目來講,這樣的過程會耗費不少時間。

有人把 Git 的分支模型稱爲它的 「必殺技特性」,也正由於這一特性,使得 Git 從衆多版本控制系統中脫穎而出。

爲什麼 Git 的分支模型如此出衆呢?

Git 處理分支的方式可謂是難以置信的輕量,建立新分支這一操做幾乎能在瞬間完成,而且在不一樣分支之間的切換操做也是同樣便捷。

與許多其它版本控制系統不一樣,Git 鼓勵在工做流程中頻繁地使用分支與合併,哪怕一天以內進行許屢次。

理解和精通這一特性,你便會意識到 Git 是如此的強大而又獨特,而且今後真正改變你的開發方式。

4.二、建立分支

# 建立指定名稱的本地分支
git branch [分支名]複製代碼

4.三、查看分支

# 列出全部本地分支
git branch

# 列出全部本地分支以及每一個分支最新的版本
git branch -v

# 列出全部遠程分支
git branch -r

# 列出全部本地分支和遠程分支
git branch -a複製代碼

4.四、切換分支

# 切換到指定的分支
git checkout [分支名]

# 切換到上一個分支
git checkout -

# 新建一個本地分支,指向某個tag
git checkout -b [新建分支名稱] [tag]複製代碼

4.五、合併分支

# 第一步:切換到被合併分支上
git checkout [被合併分支名]

# 第二步:執行 merge 命令
git merge [要合併分支名]複製代碼

4.六、刪除分支

# 刪除本地分支
git branch -d [本地分支名]複製代碼

4.七、解決衝突

衝突的表現:

img

衝突的解決:

  • 第一步:編輯文件,刪除特殊符號
  • 第二步:把文件修改到滿意的程度,保存退出
  • 第三步:git add [文件名]
  • 第四步:git commit -m 「日誌信息」
相關文章
相關標籤/搜索