Git全棧開發(fā)使用指南

一厚棵、Git基礎

1

1、Git簡介

Git是一種分布式版本控制系統(tǒng)箫津,由Linux之父Linus開發(fā)狭姨。

所謂分布式版本管理系統(tǒng),就是在每一臺機器上都有一個完整的倉庫苏遥。

image-20201229212250725

2饼拍、Git官網(wǎng)

Git官網(wǎng):git

image-20201229212543426

在官網(wǎng)上可以獲取Git的安裝軟件。

除此之外田炭,還可以下載《progit》——這是最棒的Git學習資料师抄,而且有中文版本。

3教硫、Git安裝

https://git-scm.com/downloads官方下載地址下載對應的操作系統(tǒng)版本一步步安裝即可叨吮。

在這里插入圖片描述

4、Git基本配置

安裝完成之后瞬矩,在任意目錄下挤安,右鍵 Git Bash Here

在這里插入圖片描述

全局配置郵箱和用戶名(–global表示全局配置,也可以不配置丧鸯,每個倉庫單獨配置)

$ git config --global user.name "test"
$ git config --global user.email test@qq.com

5蛤铜、Git基本概念

5.1、Git工作區(qū)域

Git有四個工作區(qū)域:

  • 工作區(qū)

    簡單說工作區(qū)就是我們項目的目錄丛肢。

    image-20201229220303023
  • 倉庫區(qū)/本地倉庫

    工作區(qū)有一個.git目錄围肥,其實這個不是工作區(qū),是Git的版本庫蜂怎,存儲了Git倉庫的所有版本信息

    image-20201229220345268
    在這里插入圖片描述
  • 暫存區(qū)

    暫存區(qū)域是一個文件穆刻,保存了下次將提交的文件列表信息,一般在 Git 倉庫目錄中杠步。 有時候也被稱作“索引”氢伟,

    不過一般說法還是叫暫存區(qū)域榜轿。

  • 遠程倉庫

    對于分布式版本管理系統(tǒng),遠程倉庫不是必須存在的朵锣,但是通常項目都會有遠程倉庫谬盐。例如Github就是我們非常熟悉的遠程倉庫。

image-20201229221144078

基本的Git工作流程如下:

  • 在工作目錄修改文件
  • 暫存文件诚些,將文件快照放入暫存區(qū)
  • 提交更新飞傀,找到暫存區(qū)的文件,將快照永久性存儲到到 Git 倉庫區(qū)(本地)
  • 將本地倉庫的變更推送到遠程倉庫

以上幾個區(qū)域的關系可以用下圖表示:

img

5.2诬烹、Git分支

分支是為了將修改記錄的整個流程分開存儲砸烦,讓分開的分支不受其它分支的影響,所以在同一個數(shù)據(jù)庫里可以同時進行多個不同的修改绞吁。

在這里插入圖片描述

Git 為我們自動創(chuàng)建的第一個分支幢痘,也叫主分支,一般其它分支開發(fā)完成后都要合并到 master

在這里插入圖片描述

5.3家破、Git文件狀態(tài)

在git中雪隧,文件主要有四種狀態(tài):

Life Cycle
  • Untracked: 未跟蹤, 此文件在文件夾中, 但并沒有加入到git庫, 不參與版本控制. 通過git add 狀態(tài)變?yōu)?code>Staged.

  • Unmodify(Committed): 文件已經(jīng)入庫, 未修改, 即版本庫中的文件快照內(nèi)容與文件夾中完全一致. 這種類型的文件有兩種去處, 如果它被修改, 而變?yōu)?code>Modified. 如果使用git rm移出版本庫, 則成為Untracked文件

  • Modified: 文件已修改, 僅僅是修改, 并沒有進行其他的操作. 這個文件也有兩個去處, 通過git add可進入暫存staged狀態(tài), 使用git checkout 則丟棄修改過, 返回到unmodify狀態(tài), 這個git checkout即從庫中取出文件, 覆蓋當前修改

  • Staged: 暫存狀態(tài). 執(zhí)行git commit則將修改同步到庫中, 這時庫中的文件和本地文件又變?yōu)橐恢? 文件為Unmodify狀態(tài). 執(zhí)行git reset HEAD filename取消暫存, 文件狀態(tài)為Modified

二、Git應用實踐

看完上面的Git基礎员舵,你可能有一些迷惑脑沿,接下來,我們以實際工作中開發(fā)的流程來加深對Git的理解吧马僻。

1庄拇、克隆項目

可以通過在工作區(qū)使用git init來初始化一個Git倉庫,但通常開發(fā)中我們不會這樣做韭邓,因為實際的項目大部分已經(jīng)進行了部分開發(fā)措近,并進行了版本管理,所以我們首先做的是從遠程倉庫克隆項目女淑。

這里我從Gitee(一般開發(fā)項目的遠程倉庫是部署在內(nèi)網(wǎng)的GitLab) fork了一個開源項目瞭郑,將這個項目作為遠程倉庫的項目:

image-20201229214855118

點擊克隆下載,可以看到項目的路徑鸭你,

  • HTTPS是憑據(jù)式的路徑屈张,使用此路徑,向遠程倉庫推送代碼的時候需要憑據(jù)(賬號密碼)袱巨;

    這種方式向遠程倉庫提交阁谆,會要求賬號密碼,輸入完成之后愉老,Win10操作系統(tǒng)可以選擇記住憑據(jù)场绿,這樣就不用每一次都輸入了,Win10操作系統(tǒng)管理憑據(jù) 控制面板 → 用戶帳戶 → 憑據(jù)管理器 → Windows憑據(jù)

    image-20201230174621550
  • SSH是秘鑰式的路徑嫉入,向遠程倉庫推送代碼的時候焰盗,需要本地的私鑰和遠程倉庫的公鑰對應璧尸。

    SSH配置可以參考 Windows配置Github、Gitee共存的Git環(huán)境熬拒,這里就不詳細展開講解爷光。

我已經(jīng)進行了公私鑰的配置,所以這里選擇SSH梦湘。

image-20201229215107233

使用git clone命令克隆項目

image-20201229215845069

2、代碼管理

項目已經(jīng)成功克隆件甥,接下來要進行我們的開發(fā)了捌议。

2.1、創(chuàng)建分支

通常開發(fā)不是在Master分支上引有,而是在開發(fā)分支上瓣颅,使用 git branch develop創(chuàng)建一個新分支:

image-20201229222931344

可以通過git branch命令列出所有分支:

image-20201229223057016

可以看到我們新建的分支。

2.2譬正、切換分支

使用git checkout develop命令切換到新建的develop分支:

image-20201229223325328

2.3宫补、添加文件到暫存區(qū)

接下來,我們再develop分支上進行一些開發(fā)操作曾我,我這里對 redeme 進行了一些修改粉怕,需要把修改添加到暫存區(qū)。

  • 首先通過 git status命令查看工作區(qū)文件狀態(tài)

    image-20201229223653744
  • 接下來使用 git add README.md命令(可以使用git add .添加所有修改)將更改添加到暫存區(qū)

image-20201229223945199

可以看到文件已經(jīng)添加抒巢。

2.4贫贝、提交修改到倉庫

接下來使用git commit -m "??修改了redeme",將修改提交到倉庫

image-20201229224319159

這里值得一提的是蛉谜,我們的提交信息盡量遵循某種規(guī)范稚晚,例如在提交信息中體現(xiàn)本次提交的類型:

  • feat :新功能
  • fix : bug修復
  • docs :文檔變更
  • style :與樣式相關的所有變動
  • refactor :既不是bug修復也未添加功能的代碼更改
  • test :與測試有關所有變動
  • chore :改變了構建任務,程序包管理器配置等

規(guī)范而精確的提交信息不僅能幫助我們的同事快速了解我們的提交型诚,也對我們自己的開發(fā)和重構有很大的幫助客燕。我喜歡用表情包標注提交類型,這樣從遠程倉庫看提交記錄比較好看??

在這里插入圖片描述

可以通過git log命令查看提交歷史:

image-20201229224851871

2.5狰贯、推送修改到遠程倉庫

可以使用git push origin develop命令將修改推送到遠程倉庫也搓,在推送之前,通常通過git pull origin develop(本實例遠程倉庫不存在develop分支涵紊,所以直接推送)命令來拉取遠程倉庫——這個是為了避免本地版本落后的情況还绘,當然如果沖突你也可以強制提交,只是你的同事會做出什么過激行為不敢保證栖袋。??

image-20201229231704254

在我們的遠程倉庫就可以看到這次提交了:

image-20201229231807331

2.6拍顷、合并分支

最終我們的提交都是要合并到master分支的,首先切換到master分支塘幅,接著通過命令昔案,git merge develop命令尿贫,將develop分支合并到master

image-20201229232122731

我們這個分支是沒有沖突的踏揣,可能在合并的過程中會出現(xiàn)沖突的情況庆亡,可以通過 git status 查看沖突的文件,手動解決沖突捞稿。當然又谋,可以借助一些開發(fā)工具來完成這個工作,下文再講娱局。

2.7彰亥、版本回退

假如說,我們發(fā)現(xiàn)這次提交不是我們想要的衰齐,可以通過 git reset --hard HEAD^ 回退到上一次提交

image-20201229232415498

2.8任斋、打標簽

假如我們要發(fā)布一個版本,我們通常會給這次提交打一個標簽 git tag publish/0.0.1

image-20201229232931444

可以通過git tag命令來查看我們打的標簽耻涛。

三废酷、Git常用命令

在上面有這樣一張圖片,基本上日常使用記住這6個命令就可以了抹缕,但是要想熟練使用澈蟆,可能就需要記住更多命令了,這里整理了一些常用的命令卓研。

img

1丰介、初始化倉庫


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

    # 新建一個目錄,將其初始化為Git代碼庫
    $ git init [project-name]

    # 下載一個項目和它的整個代碼歷史
    $ git clone [url]

2鉴分、配置

Git的設置文件為.gitconfig哮幢,它可以在用戶主目錄下(全局配置),也可以在項目目錄下(項目配置)志珍。


    # 顯示當前的Git配置
    $ git config --list

    # 顯示 Git 的某一項配置
    $ git config <key>

    # 編輯Git配置文件
    $ git config -e [--global]

    # 設置提交代碼時的用戶信息橙垢,選擇global即全局配置
    $ git config [--global] user.name "[name]"
    $ git config [--global] user.email "[email address]"

3、增加/刪除文件

這里的增加/刪除文件指的是向暫存區(qū)增加/刪除文件伦糯。

    # 查看文件狀態(tài)柜某,查看當前工作區(qū)新增、更改或刪除的文件
    $ git status
     
    # 添加指定文件到暫存區(qū)敛纲,可以添加多個文件喂击,中間以空格隔開
    $ git add [file1] [file2] ...

    # 添加指定目錄到暫存區(qū),包括子目錄
    $ git add [dir]

    # 添加當前目錄的所有文件到暫存區(qū)
    $ git add .

    # 添加每個變化前淤翔,都會要求確認
    # 對于同一個文件的多處變化翰绊,可以實現(xiàn)分次提交
    $ git add -p

    # 刪除工作區(qū)文件,并且將這次刪除放入暫存區(qū)
    $ git rm [file1] [file2] ...

    # 停止追蹤指定文件,但該文件會保留在工作區(qū)
    $ git rm --cached [file]

    # 改名文件监嗜,并且將這個改名放入暫存區(qū)
    $ git mv [file-original] [file-renamed]
    
    # 臨時保存修改谐檀,可跨分支
    # save為可選項
    $ git stash [save message]
    # 所有保存的記錄列表
    $ git stash list
    # 恢復工作進度到工作區(qū),此命令的stash@{num}是可選項裁奇,在多個工作進度中可以選擇恢復桐猬,不帶此項則默認恢復最近的一次進度相當于git stash pop stash@{0}
    $ git stash pop [stash@{num}]
    # 恢復工作進度到工作區(qū)且該工作進度可重復恢復,此命令的stash@{num}是可選項刽肠,在多個工作進度中可以選擇恢復溃肪,不帶此項則默認恢復最近的一次進度相當于git stash apply stash@{0}
    $ git stash apply [stash@{num}]
    # 刪除一條保存的工作進度,此命令的stash@{num}是可選項音五,在多個工作進度中可以選擇刪除惫撰,不帶此項則默認刪除最近的一次進度相當于git stash drop stash@{0}
    $ git stash drop stash@{num} 
    # 刪除所有保存
    $ git stash clear

4、代碼提交


    # 提交暫存區(qū)到倉庫區(qū)放仗,如果不加-m润绎,會進入vim編輯器
    $ git commit -m [message]

    # 提交暫存區(qū)的指定文件到倉庫區(qū)
    $ git commit [file1] [file2] ... -m [message]

    # 提交工作區(qū)自上次commit之后的變化撬碟,直接到倉庫區(qū)
    $ git commit -a

    # 提交時顯示所有diff信息
    $ git commit -v

    # 使用一次新的commit诞挨,替代上一次提交
    # 如果代碼沒有任何新變化,則用來改寫上一次commit的提交信息
    $ git commit --amend -m [message]

    # 重做上一次commit呢蛤,并包括指定文件的新變化
    $ git commit --amend [file1] [file2] ...
    

5惶傻、分支


    # 列出所有本地分支
    $ git branch

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

    # 列出所有本地分支和遠程分支
    $ git branch -a

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

    # 新建一個分支其障,并切換到該分支
    $ git checkout -b [branch]

    # 新建一個分支银室,指向指定commit
    $ git branch [branch] [commit]

    # 新建一個分支,與指定的遠程分支建立追蹤關系
    $ git branch --track [branch] [remote-branch]

    # 切換到指定分支励翼,并更新工作區(qū)
    $ git checkout [branch-name]

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

    # 建立追蹤關系蜈敢,在現(xiàn)有分支與指定的遠程分支之間
    $ git branch --set-upstream [branch] [remote-branch]

    # 合并指定分支到當前分支
    $ git merge [branch]
   
    # 查看分支合并狀態(tài)
    $  git rerere status
   
    # 顯示合并沖突解決方案的當前狀態(tài)——開始解決前與解決后的樣子
    $  git rerere diff

    # 選擇一個commit,合并進當前分支
    $ git cherry-pick [commit]
    
    #分支重命名
    $ git git branch -m [oldName]  [newName]
    # 刪除分支
    $ git branch -d [branch-name]

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

6拗军、標簽


    # 列出所有tag
    $ git tag

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

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

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

    # 刪除遠程tag
    $ git push origin :refs/tags/[tagName]

    # 查看tag信息
    $ git show [tag]

    # 提交指定tag
    $ git push [remote] [tag]

    # 提交所有tag
    $ git push [remote] --tags

    # 新建一個分支伺糠,指向某個tag
    $ git checkout -b [branch] [tag]

7瓢宦、查看信息

# 顯示有變更的文件
$ git status

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

# 顯示commit歷史,以及每次commit發(fā)生變更的文件
$ git log --stat

# 搜索提交歷史否过,根據(jù)關鍵詞
$ git log -S [keyword]

# 顯示某個commit之后的所有變動,每個commit占據(jù)一行
$ git log [tag] HEAD --pretty=format:%s

# 顯示某個commit之后的所有變動惭蟋,其"提交說明"必須符合搜索條件
$ git log [tag] HEAD --grep feature

# 顯示某個文件的版本歷史苗桂,包括文件改名
$ git log --follow [file]
$ git whatchanged [file]

# 顯示指定文件相關的每一次diff
$ git log -p [file]

# 顯示過去5次提交
$ git log -5 --pretty --oneline

# 顯示所有提交過的用戶,按提交次數(shù)排序
$ git shortlog -sn

# 顯示指定文件是什么人在什么時間修改過
$ git blame [file]

# 顯示暫存區(qū)和工作區(qū)的差異
$ git diff

# 顯示暫存區(qū)和上一個commit的差異
$ git diff --cached [file]

# 顯示工作區(qū)與當前分支最新commit之間的差異
$ git diff HEAD

# 顯示兩次提交之間的差異
$ git diff [first-branch]...[second-branch]

# 顯示今天你寫了多少行代碼
$ git diff --shortstat "@{0 day ago}"

# 顯示某次提交的元數(shù)據(jù)和內(nèi)容變化
$ git show [commit]

# 顯示某次提交發(fā)生變化的文件
$ git show --name-only [commit]

# 顯示某次提交時告组,某個文件的內(nèi)容
$ git show [commit]:[filename]

# 顯示當前分支的最近幾次提交
$ git reflog

8煤伟、遠程同步

# 克隆遠程倉庫
$ git clone [url]

# 下載遠程倉庫的所有變動
$ git fetch [remote]

# 顯示所有遠程倉庫
$ git remote -v

# 顯示某個遠程倉庫的信息
$ git remote show [remote]

# 增加一個新的遠程倉庫,并命名
$ git remote add [shortname] [url]

# 取回遠程倉庫的變化,并與本地分支合并
$ git pull [remote] [branch]

# 拉取遠程分支持偏,同時創(chuàng)建本地分支
$ git fetch [remote] 遠程分支名x:本地分支名x
# 拉取遠程分支驼卖,同時創(chuàng)建本地分支,且切換到該分支
$ git checkout -b [branch] [origin/遠程分支名]

# git pull相當于以下兩步
# 1鸿秆、拉取遠程分支
$ git fetch [remote] [branch]
# 2酌畜、合并到當前分支
git merge [remote/branch]

# 上傳本地指定分支到遠程倉庫
$ git push [remote] [branch]

# 強行推送當前分支到遠程倉庫,即使有沖突
$ git push [remote] --force

# 推送所有分支到遠程倉庫
$ git push [remote] --all

# 更新遠程分支列表
$ git remote update [remote] --prune
$ git remote update [remote] -p

# 刪除和遠程倉庫的關聯(lián)
$ git remote rm [remote]

9卿叽、撤銷

# 恢復暫存區(qū)的指定文件到工作區(qū)
$ git checkout [file]

# 恢復某個commit的指定文件到暫存區(qū)和工作區(qū)
$ git checkout [commit] [file]

# 恢復暫存區(qū)的所有文件到工作區(qū)
$ git checkout .

# 重置暫存區(qū)的指定文件桥胞,與上一次commit保持一致,但工作區(qū)不變
$ git reset [file]

# 重置暫存區(qū)與工作區(qū)考婴,與上一次commit保持一致
$ git reset --hard

# 重置當前分支的指針為指定commit贩虾,同時重置暫存區(qū),但工作區(qū)不變
$ git reset [commit]

#  回退到上一次提交
$ git reset --hard HEAD^
# 重置當前分支的HEAD為指定commit沥阱,同時重置暫存區(qū)和工作區(qū)缎罢,與指定commit一致
$ git reset --hard [commit]

# 重置當前HEAD為指定commit,但保持暫存區(qū)和工作區(qū)不變
$ git reset --keep [commit]

# 新建一個commit考杉,用來撤銷指定commit
# 后者的所有變化都將被前者抵消策精,并且應用到當前分支
$ git revert [commit]

# 暫時將未提交的變化移除,稍后再移入
$ git stash
$ git stash pop

四崇棠、在開發(fā)工具中使用Git

在Git中一些操作例如解決沖突咽袜、分支比較等等使用圖形化的操作可能會更加方便快捷。

TortoiseGit是一款不錯的圖形化Git工具枕稀,是一個不錯的選擇询刹,下載地址:https://tortoisegit.org/download/

image-20201230175941903

當然,使用開發(fā)工具集成Git萎坷,也是一個不錯的選擇凹联。

1、在IDEA中使用Git

IDEA是當前最好用的Java開發(fā)IDE哆档,IDEA默認集成了對Git的支持蔽挠,只需要配置設置執(zhí)行程序即可。

1.1虐呻、配置Git

  • File --> Settings--> Version Control --> Git,修改Git執(zhí)行路徑為自己安裝的Git路徑象泵。
image-20201226170425899
  • 點擊Test,配置成功會提示Git版本信息
image-20201226170737431

1.2斟叼、遠程操作

Idea中可以非常便捷的進行遠程倉庫相關的操作偶惠。

1.2.1、拉取代碼

通過Idea可以直接拉取遠程倉庫的代碼

  • File --> New ---> Project From Version Controller --> Git
image-20210101122023216
  • 填入遠程倉庫地址朗涩,選擇 Clone
image-20210101122201172

這樣遠程倉庫的代碼就克隆到了本地忽孽。

1.2.2、拉取遠程分支

上面我們拉取的是遠程倉庫主干代碼,我們也可以拉取遠程分支代碼兄一。右下角厘线,點開分支。

image-20210101122607056

可以看到 Remote Branchs,下面就是遠程倉庫的分支出革。點擊遠程分支造壮,Checkout As,就可以把遠程分支拉到本地了。

image-20210101124703962

1.2.3骂束、更新代碼

我們在提交代碼前最好先更新下遠程倉庫的代碼到本地倉庫耳璧,這樣可以減少不必要的沖突,更新update可以直接通過快捷鍵 Ctrl + T展箱,也可以通過工具欄上按鍵來實現(xiàn):

image-20210101125000452

1.2.4旨枯、提交/推送代碼

在IDEA中開發(fā)好自己的代碼之后如何提交到遠程倉庫呢?右鍵項目-->Git

image-20210101125217192
  • 1.Commit Directory:commit代碼(將stage區(qū)的暫存文件提交到當前分支的本地倉庫混驰,并清空stage區(qū))攀隔,也可以push代碼(把本地倉庫的文件同步到遠程倉庫)。
image-20210101125736901
    • Commit對應Git的Commit命令,commit到本地倉庫
    • Commit and Push也就是Commit和push栖榨,我們可以直接在這里commit到本地倉庫之后昆汹,再push到遠程倉庫。

在IDEA中治泥,我們會看到文件被標識著不同顏色:紅色筹煮,綠色遮精,藍色居夹。它們分別代表什么意思呢?

  • 紅色:未被版本控制的文件本冲,即未添加到版本控制的文件准脂,例如我們添加到ignore中的文件。

  • 綠色:新加入版本的文件檬洞,即我們新創(chuàng)建的文件狸膏,還未提交到遠程倉庫。

  • 藍色:修改過的文件添怔,即遠程倉庫中已有該文件湾戳,我們這次對它進行了修改,但是還未提交广料。

這里再接著看看幾個按鍵的作用:

image-20210101130202600

2.Add:把本地文件從工作目錄添加到本地倉庫的stage區(qū)砾脑,對應Git的Add命令。

3.Compare with Branch…:與遠程分支比較艾杏。我們提交前可以通過此功能比較下我們工作目錄中代碼和遠程分支代碼的異同韧衣。

4.Show History:查看歷史修改版本記錄。

5.Revert:回滾,會將你的本地修改回滾畅铭。

6.Repository:各種倉庫命令氏淑。

image-20210101130400728

1.3、分支管理

1.3.1硕噩、新建分支

點擊New Branch可以新建分支

image-20210101122733992

1.3.2假残、分支切換/比較/合并/重命名/刪除

在Idea中這些功能的使用也常簡單,點擊分支炉擅,點擊要操作的分支守问,就可以看到這些選項

image-20210101123418491

1.4、查看提交歷史

Version Controllerlog可以查看提交歷史

image-20210101130638650

1.5坑资、合并(處理沖突)

上面我們提了分支合并耗帕,可以從本地分支合并,也可以從遠程倉庫合并袱贮,一般兩個并行開發(fā)的分支合并都是會有沖突仿便,Idea中合并沖突是非常方便的。

  • 在合并過程中發(fā)生了沖突攒巍,Idea會提示沖突,選擇Merge
image-20210101131209085
  • Idea提供了三個分欄柒莉,我們可以點擊箭頭闻坚,很方便地處理沖突
image-20210101131313411
  • 如果合并時沒有處理,也可以在Version Controller中處理
image-20210101131750519

2兢孝、在VS Code中使用Git

VS Code是當前最流行的前端開發(fā)工具窿凤,VS Code對Git的支持不是那么強大,但是可以通過插件來增強Git功能跨蟹。

2.1雳殊、基本使用

2.1.1、基本界面

我的VS Code配置了中文包窗轩。

點擊左側(cè)Git標識夯秃,可以看到很多的操作。

image-20210101133222496

2.1.2痢艺、文件狀態(tài)

當對文件進行修改后仓洼,有三種狀態(tài)

alt
  • M 是 modify 的縮寫即該文件存在修改
  • D 是 delete 的縮寫即該文件被刪除了
  • U 是 Update 的縮寫即該文件是新添加

2.1.3、提交代碼

image-20210101134246844

文件按鈕的的意思堤舒。

  • 如果是新添加的文件色建,放棄修改就會提示徹底刪除文件。
  • 如果是刪除的文件植酥,選擇放棄修改就會從倉庫中恢復文件 (再也不用擔心誤刪的文件找不到了)
  • 點擊 + 號確認文件的修改就會提到 stash Changes 上 (對應 git add 命令)
image-20210101134415788

確認了文件之后镀岛,在輸入框輸入這次更新的內(nèi)容弦牡,然后點擊打勾就可以保存這一次更新了 (對應 git commit 命令)
如果當前所有的 Changes 都要 commit ,那可以直接輸入上傳的信息并且打勾就可以快速 commit 了漂羊。

2.1.4驾锰、推送代碼

完成提交以后,vscode 的左下角就會出現(xiàn)上箭頭的數(shù)字為 1 (上箭頭是 push 的更新走越,下箭頭是可以 pull 的更新)
當然如果之前沒有 push 過代碼的話椭豫,這個可能會沒有數(shù)字顯示。
這個時候就可以將代碼推送到 遠程倉庫上了 (對應 git push 命令)

image-20210101135322345

OK旨指,遠程倉庫就可以看到我們的提交了赏酥。

image-20210101135531641

2.1.5、拉取代碼

也可以通過 vscode 左下角的下箭頭看到倉庫是否可以 拉取谆构,然后點擊菜單的 git pull 進行倉庫更新 (對應 git pull 命令)

image-20210101135743780


2.1.5裸扶、分支切換

vscode 可以直接在左下角創(chuàng)建分支,也可以切換分支搬素。

image-20210101135941565

上面的功能滿足了基本要求呵晨,如果還需要代碼比對解決沖突熬尺,可以選擇插件摸屠,目前公認的最好用的插件是GitLens。

2.2粱哼、使用Git插件

2.2.1季二、安裝GitLens

打開插件商店,搜索 GitLens,安裝即可揭措。

image-20210101140524655

2.2.2胯舷、GitLens基本使用

安裝完成之后側(cè)邊的工具欄會多出一個 git 分支圖標,點擊就可以查看更詳細的信息了蜂筹。

image-20210101141822489

  • 第一個折疊面板查看所有提交
  • 第二個折疊面板查看當前打開文件的歷史
  • 第三個折疊面板查看分支
  • 第四個折疊面板查看遠程
  • 第五個折疊面板查看stash的文件
  • 第六個折疊面板查看標簽
  • 第七個折疊面板可以比較不同的分支標簽的文件區(qū)別

[圖片上傳失敗...(image-59f7d9-1637472400343)]

同時發(fā)現(xiàn)需纳,每一行代碼都會顯示提交人和提交信息

image-20210101142124359

2.2.3芦倒、查看更改

修改文件后艺挪,Gitlens 側(cè)邊會有顏色塊告訴你代碼的更新情況:

  • 紅色箭頭表示刪除
  • 藍色塊表示修改
  • 綠色塊表示增添
image-20210101142959836

在右上角點擊查看更改,可以查看當前文件的更改。

image-20210101142700430
image-20210101143105278

2.2.4兵扬、處理沖突

VScode 內(nèi)置的 git 會告訴你有沖突的文件麻裳,然后通過 Gitlens 可以快速調(diào)整沖突。

image-20210101145429996
image-20210101145525530



<b><big>參考</big></b>

【1】:Git 從入門到放不下

【2】:常用Git命令整理

【3】:Git分支管理策略

【4】:vue-blog

【5】:《progit》

【6】:Windows配置Github器钟、Gitee共存的Git環(huán)境

【7】:VScode 結合git的全面使用流程(上)

【8】:VScode 結合git的全面使用流程(下)

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末津坑,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子傲霸,更是在濱河造成了極大的恐慌疆瑰,老刑警劉巖眉反,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異穆役,居然都是意外死亡寸五,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門耿币,熙熙樓的掌柜王于貴愁眉苦臉地迎上來梳杏,“玉大人,你說我怎么就攤上這事淹接∈裕” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵塑悼,是天一觀的道長劲适。 經(jīng)常有香客問我,道長厢蒜,這世上最難降的妖魔是什么减响? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮郭怪,結果婚禮上支示,老公的妹妹穿的比我還像新娘。我一直安慰自己鄙才,他們只是感情好颂鸿,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著攒庵,像睡著了一般嘴纺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上浓冒,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天栽渴,我揣著相機與錄音,去河邊找鬼稳懒。 笑死闲擦,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的场梆。 我是一名探鬼主播墅冷,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼或油!你這毒婦竟也來了寞忿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤顶岸,失蹤者是張志新(化名)和其女友劉穎腔彰,沒想到半個月后叫编,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡霹抛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年宵溅,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片上炎。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡恃逻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出藕施,到底是詐尸還是另有隱情寇损,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布裳食,位于F島的核電站矛市,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏诲祸。R本人自食惡果不足惜浊吏,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望救氯。 院中可真熱鬧找田,春花似錦、人聲如沸着憨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽甲抖。三九已至漆改,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間准谚,已是汗流浹背挫剑。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留柱衔,地道東北人樊破。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像秀存,于是被迫代替她去往敵國和親捶码。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容

  • [TOC] 前言 剛剛開始使用Git的版本控制時或链,我根本不確定我付出那么多時間是不是會得到回報,Branch档押、St...
    木貓尾巴閱讀 7,477評論 6 36
  • 本文目錄: 1.版本管理 2.分支 暫時保存更改 4.Github 5.Git和SVN兩者之間的區(qū)別 1.版本管理...
    前端輝羽閱讀 344評論 0 11
  • [TOC] Git @(24.1 Git)[git] 工作原理 直接記錄快照澳盐,而非差異比較Git 只關心文件數(shù)據(jù)的...
    浮x塵閱讀 435評論 0 0
  • git命令 版本控制 Git 簡介 Git是目前世界上最先進的分布式版本控制系統(tǒng)祈纯。如果你是小白,請先看這里: ...
    草帽lufei閱讀 1,035評論 0 0
  • 前言 話不多說叼耙,直奔主題腕窥。 git的主要作用,在于多人協(xié)作筛婉,這種協(xié)作的根本需求來源于早期程序員如何同步進度簇爆、合并代...
    愛妃給朕躺下閱讀 2,402評論 0 2