天天看點

git 的使用方法(上 - 指令)前言:一、Git 是什麼?二、SVN與Git的最主要的差別?三、Git 安裝四、git 配置五、Git 的使用流程檢視分支建立分支切換分支分支合并删除分支合并記錄rebase 操作合并沖突建立 tag 檢視 tag六、在使用指令時出現的問題總結:

目錄

  • 前言:
  • 一、Git 是什麼?
  • 二、SVN與Git的最主要的差別?
  • 三、Git 安裝
  • 四、git 配置
    • 1. 建立倉庫 - repository
    • 2. 配置
    • 3. 工作流與基本操作
  • 五、Git 的使用流程
    • 1. 倉庫中建立 1.txt檔案
    • 2. 檢視工作區的檔案狀态
    • 3. 添加工作區檔案到暫存區
    • 4. 建立版本
    • 5. 檢視送出日志
    • 6. 修複送出
    • 7. 删除
    • 8. 撤銷重置
    • 9. 比較
    • 10. 分支
    • 11. 标簽
  • 六、在使用指令時出現的問題
    • 1. 顯示亂碼問題
    • 2. 使用 git commit 指令出現以下問題
  • 總結:

前言:

在工作中我們的項目一般都是多人合作完成的,這樣就需要用到 git 了,跟随本文來一起學習把!

一、Git 是什麼?

Git

是目前世界上最先進的

分布式

版本控制系統。

工作原理 / 流程:

git 的使用方法(上 - 指令)前言:一、Git 是什麼?二、SVN與Git的最主要的差別?三、Git 安裝四、git 配置五、Git 的使用流程檢視分支建立分支切換分支分支合并删除分支合并記錄rebase 操作合并沖突建立 tag 檢視 tag六、在使用指令時出現的問題總結:
  • Workspace

    :工作區
  • Index / Stage

    :暫存區
  • Repository

    :倉庫區(或本地倉庫)
  • Remote

    :遠端倉庫

二、SVN與Git的最主要的差別?

SVN

集中式

版本控制系統,版本庫是集中放在中央伺服器的,而幹活的時候,用的都是自己的電腦,是以首先要從中央伺服器哪裡得到最新的版本,然後幹活,幹完後,需要把自己做完的活推送到中央伺服器。集中式版本控制系統是必須聯網才能工作,如果在區域網路還可以,帶寬夠大,速度夠快,如果在網際網路下,如果網速慢的話,就納悶了。

Git

分布式

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

三、Git 安裝

Windows 下載下傳位址:https://git-scm.com/download/win

git 的使用方法(上 - 指令)前言:一、Git 是什麼?二、SVN與Git的最主要的差別?三、Git 安裝四、git 配置五、Git 的使用流程檢視分支建立分支切換分支分支合并删除分支合并記錄rebase 操作合并沖突建立 tag 檢視 tag六、在使用指令時出現的問題總結:

點選下載下傳後除了下圖的步驟外,其他預設進行安裝即可

git 的使用方法(上 - 指令)前言:一、Git 是什麼?二、SVN與Git的最主要的差別?三、Git 安裝四、git 配置五、Git 的使用流程檢視分支建立分支切換分支分支合并删除分支合并記錄rebase 操作合并沖突建立 tag 檢視 tag六、在使用指令時出現的問題總結:

四、git 配置

當安裝完成後,在需要配置

git

的檔案中,使用

cmd

進入

黑視窗

,或者右鍵點選

Git Bash Here

進入配置視窗中。

1. 建立倉庫 - repository

進入希望納入

git

版本控制的項目目錄,使用

git init

初始化

git init
           

該指令将建立一個名為

.git

的子目錄,這個子目錄含有你初始化的

Git

倉庫中所有的必須檔案,這個目錄也是上面我們說的三個區域之一,這個目錄也是

Git

儲存資料記錄的地方,非常重要,如非必要,不要輕易改動。

當然我們很多人,是看不到

.git

的子目錄的,這和我們電腦的設定有關,根據下圖進行調整,就會顯示出來了。
git 的使用方法(上 - 指令)前言:一、Git 是什麼?二、SVN與Git的最主要的差別?三、Git 安裝四、git 配置五、Git 的使用流程檢視分支建立分支切換分支分支合并删除分支合并記錄rebase 操作合并沖突建立 tag 檢視 tag六、在使用指令時出現的問題總結:

2. 配置

當建立完倉庫後,需要設定你的使用者名稱與郵件位址。 這樣做很重要,因為每一個 Git 的送出都會使用這些資訊,并且它會寫入到你的每一次送出中,不可更改。

git config user.name "你的姓名"
git config user.email "你的郵箱"
           

-- global

通過

--global

選項可以設定全局配置資訊

git config --global user.name "你的姓名"
git config --global user.email "你的郵箱"
           

檢查配置

// # 列印所有config
git config --list
// # 列印指定config
git config user.name
           

3. 工作流與基本操作

當一個項目被

Git

初始化以後,隻是表示我們希望通過

Git

來管理目前的這個項目檔案的不同時期版本記錄,但是這個時候項目中已存在的檔案,或者以後新增的檔案都是沒有進入版本控制管理的,它們是

未追蹤(Untracked)

的狀态。

五、Git 的使用流程

git 的使用方法(上 - 指令)前言:一、Git 是什麼?二、SVN與Git的最主要的差別?三、Git 安裝四、git 配置五、Git 的使用流程檢視分支建立分支切換分支分支合并删除分支合并記錄rebase 操作合并沖突建立 tag 檢視 tag六、在使用指令時出現的問題總結:

1. 倉庫中建立 1.txt檔案

使用以下指令建立

1.txt

檔案:

cd .> 1.txt
           
git 的使用方法(上 - 指令)前言:一、Git 是什麼?二、SVN與Git的最主要的差別?三、Git 安裝四、git 配置五、Git 的使用流程檢視分支建立分支切換分支分支合并删除分支合并記錄rebase 操作合并沖突建立 tag 檢視 tag六、在使用指令時出現的問題總結:

2. 檢視工作區的檔案狀态

使用以下指令檢視工作區的檔案狀态:

git status
           
git 的使用方法(上 - 指令)前言:一、Git 是什麼?二、SVN與Git的最主要的差別?三、Git 安裝四、git 配置五、Git 的使用流程檢視分支建立分支切換分支分支合并删除分支合并記錄rebase 操作合并沖突建立 tag 檢視 tag六、在使用指令時出現的問題總結:
使用

git status

檢視狀态,紅色字型顯示在工作區,綠色字型顯示在暫存區

3. 添加工作區檔案到暫存區

通過以下指令添加工作區檔案到暫存區:

git add 1.txt
// # 添加多個檔案
git add 2.txt 3.txt
// # 添加整個目錄
git add ./a
// # 添加多個目錄
git add ./b ./c
// # 添加所有檔案
git add .
           
git 的使用方法(上 - 指令)前言:一、Git 是什麼?二、SVN與Git的最主要的差別?三、Git 安裝四、git 配置五、Git 的使用流程檢視分支建立分支切換分支分支合并删除分支合并記錄rebase 操作合并沖突建立 tag 檢視 tag六、在使用指令時出現的問題總結:

4. 建立版本

使用以下指令,将暫存區裡的改動給送出到本地

git

倉庫,也就是為這次工作(一般會把某個具有特定意義的工作作為一個版本,它可以是多個檔案的變化)

git commit
// # 會調用預設(或自定義)的文本編輯器

// 直接在 cmd 中使用,無需打開編輯器
git commit -m "用簡潔的文法把 git 倉庫中的改動寫出來"
           
git 的使用方法(上 - 指令)前言:一、Git 是什麼?二、SVN與Git的最主要的差別?三、Git 安裝四、git 配置五、Git 的使用流程檢視分支建立分支切換分支分支合并删除分支合并記錄rebase 操作合并沖突建立 tag 檢視 tag六、在使用指令時出現的問題總結:
備注資訊中不要使用

空格

否則會報錯。

5. 檢視送出日志

通過以下指令檢視送出日志:

// 完整格式
git log
// 簡要格式(單行)
git log --oneline
           
git 的使用方法(上 - 指令)前言:一、Git 是什麼?二、SVN與Git的最主要的差別?三、Git 安裝四、git 配置五、Git 的使用流程檢視分支建立分支切換分支分支合并删除分支合并記錄rebase 操作合并沖突建立 tag 檢視 tag六、在使用指令時出現的問題總結:

6. 修複送出

使用以下指令使用修複(替換上一次)送出,在不增加一個新的送出版本的情況下将新修改的代碼追加到前一次的送出中

git commit --amend -m 送出
           
git 的使用方法(上 - 指令)前言:一、Git 是什麼?二、SVN與Git的最主要的差別?三、Git 安裝四、git 配置五、Git 的使用流程檢視分支建立分支切換分支分支合并删除分支合并記錄rebase 操作合并沖突建立 tag 檢視 tag六、在使用指令時出現的問題總結:

7. 删除

通過以下指令可以删除檔案:

// # 從 git 倉庫與工作區中删除指定檔案
git rm 檔案

// # 隻删除 git 倉庫中的檔案
git rm --cached 檔案

// # rm 以後,需要 commit 這次操作,否則 rm 将保留在暫存區
git commit -m 修正
           
git 的使用方法(上 - 指令)前言:一、Git 是什麼?二、SVN與Git的最主要的差別?三、Git 安裝四、git 配置五、Git 的使用流程檢視分支建立分支切換分支分支合并删除分支合并記錄rebase 操作合并沖突建立 tag 檢視 tag六、在使用指令時出現的問題總結:

8. 撤銷重置

git reset

從暫存區中撤銷到工作區

// 從暫存區中撤銷一個指定檔案
git reset HEAD 檔案名稱
// 從暫存區中國年撤銷所有檔案
git reset HEAD .
           

該指令既可以用于回退版本

// # 回退到指定的 commitID 版本
git reset --hard commitID
           
git 的使用方法(上 - 指令)前言:一、Git 是什麼?二、SVN與Git的最主要的差別?三、Git 安裝四、git 配置五、Git 的使用流程檢視分支建立分支切換分支分支合并删除分支合并記錄rebase 操作合并沖突建立 tag 檢視 tag六、在使用指令時出現的問題總結:

9. 比較

通過以下指令可以進行比較:

// # 比較 工作區和暫存區
git diff 檔案 
// # 比較 暫存區和倉庫
git diff --cached [commitId] 檔案
// # 比較 工作區和倉庫
git diff commitId filename
// # 比較 倉庫不同版本
git diff commitId1 commitId2
           
git 的使用方法(上 - 指令)前言:一、Git 是什麼?二、SVN與Git的最主要的差別?三、Git 安裝四、git 配置五、Git 的使用流程檢視分支建立分支切換分支分支合并删除分支合并記錄rebase 操作合并沖突建立 tag 檢視 tag六、在使用指令時出現的問題總結:

10. 分支

我們的開發就像是遊戲的任務,預設是在主線

(master)

上進行開發的。許多時候,還有各種支線任務,

git

支援我們建立分支來進行項目開發。

檢視分支

git branch
           
git 的使用方法(上 - 指令)前言:一、Git 是什麼?二、SVN與Git的最主要的差別?三、Git 安裝四、git 配置五、Git 的使用流程檢視分支建立分支切換分支分支合并删除分支合并記錄rebase 操作合并沖突建立 tag 檢視 tag六、在使用指令時出現的問題總結:

建立分支

git branch 分支名稱
           
git 的使用方法(上 - 指令)前言:一、Git 是什麼?二、SVN與Git的最主要的差別?三、Git 安裝四、git 配置五、Git 的使用流程檢視分支建立分支切換分支分支合并删除分支合并記錄rebase 操作合并沖突建立 tag 檢視 tag六、在使用指令時出現的問題總結:

切換分支

git checkout 分支名稱
// # 也可以使用 checkout -b 來建立分支
git checkout -b 分支名稱
           
git 的使用方法(上 - 指令)前言:一、Git 是什麼?二、SVN與Git的最主要的差別?三、Git 安裝四、git 配置五、Git 的使用流程檢視分支建立分支切換分支分支合并删除分支合并記錄rebase 操作合并沖突建立 tag 檢視 tag六、在使用指令時出現的問題總結:

分支合并

// # B 合并到 A,需要切換到 A 分支
git merge 被合并分支

// # 檢視已經合并的分支
git branch --merged
// # 檢視未合并的分支
git branch --no-merged
           
git 的使用方法(上 - 指令)前言:一、Git 是什麼?二、SVN與Git的最主要的差別?三、Git 安裝四、git 配置五、Git 的使用流程檢視分支建立分支切換分支分支合并删除分支合并記錄rebase 操作合并沖突建立 tag 檢視 tag六、在使用指令時出現的問題總結:

删除分支

// # 如果分支為未合并狀态,則不允許删除
git branch -d 分支名稱
// # 強制删除
git branch -D 分支名稱
           
git 的使用方法(上 - 指令)前言:一、Git 是什麼?二、SVN與Git的最主要的差別?三、Git 安裝四、git 配置五、Git 的使用流程檢視分支建立分支切換分支分支合并删除分支合并記錄rebase 操作合并沖突建立 tag 檢視 tag六、在使用指令時出現的問題總結:

合并記錄

rebase

// # 合并 HEAD 前兩個祖先記錄
git rebase -i HEAD~2
           

~ : 縱向

^ : 橫向

git 的使用方法(上 - 指令)前言:一、Git 是什麼?二、SVN與Git的最主要的差別?三、Git 安裝四、git 配置五、Git 的使用流程檢視分支建立分支切換分支分支合并删除分支合并記錄rebase 操作合并沖突建立 tag 檢視 tag六、在使用指令時出現的問題總結:

rebase 操作

# p, pick = use commit => 使用
# r, reword = use commit, but edit the commit message => 使用,但重新編輯說明
# e, edit = use commit, but stop for amending => 使用
# s, squash = use commit, but meld into previous commit => 使用,但合并上一次
# f, fixup = like "squash", but discard this commit's log message => 就像 squash 那樣,但會抛棄這個 Commit 的 Commit message
# x, exec = run command (the rest of the line) using shell => 執行腳本
# d, drop = remove commit => 移除
           
git rebase -i HEAD~3
// # 彈出編輯器,根據需要的進行修改,然後儲存
// # 如果為 r,s 則會再次彈出編輯器,修改新的 commit message,修改之後儲存
           
如果出現一些問題,可以通過

git rebase --edit-todo

git rebase --continue

進行重新編輯儲存

合并沖突

有的時候,不同的分支可能會對同一個檔案内容和位置上進行操作,這樣在合并的過程中就會産生沖突

  • 檢視沖突檔案
git 的使用方法(上 - 指令)前言:一、Git 是什麼?二、SVN與Git的最主要的差別?三、Git 安裝四、git 配置五、Git 的使用流程檢視分支建立分支切換分支分支合并删除分支合并記錄rebase 操作合并沖突建立 tag 檢視 tag六、在使用指令時出現的問題總結:
  • 修複沖突内容
git 的使用方法(上 - 指令)前言:一、Git 是什麼?二、SVN與Git的最主要的差別?三、Git 安裝四、git 配置五、Git 的使用流程檢視分支建立分支切換分支分支合并删除分支合并記錄rebase 操作合并沖突建立 tag 檢視 tag六、在使用指令時出現的問題總結:

比較變更:

git 的使用方法(上 - 指令)前言:一、Git 是什麼?二、SVN與Git的最主要的差別?三、Git 安裝四、git 配置五、Git 的使用流程檢視分支建立分支切換分支分支合并删除分支合并記錄rebase 操作合并沖突建立 tag 檢視 tag六、在使用指令時出現的問題總結:
  • 送出

11. 标簽

有的時候,我們希望給某一個特定的曆史送出打上一些标簽。

建立 tag

git tag -a v1.0.0 HEAD/commitId
           

檢視 tag

git tag
           

六、在使用指令時出現的問題

1. 顯示亂碼問題

如果文字顯示為亂碼執行以下指令:

// 進入windoes的cmd 然後分别輸入以下五行
git config --global core.quotepath false
git config --global gui.encoding utf-8
git config --global i18n.commit.encoding utf-8
git config --global i18n.logoutputencoding utf-8
set LESSCHARSET=utf-8
           
git 的使用方法(上 - 指令)前言:一、Git 是什麼?二、SVN與Git的最主要的差別?三、Git 安裝四、git 配置五、Git 的使用流程檢視分支建立分支切換分支分支合并删除分支合并記錄rebase 操作合并沖突建立 tag 檢視 tag六、在使用指令時出現的問題總結:

2. 使用 git commit 指令出現以下問題

當需要送出檔案到本地倉庫時,使用

git commit

問題出現以下問題,輸入

:wq

後回車解決問題。

git 的使用方法(上 - 指令)前言:一、Git 是什麼?二、SVN與Git的最主要的差別?三、Git 安裝四、git 配置五、Git 的使用流程檢視分支建立分支切換分支分支合并删除分支合并記錄rebase 操作合并沖突建立 tag 檢視 tag六、在使用指令時出現的問題總結:

總結:

歡迎大家加入我的社群,在社群中會不定時釋出一些精選内容:https://bbs.csdn.net/forums/db95ba6b828b43ababd4ee5e41e8d251?category=10003

以上就是 git 的使用方法(上 - 指令),不懂得也可以在評論區裡問我或私聊我詢問,以後會持續釋出一些新的功能,敬請關注。

我的其他文章:https://blog.csdn.net/weixin_62897746?type=blog