前端提交信息規(guī)范——commitlint

檢查項目 需要有.git文件夾

安裝依賴 husky

husky是Git hooks 工具,可以防止使用 Git hooks 的一些不好的 commit 或者 push力喷。)

#安裝husky 依賴
npm install husky --save-dev
#啟用 Git 掛鉤
npx husky install
#自動啟用hooks
npm set-script prepare "husky install"
#添加 commit-msg 鉤子
npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"'

安裝@commitlint/config-conventional @commitlint/cli , commit 校驗工具

npm install --save-dev @commitlint/config-conventional @commitlint/cli

生成配置文件commitlint.config.js

echo "module.exports = {extends: ['@commitlint/config-conventional']};" > commitlint.config.js

commitlint.config.js配置項<僅作參考>(官方文檔:https://commitlint.js.org/#/

// @see: https://cz-git.qbenben.com/zh/guide
/** @type {import('cz-git').UserConfig} */

module.exports = {
  ignores: [(commit) => commit.includes("init")],
  extends: ["@commitlint/config-conventional"],
  rules: {
    // @see: https://commitlint.js.org/#/reference-rules
    "body-leading-blank": [2, "always"],
    "footer-leading-blank": [1, "always"],
    "header-max-length": [2, "always", 108],
    "subject-empty": [2, "never"],
    "type-empty": [2, "never"],
    "subject-case": [0],
    "type-enum": [
      2,
      "always",
      [
        "feat",
        "fix",
        "docs",
        "style",
        "refactor",
        "perf",
        "test",
        "build",
        "ci",
        "chore",
        "revert",
        "wip",
        "workflow",
        "types",
        "release",
      ],
    ],
  },
  prompt: {
    messages: {
      type: "Select the type of change that you're committing:",
      scope: "Denote the SCOPE of this change (optional):",
      customScope: "Denote the SCOPE of this change:",
      subject: "Write a SHORT, IMPERATIVE tense description of the change:\n",
      body: 'Provide a LONGER description of the change (optional). Use "|" to break new line:\n',
      breaking:
        'List any BREAKING CHANGES (optional). Use "|" to break new line:\n',
      footerPrefixsSelect:
        "Select the ISSUES type of changeList by this change (optional):",
      customFooterPrefixs: "Input ISSUES prefix:",
      footer: "List any ISSUES by this change. E.g.: #31, #34:\n",
      confirmCommit: "Are you sure you want to proceed with the commit above?",
      // 中文版
      // type: "選擇你要提交的類型 :",
      // scope: "選擇一個提交范圍(可選):",
      // customScope: "請輸入自定義的提交范圍 :",
      // subject: "填寫簡短精煉的變更描述 :\n",
      // body: '填寫更加詳細的變更描述(可選)。使用 "|" 換行 :\n',
      // breaking: '列舉非兼容性重大的變更(可選)捕发。使用 "|" 換行 :\n',
      // footerPrefixsSelect: "選擇關(guān)聯(lián)issue前綴(可選):",
      // customFooterPrefixs: "輸入自定義issue前綴 :",
      // footer: "列舉關(guān)聯(lián)issue (可選) 例如: #31, #I3244 :\n",
      // confirmCommit: "是否提交或修改commit ?"
    },
    types: [
      {
        value: "feat",
        name: "feat:     ??  A new feature",
        emoji: "??",
      },
      {
        value: "fix",
        name: "fix:      ??  A bug fix",
        emoji: "??",
      },
      {
        value: "docs",
        name: "docs:     ??  Documentation only changes",
        emoji: "??",
      },
      {
        value: "style",
        name: "style:    ??  Changes that do not affect the meaning of the code",
        emoji: "??",
      },
      {
        value: "refactor",
        name: "refactor: ??   A code change that neither fixes a bug nor adds a feature",
        emoji: "??",
      },
      {
        value: "perf",
        name: "perf:     ??  A code change that improves performance",
        emoji: "??",
      },
      {
        value: "test",
        name: "test:     ?  Adding missing tests or correcting existing tests",
        emoji: "?",
      },
      {
        value: "build",
        name: "build:    ???   Changes that affect the build system or external dependencies",
        emoji: "???",
      },
      {
        value: "ci",
        name: "ci:       ??  Changes to our CI configuration files and scripts",
        emoji: "??",
      },
      {
        value: "chore",
        name: "chore:    ??  Other changes that don't modify src or test files",
        emoji: "??",
      },
      {
        value: "revert",
        name: "revert:   ??  Reverts a previous commit",
        emoji: "??",
      },
      // 中文版
      // { value: "特性", name: "特性:   ??  新增功能", emoji: "??" },
      // { value: "修復", name: "修復:   ??  修復缺陷", emoji: "??" },
      // { value: "文檔", name: "文檔:   ??  文檔變更", emoji: "??" },
      // { value: "格式", name: "格式:   ??  代碼格式(不影響功能,例如空格很魂、分號等格式修正)", emoji: "??" },
      // { value: "重構(gòu)", name: "重構(gòu):   ??  代碼重構(gòu)(不包括 bug 修復扎酷、功能新增)", emoji: "??" },
      // { value: "性能", name: "性能:   ??  性能優(yōu)化", emoji: "??" },
      // { value: "測試", name: "測試:   ?  添加疏漏測試或已有測試改動", emoji: "?" },
      // { value: "構(gòu)建", name: "構(gòu)建:   ???  構(gòu)建流程、外部依賴變更(如升級 npm 包遏匆、修改 webpack 配置等)", emoji: "???" },
      // { value: "集成", name: "集成:   ??  修改 CI 配置法挨、腳本", emoji: "??" },
      // { value: "回退", name: "回退:   ??  回滾 commit", emoji: "??" },
      // { value: "其他", name: "其他:   ??  對構(gòu)建過程或輔助工具和庫的更改(不影響源文件、測試用例)", emoji: "??" }
    ],
    useEmoji: true,
    themeColorCode: "",
    scopes: [],
    allowCustomScopes: true,
    allowEmptyScopes: true,
    customScopesAlign: "bottom",
    customScopesAlias: "custom",
    emptyScopesAlias: "empty",
    upperCaseSubject: false,
    allowBreakingChanges: ["feat", "fix"],
    breaklineNumber: 100,
    breaklineChar: "|",
    skipQuestions: [],
    issuePrefixs: [
      { value: "closed", name: "closed:   ISSUES has been processed" },
    ],
    customIssuePrefixsAlign: "top",
    emptyIssuePrefixsAlias: "skip",
    customIssuePrefixsAlias: "custom",
    allowCustomIssuePrefixs: true,
    allowEmptyIssuePrefixs: true,
    confirmColorize: true,
    maxHeaderLength: Infinity,
    maxSubjectLength: Infinity,
    minSubjectLength: 0,
    scopeOverrides: undefined,
    defaultBody: "",
    defaultIssues: "",
    defaultScope: "",
    defaultSubject: "",
  },
};

注意該文件編碼需要時 utf-8

vscode git 命令

克隆項目命令

git clone XXXXXX.git

把修改的文件添加到本地git緩存區(qū)幅聘。

git add . 或者 git add dir/filename # 添加指定文件命令可以
注意:git add . (后面有個點)表示添加目錄下所有文件到本地git緩存區(qū)凡纳。

提交代碼命令(-m 必須的 表示添加提交信息)

git commit -m <type>[optional scope]: <description>
如:
git commit -m 'feat: 增加 xxx 功能'

更新本地代碼

git pull origin master # master  可以更換為其他分支

推送代碼到遠程

git push -u origin master # master可以更換為其他分支

創(chuàng)建切換分支

#切換分支
git checkout master
#創(chuàng)建并切換到develop分支
git checkout -b develop 

合并其他分支

#1.切換到master分支
#2.合并develop分支代碼到master分支
git merge develop

查看代碼提交歷史

#查看所有歷史
 git log
#查看指定文件提交歷史
git log filePath(如:src\utils\is\index.ts)

代碼回滾(可參考博客:https://www.cnblogs.com/Jeffxu/p/16375957.html

image.png

根據(jù)回滾版本所對應(yīng)的 commit SHA-1值(commit后面的一串數(shù)字)來進行回滾操作:
git reset --hard  b432f748cffe8
或
git revert  b432f748cffe8

區(qū)別:
git revert 只回退到上一個版本
git reset 回退到指定版本 該版本后代碼都將丟失

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市帝蒿,隨后出現(xiàn)的幾起案子荐糜,更是在濱河造成了極大的恐慌,老刑警劉巖葛超,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件暴氏,死亡現(xiàn)場離奇詭異,居然都是意外死亡绣张,警方通過查閱死者的電腦和手機答渔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來侥涵,“玉大人沼撕,你說我怎么就攤上這事宋雏。” “怎么了务豺?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵好芭,是天一觀的道長。 經(jīng)常有香客問我冲呢,道長舍败,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任敬拓,我火速辦了婚禮邻薯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘乘凸。我一直安慰自己厕诡,他們只是感情好,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布营勤。 她就那樣靜靜地躺著灵嫌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪葛作。 梳的紋絲不亂的頭發(fā)上寿羞,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音赂蠢,去河邊找鬼绪穆。 笑死,一個胖子當著我的面吹牛虱岂,可吹牛的內(nèi)容都是我干的玖院。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼第岖,長吁一口氣:“原來是場噩夢啊……” “哼难菌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蔑滓,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤郊酒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后烫饼,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體猎塞,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年杠纵,在試婚紗的時候發(fā)現(xiàn)自己被綠了荠耽。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡比藻,死狀恐怖铝量,靈堂內(nèi)的尸體忽然破棺而出倘屹,到底是詐尸還是另有隱情,我是刑警寧澤慢叨,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布纽匙,位于F島的核電站,受9級特大地震影響拍谐,放射性物質(zhì)發(fā)生泄漏烛缔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一轩拨、第九天 我趴在偏房一處隱蔽的房頂上張望践瓷。 院中可真熱鬧,春花似錦亡蓉、人聲如沸晕翠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽淋肾。三九已至,卻和暖如春爸邢,著一層夾襖步出監(jiān)牢的瞬間樊卓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工甲棍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留简识,地道東北人赶掖。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓感猛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親奢赂。 傳聞我的和親對象是個殘疾皇子陪白,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344