<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Git 提交竟然還能這么用?

          共 3438字,需瀏覽 7分鐘

           ·

          2023-11-01 09:44

          大家好,我是魚(yú)皮。

          Git 是主流的代碼版本控制系統(tǒng),是團(tuán)隊(duì)協(xié)作開(kāi)發(fā)中必不可少的工具。

          之前已經(jīng)給大家分享過(guò) Git / GitHub 的學(xué)習(xí)指南,感興趣的同學(xué)可以先看視頻了解:https://www.bilibili.com/video/BV1KZ4y1e7cG。

          這篇文章,主要是給大家分享 Git 的核心功能 提交(Commit)的作用,幫助大家更好地利用 Git 這一工具來(lái)提高自己的開(kāi)發(fā)工作效率。

          什么是 Git 提交?

          Git 提交是指將你的代碼保存到 Git 本地存儲(chǔ)庫(kù),就像用 Word 寫(xiě)長(zhǎng)篇論文時(shí)進(jìn)行保存文件一樣。每次 Git 提交時(shí)都會(huì)創(chuàng)建一個(gè)唯一的版本,除了記錄本次新增或發(fā)生修改的代碼外,還可以包含提交信息,來(lái)概括自己這次提交的改動(dòng)內(nèi)容。

          如下圖,就是一次 Git 提交:

          Git 提交的作用

          Git 提交有很多作用,我將它分為 基礎(chǔ)用法其他妙用 。

          基本作用

          歷史記錄

          Git 提交最基本的作用就是維護(hù)項(xiàng)目的歷史記錄。每次提交都會(huì)記錄代碼庫(kù)的狀態(tài),包括文件的添加、修改和刪除;還包括一些提交信息,比如提交時(shí)間、描述等。這使得我們可以通過(guò)查看所有的歷史提交來(lái)追溯項(xiàng)目的開(kāi)發(fā)進(jìn)度和歷程,了解每個(gè)提交中都發(fā)生了什么變化。

          比如查看我們編程導(dǎo)航文檔網(wǎng)站項(xiàng)目的提交記錄,能看到我是怎么一步一步構(gòu)建出這個(gè)文檔網(wǎng)站的:

          開(kāi)源地址:https://github.com/liyupi/code-xingqiu

          在企業(yè)開(kāi)發(fā)中,如果一個(gè)人寫(xiě)了 Bug,還死不承認(rèn),那么就可以搬出 Git 提交記錄,每一行代碼是誰(shuí)提交的都能很快地查出來(lái),謹(jǐn)防甩鍋!

          版本控制

          另一個(gè) Git 提交的基本作用是版本控制。每個(gè)提交都代表了代碼庫(kù)的一個(gè)版本,這意味著開(kāi)發(fā)者可以隨時(shí)切換代碼版本進(jìn)行開(kāi)發(fā),恢復(fù)舊版本的代碼、或者撤銷(xiāo)某次提交的代碼改動(dòng)。

          推薦新手使用可視化工具而不是 Git 命令進(jìn)行版本的切換和撤銷(xiāo)提交,在不了解 Git 工作機(jī)制的情況下使用命令操作很容易出現(xiàn)問(wèn)題。

          如下圖,在 JetBrains 系列開(kāi)發(fā)工具中,右鍵某個(gè)提交,就可以切換版本或撤銷(xiāo)提交了:

          代碼對(duì)比

          你可以輕松地查看兩個(gè)提交之間的所有代碼更改,便于快速了解哪些部分發(fā)生了變化。這對(duì)于解決代碼沖突、查找錯(cuò)誤或?qū)彶榇a非常有幫助。

          在 JetBrains 系列開(kāi)發(fā)工具中,只需要選中 2 個(gè)提交,然后點(diǎn)右鍵,選擇 Compare Versions 就能實(shí)現(xiàn)代碼對(duì)比了:

          改動(dòng)了哪些代碼一目了然:

          一般情況下,如果我們因?yàn)槟炒未a改動(dòng)導(dǎo)致項(xiàng)目出現(xiàn)了新的 Bug。通過(guò)這種方式對(duì)比本次改動(dòng)的所有代碼,很快就能發(fā)現(xiàn) Bug 出現(xiàn)的原因了。

          其他妙用

          除了基本作用外,Git 提交還有一些妙用~

          記錄信息

          像上面提到的,Git 提交不僅能用于記錄代碼更改,我們還可以在提交信息中包含有關(guān)這次更改的重要信息。比如本次改動(dòng)代碼的介紹、代碼更改的原因、相關(guān)的任務(wù)(需求單)或功能等??梢院?jiǎn)單理解為給本次工作寫(xiě)總結(jié)和描述。

          如果提交信息編寫(xiě)得非常清晰完善,那么項(xiàng)目的團(tuán)隊(duì)成員可以更容易地理解每個(gè)提交,甚至能做到 “提交即文檔”,提高協(xié)作和項(xiàng)目維護(hù)效率。

          正因如此,很多團(tuán)隊(duì)會(huì)定制自己的提交信息規(guī)范,比如之前我在鵝廠的時(shí)候,每次提交都建議帶上需求單的地址,便于了解這次提交是為了完成什么需求。

          這里給大家推薦一種很常用的提交信息規(guī)范 —— 約定式提交,每次提交信息都需要遵循以下的結(jié)構(gòu):

          《約定式提交》文檔:https://www.conventionalcommits.org/zh-hans/v1.0.0/

          <類(lèi)型>[可選 范圍]: <描述>

          [可選 正文]

          [可選 腳注]

          當(dāng)然,這種方式有利有弊,可能有同學(xué)會(huì)覺(jué)得 “我注釋都懶得寫(xiě),你還讓我寫(xiě)提交信息?” 這取決于你們項(xiàng)目的規(guī)模和緊急程度等因素,反正團(tuán)隊(duì)內(nèi)部保持一致就好。

          像我在用 Git 開(kāi)發(fā)個(gè)人項(xiàng)目時(shí),也不是每次都寫(xiě)很詳細(xì)的提交信息的。但是帶 編程導(dǎo)航 的同學(xué)從 0 開(kāi)發(fā)項(xiàng)目時(shí),每場(chǎng)直播寫(xiě)的代碼都會(huì)單獨(dú)作為一次提交,如下圖:

          是不是很清晰呢?這樣做的好處是,大家想獲取某場(chǎng)直播對(duì)應(yīng)的中間代碼(而不是最終的成品代碼)時(shí),只需要點(diǎn)擊某次提交記錄就可以獲取到了,很方便。

          如果你的提交信息寫(xiě)得非常標(biāo)準(zhǔn)、統(tǒng)一結(jié)構(gòu),那么甚至還可以用程序自動(dòng)讀取所有的提交信息,生成日志、或者輸出提交報(bào)告。

          自動(dòng)化構(gòu)建部署

          大廠研發(fā)流程中,一般都是使用 CI / CD(持續(xù)集成和持續(xù)部署)平臺(tái),以流水線的形式自動(dòng)構(gòu)建部署項(xiàng)目的。

          Git 提交可以和 CI / CD 平臺(tái)進(jìn)行集成,比如自動(dòng)監(jiān)視代碼庫(kù)中的提交,并在每次提交后自動(dòng)觸發(fā)構(gòu)建和部署任務(wù)。一個(gè)典型的使用場(chǎng)景是,每次代碼開(kāi)發(fā)完成后,先提交代碼到測(cè)試分支,然后 CI / CD 平臺(tái)監(jiān)測(cè)到本次提交,并立即在測(cè)試環(huán)境中構(gòu)建和部署,而不需要人工操作,從而提交效率。

          GitHub Actions 和 GitHub Webhooks 都可以實(shí)現(xiàn)上述功能,感興趣的同學(xué)可以嘗試下。

          GitHub Actions 文檔教程:https://docs.github.com/zh/actions/quickstart

          檢驗(yàn)項(xiàng)目真假

          最后這個(gè)點(diǎn)就比較獨(dú)特了,那就是面試官可以通過(guò)查看 Git 的提交記錄來(lái)判斷你的項(xiàng)目真假、是不是自己做的。

          比如我收到一些同學(xué)的簡(jiǎn)歷中,有的開(kāi)源項(xiàng)目看起來(lái)感覺(jué)很厲害,但是點(diǎn)進(jìn)倉(cāng)庫(kù)看了下提交記錄,發(fā)現(xiàn)寥寥無(wú)幾,甚至有的只有 1 次!像下圖這樣:

          那么這個(gè)項(xiàng)目真的是他自己從 0 開(kāi)始做的么?答案就顯而易見(jiàn)了。

          如果真的是你自己用心做的項(xiàng)目,提交記錄絕對(duì)不止 1 次,而且面試官能夠通過(guò)提交記錄很清晰地了解到你的項(xiàng)目開(kāi)發(fā)周期。

          像我的 yuindex Web 終端項(xiàng)目一樣,這才是比較真實(shí)、有說(shuō)服力的:

          其他人也能從你的提交記錄中,感受到你對(duì)項(xiàng)目的用心程度。

          講到這里,是不是有些同學(xué)恍然大悟,知道為啥自己的項(xiàng)目明明開(kāi)源了,但是沒(méi)有收到面試邀請(qǐng)、或者被面試官覺(jué)得項(xiàng)目不真實(shí)了?

          實(shí)踐

          以上就是本次分享,Git 提交的實(shí)踐其實(shí)非常簡(jiǎn)單,我建議大家每次做新項(xiàng)目時(shí),無(wú)論大小,都用 Git 來(lái)托管你的項(xiàng)目,并且每開(kāi)發(fā)完一個(gè)功能或解決 Bug,都進(jìn)行一次提交。等項(xiàng)目完成后回過(guò)頭來(lái)看這些提交記錄,都是自己寶貴的財(cái)富。

          ???? 點(diǎn)擊下方閱讀原文,獲取魚(yú)皮往期編程干貨

          往期推薦

          魚(yú)皮的編程小圈子

          語(yǔ)雀 P0 事故復(fù)盤(pán),這 9 個(gè)字亮了!

          1024,我奉勸各位程序員。。

          什么時(shí)候都用微服務(wù),只會(huì)害了你

          魚(yú)皮的大學(xué)簡(jiǎn)歷,僅供參考

          字節(jié)三面:如何設(shè)計(jì)一個(gè)高性能短鏈系統(tǒng)?

          瀏覽 17985
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲台湾一区二区 | 久久亚洲AV成人无码电影麻豆 | 加勒比无码久久综合 | 日韩va中文字幕无码免费 | 欧美成人激情视频 |