1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        「一勞永逸」一張腦圖帶你掌握Git命令

        共 4579字,需瀏覽 10分鐘

         ·

        2020-10-15 05:19


        關(guān)注?W3Cschool?,每天一篇文章,與你共同成長(zhǎng)

        作者丨TianTianUp

        來(lái)源丨前端UpUp

        前言

        最近在網(wǎng)易工作之余,遇到Git上面一些問(wèn)題,趁這次的機(jī)會(huì),補(bǔ)一補(bǔ)Git基礎(chǔ)知識(shí)。

        腦圖?

        腦圖下載鏈接:

        https://pan.baidu.com/s/1KHEyx4L04VPx8b5KKzvDZg?

        提取碼:Tian

        「本文更多梳理的是Git常用命令,非原理篇,需要這部分知識(shí)的可以往下看?!?/strong>


        一圖解天下?

        首先我們的了解Git通常的操作流程,網(wǎng)上流行的不錯(cuò)一張圖?

        Git經(jīng)典流程圖

        基本概念

        Git基本命令

        基于上面的圖,我們就有接下來(lái)一些概念?

        • 版本庫(kù)?.git

          • 當(dāng)我們使用git管理文件時(shí),比如git init時(shí),這個(gè)時(shí)候,會(huì)多一個(gè).git文件,我們把這個(gè)文件稱之為版本庫(kù)。
          • .git文件另外一個(gè)作用就是它在創(chuàng)建的時(shí)候,會(huì)自動(dòng)創(chuàng)建master分支,并且將HEAD指針指向master分支。
        • 工作區(qū)

          • 本地項(xiàng)目存放文件的位置
          • 可以理解成圖上的workspace
        • 暫存區(qū) (Index/Stage)

          • 顧名思義就是暫時(shí)存放文件的地方,通過(guò)是通過(guò)add命令將工作區(qū)的文件添加到緩沖區(qū)
        • 本地倉(cāng)庫(kù)(Repository)

          • 通常情況下,我們使用commit命令可以將暫存區(qū)的文件添加到本地倉(cāng)庫(kù)
          • 通常而言,HEAD指針指向的就是master分支
        • 遠(yuǎn)程倉(cāng)庫(kù)(Remote)

          • 舉個(gè)例子,當(dāng)我們使用GitHub托管我們項(xiàng)目時(shí),它就是一個(gè)遠(yuǎn)程倉(cāng)庫(kù)。
          • 通常我們使用clone命令將遠(yuǎn)程倉(cāng)庫(kù)代碼拷貝下來(lái),本地代碼更新后,通過(guò)push托送給遠(yuǎn)程倉(cāng)庫(kù)。

        Git文件狀態(tài)

        • 通常我們需要查看一個(gè)文件的狀態(tài)
        git status
        • Changes not staged for commit
          • 表示得大概就是工作區(qū)有該內(nèi)容,但是緩存區(qū)沒(méi)有,需要我們git add
        • Changes to be committed
          • 一般而言,這個(gè)時(shí)候,文件放在緩存區(qū)了,我們需要git commit
        • nothing to commit, working tree clean
          • 這個(gè)時(shí)候,我們將本地的代碼推送到遠(yuǎn)端即可

        常見(jiàn)命令

        git配置命令

        Git配置命令
        • 列出當(dāng)前配置
        git config --list
        • 列出Repository配置
        git config --local --list
        • 列出全局配置
        git config --global --list
        • 列出系統(tǒng)配置
        git config --system --list

        通過(guò)上述的命令,發(fā)現(xiàn)你并沒(méi)有配置用戶信息的話,接下來(lái)配置一下?

        • 配置用戶名
        git config --global user.name "your name"
        • 配置用戶郵箱
        git config --global user.email "[email protected]"

        分支管理

        Git分支管理
        • 查看本地分支
        git branch
        • 查看遠(yuǎn)程分支
        git branch -r
        • 查看本地和遠(yuǎn)程分支
        git branch -a
        • 從當(dāng)前分支,切換到其他分支
        git checkout // 舉個(gè)例子git checkout feature/tiantian
        • 創(chuàng)建并切換到新建分支
        git checkout -b // 舉個(gè)例子?git checkout -b feature/tiantian
        • 刪除分支
        git branch -d // 舉個(gè)例子?git branch -d feature/tiantian
        • 當(dāng)前分支與指定分支合并
        git merge // 舉個(gè)例子?git merge feature/tiantian
        • 查看哪些分支已經(jīng)合并到當(dāng)前分支
        git branch --merged
        • 查看哪些分支沒(méi)有合并到當(dāng)前分支
        git branch --no-merged
        • 查看各個(gè)分支最后一個(gè)提交對(duì)象的信息
        git branch -v
        • 刪除遠(yuǎn)程分支
        git push origin -d 
        • 重命名分支
        git branch -m  
        • 拉取遠(yuǎn)程分支并創(chuàng)建本地分支
        git checkout -b 本地分支名x origin/遠(yuǎn)程分支名x
        // 另外一種方式,也可以完成這個(gè)操作。git fetch origin :// fetch這個(gè)指令的話,后續(xù)會(huì)梳理

        fetch指令

        Git命令fetch

        我理解的就是將遠(yuǎn)程倉(cāng)庫(kù)內(nèi)容更新到本地,最近與師姐開發(fā)項(xiàng)目過(guò)程中,使用的就是這個(gè)命令。

        具體是這樣子的?

        fetch推薦寫法


        git fetch origin :
        • 一般而言,這個(gè)origin是遠(yuǎn)程主機(jī)名,一般默認(rèn)就是origin。
        • branch-name?你要拉取的分支
        • local-branch-name?通常而言,就是你本地新建一個(gè)新分支,將origin下的某個(gè)分支代碼下載到本地分支。

        舉個(gè)例子?

        git fetch origin feature/template_excellent:feature/template_layout// 你的工作目錄下,就會(huì)有feature/template_layout// 一般情況下,我們需要做的就是在這個(gè)分支上開發(fā)新需求// 完成代碼后,我們需要做的就是上傳我們的分支

        fetch其他寫法

        • 將某個(gè)遠(yuǎn)程主機(jī)的更新,全部取回本地。
        git fetch <遠(yuǎn)程主機(jī)名>
        • 這樣子的話,取回的是所有的分支更新,如果想取回特定分支,可以指定分支名?
        git fetch <遠(yuǎn)程主機(jī)名> <分支名>
        • 當(dāng)你想將某個(gè)分支的內(nèi)容取回到本地下某個(gè)分支的話,如下?
        git fetch origin :// 等價(jià)于?git fetch origin master:

        花式撤銷

        Git花式撤銷
        • 撤銷「工作區(qū)」修改

          • git checkout --
        • 暫存區(qū)文件撤銷 (不覆蓋工作區(qū))

          • git reset HEAD
        • 版本回退

          • git reset --(soft | mixed | hard ) ?< HEAD ~(num) > |

          • 指令作用范圍
            --hard回退全部,包括HEAD,index,working tree
            --mixed回退部分,包括HEAD,index
            --soft只回退HEAD

        工作區(qū)命令


        狀態(tài)查詢

        • 查看狀態(tài)
          • git status
        • 查看歷史操作記錄
          • git reflog
        • 查看日志
          • git log

        文檔查詢

        • 展示Git命令大綱
          • git help (--help)
        • 展示Git命令大綱全部列表
          • git help -a
        • 展示具體命令說(shuō)明手冊(cè)
          • git help

        文件暫存

        Git命令文件暫存
        • 添加改動(dòng)到stash

          • git stash save -a “message”
        • 刪除暫存

          • git stash drop
        • 查看stash列表

          • git stash list
        • 刪除全部緩存

          • git stash clear
        • 恢復(fù)改動(dòng)

          • git stash pop

        差異比較

        Git文件比較
        • 比較工作區(qū)與緩存區(qū)
          • git diff
        • 比較緩存區(qū)與本地庫(kù)最近一次commit內(nèi)容
          • git diff -- cached
        • 比較工作區(qū)與本地最近一次commit內(nèi)容
          • git diff HEAD
        • 比較兩個(gè)commit之間差異
          • git diff

        分支命名

        Git分支管理規(guī)范

        「master分支」

        1. 主分支,用于部署生產(chǎn)環(huán)境的分支,確保穩(wěn)定性。
        2. master分支一般由develop以及hotfix分支合并,任何情況下都不能直接修改代碼。

        「develop 分支」

        1. develop為開發(fā)分支,通常情況下,保存最新完成以及bug修復(fù)后的代碼。
        2. 開發(fā)新功能時(shí),feature分支都是基于develop分支下創(chuàng)建的。

        「feature分支」

        1. 開發(fā)新功能,基本上以develop為基礎(chǔ)創(chuàng)建feature分支。
        2. 分支命名:feature/ 開頭的為特性分支, 命名規(guī)則: feature/user_module、 feature/cart_module。

        **這點(diǎn)我深有體會(huì),我在網(wǎng)易,mentor就是這么教我的,**通常建一個(gè)feature分支。

        「release分支」

        1. release 為預(yù)上線分支,發(fā)布提測(cè)階段,會(huì)release分支代碼為基準(zhǔn)提測(cè)。

        「hotfix分支」

        1. 分支命名:hotfix/ 開頭的為修復(fù)分支,它的命名規(guī)則與 feature 分支類似。
        2. 線上出現(xiàn)緊急問(wèn)題時(shí),需要及時(shí)修復(fù),以master分支為基線,創(chuàng)建hotfix分支,修復(fù)完成后,需要合并到master分支和develop分支。

        參考來(lái)著:稻草叔叔


        基本操作

        有了上述的基本了解后,那么我們就來(lái)看看整體的一個(gè)流程吧。

        • 創(chuàng)建本地倉(cāng)庫(kù) git init

          ?

          git init

          ?
        • 鏈接本地倉(cāng)庫(kù)與遠(yuǎn)端倉(cāng)庫(kù)

          ?

          git remote add ?origin

          origin默認(rèn)是遠(yuǎn)端倉(cāng)庫(kù)別名 ?url 可以是「可以使用https或者ssh的方式新建」

          ?
        • 檢查配置信息

          • git config --list
        • Git user name 與email

          ?

          git config --global user.name "yourname"

          git config --global user.email ?"your_email"

          ?
        • 生成SSH密鑰

          ?

          ssh-keygen -t rsa -C "這里換上你的郵箱"

          cd ~/.ssh 里面有一個(gè)文件名為id_rsa.pub,把里面的內(nèi)容復(fù)制到git庫(kù)的我的SSHKEYs中

          ?
        • ??催h(yuǎn)端倉(cāng)庫(kù)信息

          • git remote -v
        • 遠(yuǎn)端倉(cāng)庫(kù)重新命名

          • git remote rename old new
        • 提交到緩存區(qū)

          • git add . ?全部上傳到緩存區(qū)
          • git add指定文件
        • 提交到本地倉(cāng)庫(kù)

          • git commit -m 'some message'
        • 提交遠(yuǎn)程倉(cāng)庫(kù)

          • git push <遠(yuǎn)程主機(jī)名> <本地分支名>:<遠(yuǎn)程分支名>
        • 查看分支

          • git ?branch
        • 創(chuàng)建新分支

          • git branch
        • 切換分支

          • git checkout
        • 創(chuàng)建分支并切換

          • git checkout -b
        • 刪除分支

          • git branch -d
        • 刪除遠(yuǎn)程分支

          • git push -d
        • 切換分支

          • git checkout

        忽略文件 .gitignore

        這個(gè)文件的作用,會(huì)去忽略一些不需要納入Git管理這種,我們也不希望出現(xiàn)在未跟蹤文件列表。

        那么我們來(lái)看看如何配置該文件信息。

        # 此行為注釋 會(huì)被Git忽略
        # 忽略 node_modules/ 目錄下所有的文件node_modules

        # 忽略所有.vscode結(jié)尾的文件.vscode
        # 忽略所有.md結(jié)尾的文件*.md
        # 但README.md 除外!README.md
        # 會(huì)忽略 doc/something.txt 但不會(huì)忽略doc/images/arch.txtdoc/*.txt
        # 忽略 doc/ 目錄下所有擴(kuò)展名為txt文件
        doc/**/*.txt

        參考

        • git基本操作,一篇文章就夠了!
        • Git 常用操作總結(jié)
        • 您必須知道的 Git 分支開發(fā)規(guī)范
        • 如何優(yōu)雅地使用 Git
        • 優(yōu)雅的提交你的 Git Commit Message
        • 詳解git pull和git fetch的區(qū)別
        • 十分鐘的時(shí)間,武裝你的代碼庫(kù)
        • 「?jìng)渫洝?0+Git常用命令行

        -End-


        W3Cschool注冊(cè)會(huì)員突破200萬(wàn)啦~


        編程獅(W3Cschool


        學(xué)編程,從W3Cschool開始

        微信掃描二維碼,關(guān)注公眾號(hào)

        點(diǎn)擊分享」「」「在看
        說(shuō)不定你的朋友也喜歡讀▼▼▼
        瀏覽 54
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

          <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            艹逼视频网| 散兵被到爽高潮痉挛 | 无码丰满熟妇精品一区二区三区 | 亚欧精品久久久久久久久久 | 久久夜色撩人 | 99er视频| 国产美穴| 日本人妻在线视频 | 精品成人视频 | 91精品麻豆日日躁夜夜躁 |