鍓嶈█鏈枃涓昏璁茶堪鍓嶇寮€鍙戜腑閬囧埌鐨勯棶棰樹互鍙婄紪鐮佹爣鍑嗛毦浠ヨ惤鍦扮殑瑙e喅鏂规锛屽寘鎷紪鐮佹爣鍑嗗拰gitcommit瑙勮寖銆傞噸鐐规槸鎵ц鍓嶇鍥㈤槦缂栫爜鏍囧噯鐨勬搷浣溿€傝窡鐫€鎴戜竴姝ヤ竴姝ユ潵锛屼綘涓€瀹氳兘鎶婅鑼冭疮褰诲埌搴曘€俀锛氳涓嶈鍒跺畾缂栫爜鏍囧噯锛熸垜搴旇浣跨敤ESLint鍚楋紵浣犳兂瑙勮寖鍖杇it鎻愪氦鍚楋紵绛旓細瀵逛簬闈炰釜浜洪」鐩紝鎴戝缓璁伒寰洟闃熸垨涓绘祦瑙勮寖杩涜缂栫爜銆傚啓浠g爜鍜岃浠g爜鏄袱浠朵笉鍚岀殑浜嬫儏銆傚鏋滀綘鍦ㄥ洟闃熶腑宸ヤ綔锛屾渶濂借姣忎釜鎴愬憳閮借垝鏈嶅湴鐪嬩唬鐮併€俫it鏃ュ織涔熸槸涓€鏍凤紝鍐欏叆鍜岃鍙栨槸涓や釜涓嶅悓鐨勪笢瑗裤€傚鏋滃洟闃熷紑鍙戠殑椤圭洰娌℃湁寮€鍙戣鑼冿細浠ュ悗缁存姢鎴愭湰寰堝彲鑳戒細澧炲姞銆備綘鍙兘鏃犳硶鐞嗚В浣犲悓浜嬬殑浠g爜锛堜綘鐨勫悓浜嬩篃鍙兘鏃犳硶鐞嗚В浣犵殑浠g爜锛夈€傞」鐩笉瀹规槗鎵╁睍銆傚叕鍙镐汉鍛樻祦鍔ㄦ椂锛岄」鐩氦鎺ュ洶闅俱€備笐闄嬬殑锛佹瘮濡傝繖鏍风殑浠g爜灏遍潪甯搁毦鐪嬩簡("Age:"+userInfo.age);console.log("Gender:"+userInfo.gender);}showUserInfo()鏈夌殑鍦版柟鐢ㄥ崟寮曞彿锛屾湁鐨勫湴鏂圭敤鍙屽紩鍙枫€倁serInfo={...}绛夊彿鍚庨潰娌℃湁绌烘牸銆俛ge:20鍐掑彿鍚庢病鏈夌┖鏍笺€俿howUserInfo涓湁涓よ浠g爜娌℃湁鐢ㄥ埗琛ㄧ鏍煎紡鍖栥€傛湁浜涗唬鐮佹湁鍒嗗彿锛屾湁浜涗唬鐮佹病鏈夈€傛嫾鎺ュ瓧绗︿覆鏃讹紝鏈変簺鍔犲彿涓よ竟娌℃湁绌烘牸銆傝櫧鐒惰繖娈典唬鐮佹湁鏁堬紝浣嗙湅璧锋潵闈炲父闅剧湅銆傜敋鑷冲湪寰堝鍏徃锛岃繖绉嶄唬鐮侀兘鏄笉鍚堟牸鐨勶紝澶ф鐜囦細琚叕寮€鎵ц銆傝嚦浜庣敤浠€涔堣鑼冿紙姣斿瑕佷笉瑕佸姞鍒嗗彿锛夛紝鏈枃涓嶆繁鍏ヨ璁恒€傚彲浠ユ寜鐓у洟闃熷崗鍟嗗ソ鐨勮鑼冭繘琛岀紪鐮侊紝涔熷彲浠ヤ娇鐢ㄥ悇澶у巶鍟嗘彁渚涚殑瑙勮寖銆傪煄楋笍鏂囨湯鏀惧嚑涓悇澶у巶鍟嗙殑瑙勮寖閾炬帴~鏍囧噯鍖栧甫鏉ョ殑闂鏈夋爣鍑嗘槸濂戒簨锛屼絾涔熶細甯︽潵涓€浜涢棶棰橈細鍥㈤槦鎴愬憳鑳藉姏鍙傚樊涓嶉綈锛屼互鍙婁竴浜涙垚鍛樺皢琚揩鎸夌収楂樻爣鍑嗛檷浣庡紑鍙戞晥鐜囥€傛柊鎴愬憳鍔犲叆鏃讹紝鏄惁蹇呴』瀹屾暣闃呰瑙勮寖鏂囨。锛熷嵆浣胯瀹屼簡锛屾垜涔熶笉涓€瀹氳寰椼€傝В鍐虫柟妗堥拡瀵逛互涓婇棶棰橈紝姣旇緝娴佽鐨勮В鍐虫柟妗堟槸锛氳嚜鍔ㄥ寲锛佷繚瀛樹唬鐮佹椂锛氳嚜鍔ㄦ牸寮忓寲浠g爜锛岀劧鍚庢鏌ョ紪鐮佹槸鍚︾鍚堝洟闃熻鑼冿紝涓嶇鍚堟彁绀洪敊璇€傛彁浜や唬鐮佹椂锛氭鏌ヤ唬鐮佹槸鍚︾鍚堝洟闃熻鑼冿紝涓嶇鍚堜笉鍏佽鎻愪氦銆傜紪鍐欐彁浜ゆ秷鎭椂锛氭彁渚涙棩蹇楁ā鏉裤€傚嵆浣跨敤ESLint妫€鏌ョ紪鐮佹爣鍑嗭紱浣跨敤Prettier鎻掍欢鑷姩淇濆瓨涓鸿鍒掑ソ鐨勬牸寮忥紱浣跨敤Commitizen绾﹀畾鎻愪氦瑙勮寖锛涙墜鍔ㄨВ鍐宠繖涓棶棰樸€傝繍琛岀幆澧冨拰缂栬緫鍣ㄨ妭鐐筤16.13.1npm^8.1.2@vue/cli^4.5銆?5.浣跨敤VSCode缂栬緫鍣紝鎴戝皢浣跨敤vue-cli鍒涘缓涓€涓猇ue椤圭洰浣滀负婕旂ず銆俁eact椤圭洰鐨勫仛娉曞叾瀹炰篃鏄被浼肩殑銆備笅闈㈢殑浠g爜鍜岃娉曞熀鏈笉浼氫緷璧杤ue锛屽洜涓烘湰鏂囪鐨勬槸浠g爜瑙勮寖鍜孏it鎻愪氦瑙勮寖銆?.鍒涘缓椤圭洰1.1.浣跨敤vue-cli鍒涘缓椤圭洰銆傛病鏈夊畨瑁卾ue-cli鐨勫悓瀛﹀彲浠ヤ娇鐢ㄨ繖涓懡浠ゅ畨瑁呫€俷pminstall-g@vue/cli鐒跺悗浣跨敤vue-cli鍒涘缓椤圭洰銆?銆愮涓€姝ャ€戜娇鐢ㄥ懡浠ゅ垱寤洪」鐩畍uecreate椤圭洰鍚嶏紙灏忓啓鑻辨枃锛?########################################################銆愮浜屾銆戦€夋嫨妯℃澘锛熻閫夋嫨涓€涓璁撅細ManuallyselectfeaturesVueCLIv4.5.15?Pleasepickapreset:(Usearrowkeys)Default([Vue2]babel,eslint)Default(Vue3)([Vue3]babel,eslint)>Manuallyselectfeatures#閫夋嫨杩欎釜锛屾墜鍔ㄥ尮閰?########################################################[Step3]閫夋嫨闇€瑕佺殑鍔熻兘銆傝鏍规嵁鑷繁鐨勯」鐩€夋嫨銆傛湰鏂囧彧鏄仛浠g爜瑙勮寖锛屾墍浠ユ病鏈夐€夋嫨vuex銆佽矾鐢便€乧ss棰勫鐞嗗櫒銆傦紵妫€鏌ラ」鐩墍闇€鐨勫姛鑳斤細锛堟寜閫夋嫨锛?a>鍒囨崲鎵€鏈夛紝鍙嶈浆閫夋嫨锛?*)閫夋嫨V鈥嬧€媢e鐗堟湰(*)Babel()TypeScript()ProgressiveWebApp(PWA)Support()Router()Vuex()CSSPre-processors>(*)Linter/Formatter#浠g爜鏍煎紡鍖栵紝璁板緱閫夎繖涓紒()鍗曞厓娴嬭瘯()E2E娴嬭瘯#########################################################銆愮鍥涙銆戦€夋嫨Vue鐗堟湰銆傛湰鏂囦娇鐢?.x銆傦紵閫夋嫨浣犳兂鐢?.x>3.x#############################鍚姩椤圭洰鐨刅ue.js鐗堟湰#############################銆愮浜旀銆戦€夋嫨瑙勬牸鏂规銆俈ue-cli榛樿鎻愪緵浜嗗嚑濂楄鑼冦€傛垜閫夋嫨浜咵SLint鏍囧噯瑙勮寖锛熼€夋嫨涓€涓猯inter/鏍煎紡鍖栫▼搴忛厤缃細ESLintwitherrorpreventiononlyESLint+Airbnbconfig>ESLint+Standardconfig#ESLintstandardspecificationschemeESLint+Prettier##########################################################銆愮鍏銆戦€夋嫨妫€娴嬩唬鐮佽鑼冪殑鎿嶄綔锛堜繚瀛樻椂锛屾彁浜ゆ椂锛夛紝鎴戝湪杩欓噷閫夋嫨浜嗗畠浠€傦紵閫夋嫨鍏朵粬lint鍔熻兘锛氾紙鎸?space>閫夋嫨锛?a>鍒囨崲鎵€鏈夛紝鍙嶈浆閫夋嫨锛?*)Lintonsave#Detectwhensaving>(*)Lintandfixoncommit#WhensubmittingDetect#########################################################[绗?姝浣犳洿鍠滄灏咮abel銆丒SLint绛夌殑閰嶇疆鏀惧湪鍝噷锛燂紵鎮ㄦ洿鍠滄灏咮abel銆丒SLint绛夌殑閰嶇疆鏀惧湪鍝噷锛燂紙浣跨敤鏂瑰悜閿級>Indedicatedconfigfiles#SeparateconfigurationfileInpackage.json########################################################[姝ラ7]灏嗘淇濆瓨涓烘湭鏉ラ」鐩殑棰勮锛熸垜閫夋嫨涓嶏細n锛熷皢鍏朵繚瀛樹负鏈潵椤圭洰鐨勯璁撅紵(y/N)缁忚繃婕暱鐨勭瓑寰咃紝椤圭洰鍒涘缓鎴愬姛銆傝繍琛岄」鐩細cd椤圭洰鐩綍npmrunserve2锛岄厤缃瓻SLint瑙勫垯ESLint鏄竴涓唬鐮佹娴嬪伐鍏凤紝鍦ㄤ笂涓€姝ュ垱寤洪」鐩殑鎿嶄綔涓紝鎴戜滑宸茬粡灏咵SLint闆嗘垚鍒伴」鐩腑銆傚ESLint涓嶄簡瑙g殑鍚屽鍙互鐪嬪畼缃戜粙缁嶏細銆奅SLint銆?.1閰嶇疆鎵撳紑鏍圭洰褰曚笅鐨?eslintrc.js鏂囦欢鍙互鐪嬪埌榛樿鐨勯厤缃」銆俶odule.exports={root:true,//褰撳墠鏂囦欢鏄惁鍦ㄩ」鐩牴鐩綍涓媏nv:{//寮€鍚疎SLint妫€娴嬬幆澧僴ode:true//寮€鍚痭ode鐜ESLint妫€娴媫,extends:[//闇€瑕佺户鎵垮熀纭€閰嶇疆椤?plugin:vue/vue3-essential','@vue/standard'],parserOptions:{//鎸囧畾瑙f瀽鍣╬arser:'babel-eslint'},/**杩欎釜寰堥噸瑕侊紝椤圭洰鐨勪富瑕侀厤缃鍒欏啓鍦ㄨ繖閲岋紒锛侊紒锛侊紒锛?渚嬪锛氶」鐩腑鏄惁鍏佽浣跨敤console锛熸槸鍚﹀厑璁稿皢瀛楃涓茬敤鍙屽紩鍙峰紩璧锋潵锛?..**"off"鎴?-鍏抽棴瑙勫垯*"warn"鎴?-鎵撳紑瑙勫垯锛屼娇鐢ㄨ鍛婄骇鍒殑閿欒锛氳鍛婏紙涓嶄細瀵艰嚧绋嬪簭閫€鍑猴級*"error"鎴?-寮€鍚鍒欙紝浣跨敤閿欒绾у埆Error:error(瑙﹀彂鏃讹紝绋嬪簭浼氶€€鍑?*/rules:{'no-console':process.env.NODE_ENV==='production'?'璀﹀憡'锛?鍏抽棴'锛?鏃犺皟璇曞櫒'锛歱rocess.env.NODE_ENV==='鐢熶骇'锛?warn':'off','space-before-function-paren':'off'}}2.2娴嬭瘯褰撳墠椤圭洰鍦↗SString涓粯璁や娇鐢ㄥ崟寮曞彿鍖呰9瀛楃锛屾鏃跺鏋滀娇鐢ㄥ弻寮曞彿锛屼竴涓細鎶ラ敊銆傚彲浠ュ皾璇曚慨鏀笰pp.vue/*鐪佺暐閮ㄥ垎浠g爜*/浣跨敤鍙屽紩鍙峰寘瑁规椂strings,ESLint浼氭彁绀哄涓嬮敊璇疎:\practice\vue\vue3\vue3-demo1\src\App.vue10:9errorStringsmustusesinglequotequotes鉁?problem(1error,0warnings)1errorand0涓鍛婂彲鑳藉彲浠ヤ娇鐢╜--fix`閫夐」淇銆備細鎻愮ず閿欒鐨勬枃浠讹紝琛屾暟锛屽垪鏁般€傜劧鍚庣粰鍑烘彁绀洪敊璇疭tringsmustusesinglequotequotes锛屾剰鎬濇槸鈥渟tringsmustusesinglequotes鈥濄€傚鏋滀綘鐨勫洟闃熶範鎯娇鐢ㄥ弻寮曞彿锛屽湪璇彞鍚庡姞鍒嗗彿锛屽彲浠ョ櫨搴︿竴涓嬭繖浜涢厤缃€傛湰鏂囦笉鎵撶畻娣卞叆瑙i噴缂栫爜鏍囧噯锛屽洜涓烘瘡涓洟闃熼兘鏈変笉鍚岀殑椋庢牸銆?銆佸畨瑁呬唬鐮佹牸寮忓寲鎻掍欢PrettierPrettier鍙互鑷姩鎸夌収瑙勮寖涓轰綘鏍煎紡鍖栦唬鐮併€傘€奝rettier涓枃缃戙€?.1瀹夎Prettier澶у鏁版椂鍊欙紝浣犵殑浠g爜椋庢牸宸茬粡鎴愪负涓€绉嶄範鎯紝杩涘叆涓€涓柊鐨勫洟闃熷悗寰堥毦鏀瑰彉銆傚鏋滅粡甯稿嚭鐜板叧浜庣紪鐮佹爣鍑嗙殑閿欒鎻愮ず锛岀‘瀹炰細褰卞搷寮€鍙戦€熷害銆傝繖鏃跺€橮rettier鍙互甯埌浣犮€侾rettier鍙互鏍规嵁浣犱繚瀛樻椂璁剧疆鐨勮鍒欒嚜鍔ㄦ牸寮忓寲浠g爜銆傛垜涓昏鐢╒SCode杩欎釜缂栬緫鍣紝鐩存帴鍦ㄦ彃浠跺競鍦烘壘鍒癙rettier锛岀偣鍑诲畨瑁呭嵆鍙€?.2閰嶇疆鏂规瀹夎Prettier鎻掍欢鍚庯紝鎮ㄥ彲浠ユ牴鎹偍椤圭洰瑙勮寖鐨勮姹傞厤缃嚜鍔ㄦ牸寮忓寲鏂规銆傚湪椤圭洰鐨勬牴鐩綍涓垱寤轰竴涓?prettierrc鏂囦欢銆傝繖涓枃浠跺憡璇塒rettier濡備綍鏍煎紡鍖栦唬鐮併€傞噷闈㈠彲浠ュ啓濡備笅閰嶇疆锛歿//涓嶄娇鐢ㄥ垎鍙疯娉?semi":false,//浣跨敤鍗曞紩鍙?singleQuote":true,//瀵硅薄鏈€鍚庝竴琛屼笉鍔犻€楀彿"trailingComma":"none"}鏇村閰嶇疆鍙互鐧惧害锛屾垨鑰呪€滄紓浜腑鏂囩綉鈥濄€?.3璁剧疆淇濆瓨鏃惰嚜鍔ㄦ牸寮忓寲浠g爜鎵撳紑VSCode璁剧疆闈㈡澘锛氭枃浠?棣栭€夐」-璁剧疆鐒跺悗鍦ㄦ悳绱㈡爮杈撳叆save锛岀劧鍚庡嬀閫塃ditor:FormatOnSave銆傞渶瑕佹敞鎰忕殑鏄紝濡傛灉閰嶇疆鍚嶦SLint鎴朠rettier娌℃湁鐢熸晥锛岃閲嶆柊杩愯椤圭洰銆?銆佸父瑙勭殑鎻愪氦瑙勮寖gitcommit涔熻瑙勮寖锛屾渶濂芥彁渚涙ā鏉挎彁浜ゃ€?.1濂借鑼冿紒涓婇潰璁茬殑鏄紪鐮佹椂鐨勮鑼冪害鏉熴€傚叾瀹炶繕鏈変竴涓鑼冨緢澶氫汉閮芥病鏈夋敞鎰忓埌銆傚畠鏄増鏈俊鎭鑼冦€傛垜浠厛鏉ョ湅鐪嬩粈涔堝彨濂界殑瑙勮寖锛氭瘡鏉¤褰曢兘鏈夊姛鑳芥弿杩帮紝鐒跺悗绠€鍗曟弿杩颁竴涓嬭繖娆℃彁浜ょ殑鎻忚堪銆?.2閬囧埌鐨勯棶棰樹笂闈㈢殑渚嬪瓙鐪嬭捣鏉ュ緢鑸掓湇锛屼絾鏄瘡娆¢兘杩欐牱鍐欎細涓嶄細寰堥夯鐑﹀憿锛熷浣曚繚璇佸ぇ瀹舵寜鐓у悓鏍风殑瑙勮寖鏉ュ啓锛熸瘮濡傦細鏈夌殑浜哄啓鈥滀慨澶峛ug鈥濓紝鏈夌殑浜哄啓鈥滀慨澶峛ug鈥濄€?.3瑙e喅鏂规硶鏄娇鐢ㄢ€滃父瑙勬彁浜よ鑼冣€濄€傛墍璋撶害瀹氬ソ鐨勬姇绋胯鑼冿紝鍏跺疄灏辨槸鎻愪緵涓€濂楁ā鏉胯浣犻€夋嫨鏈鎶曠鐨勫ぇ浣撴柟鍚戯紝鐒跺悗鍦ㄦ渶鍚庣畝鍗曞啓涓婃湰娆℃姇绋挎弿杩扮殑涓€涓ゅ彞銆傚父瑙勬彁浜よ鑼冭璁烘渶澶氱殑鏄粠Angular鍥㈤槦瑙勮寖鎵╁睍鑰屾潵鐨勫父瑙勬彁浜よ鑼冦€傚鏋滀綘鏈夊叴瓒o紝浣犲彲浠ョ湅鐪嬨€傚父瑙勬彁浜よ鑼冩牸寮忥細[optionalscope]:[optionalscope]:type鏄竴鍫唎ptions锛屼笉闇€瑕佺敤鎴锋墜鍔ㄨ緭鍏ャ€傝繖瑙e喅浜嗕笂杩伴棶棰樹箣涓€銆?.4鍔ㄦ墜瀹炵幇浣跨敤Commitizen鍜宑z-customizable鏉ュ疄鐜般€傚苟浣跨敤gitcz鑰屼笉鏄痝itcommit銆?.4.1瀹夎npminstallcommitizencz-customizable-dev浣跨敤涓婇潰鐨勫懡浠ゅ畨瑁卌ommitizen鍜宑z-customizable銆傝繖閲屼箣鎵€浠ユ病鏈夊叏灞€瀹夎-g锛屾槸鍥犱负鎺ユ墜椤圭洰鐨勬柊灏忎紮浼磋嚜宸辩數鑴戜笂鍙兘娌℃湁瀹夎commitizen銆傝繖鏃跺€欏湪椤圭洰涓窡鐫€瀹夎灏卞彲浠ユ甯镐娇鐢ㄤ簡銆傚鏋滀綘缁忓父浣跨敤杩欎釜瑙勮寖鎻愪氦锛屽缓璁綘鍏ㄥ眬瀹夎commitizen銆備絾cz-customizable杩樻槸寤鸿瀹夎鍦ㄩ」鐩?dev涓紝杩欐牱姣忎釜椤圭洰閮藉彲浠ョ嫭绔嬮厤缃€?.4.2閰嶇疆鍦╬ackage.json涓坊鍔犲涓嬮厤缃細/*鐪佺暐閮ㄥ垎浠g爜*/"config":{"commitizen":{"path":"node_modules/cz-customizable"}}鍦ㄩ」鐩笅鍒涘缓鏍圭洰褰曘€俢z-config.js鏂囦欢锛屽苟娣诲姞濡備笅閰嶇疆锛歮odule.exports={//optionaltypestypes:[{value:'feat',name:'鈿eat:newfeature'},{value:'fix',name:'馃悰fix:Bugfix'},{value:'docs',name:'鉁忥笍docs:鏂囨。鏀瑰姩'},{value:'style',name:'馃拕style:涓嶅奖鍝嶆剰涔夌殑鏀瑰姩浠g爜锛堢┖鐧姐€佹牸寮忓寲銆佺己灏戝垎鍙风瓑锛?},{value:'refactor',name:'鈾伙笍refactor:閲嶆瀯浠g爜锛屾棦涓嶄慨澶嶉敊璇篃涓嶆坊鍔犲姛鑳?},{value:'perf',name:'鈿erf:鎬ц兘浼樺寲'},{value:'test',name:'鉁卼est:娴嬭瘯鐩稿叧'},{value:'ci',name:'馃懛ci:鏇存敼鎸佺画闆嗘垚鏂囦欢鍜岃剼鏈?},{value:'chore',name:'馃摝chore:鏉傚姟锛屼緥濡傞噸鏂版墦鍖呮垨鏇存柊渚濊禆宸ュ叿'},{value:'revert',name:'鈴猺evert:coderegression'},{value:'WIP',name:'馃毀WIP:Workinprogress'}],//浣滅敤鍩熺被鍨嬶紙瀹氫箟鍚庡彲鎸変笂涓嬮敭閫夋嫨锛塻copes:[['components','componentrelated'],['hooks','hookrelated'],['utils','utils-related'],['element-ui','瀵筫lement-ui鐨勮皟鏁?],['styles','Style-related'],['deps','projectdependencies'],['config','configuration-related'],['other','othermodifications'],//濡傛灉閫夋嫨custom锛屽氨浼氳姹傜◢鍚庤緭鍏ヨ嚜瀹氫箟浣滅敤鍩熶篃鍙互涓嶈缃椤癸紝璁剧疆allowCustomScopes涓簍rue['custom','浠ヤ笂閮戒笉鏄紵鎴戞兂鑷畾涔?]].map(([value,description])=>{return{value,name:`${value.padEnd(30)}(${description})`}}),//姝ラ娑堟伅鎻愮ずmessages:{type:'纭繚鏈鎻愪氦绗﹀悎瑙勮寖锛乗n閫夋嫨瑕佹彁浜ょ殑绫诲瀷锛?,scope:'\n閫夋嫨鑼冨洿锛堝彲閫夛級锛?,customScope:'璇疯緭鍏ヤ慨鏀硅寖鍥达紙鍙€夛級锛?,subject:'璇疯緭鍏ヤ慨鏀硅鏄庯紙蹇呭~锛夛細',body:'濉啓鏇磋缁嗙殑鍙樻洿鎻忚堪锛堝彲閫夛級锛?,footer:'璇疯緭鍏ヨ鍏抽棴鐨勯棶棰橈紙鍙€夛級锛?,confirmCommit:'纭鎻愪氦锛?},//鍏佽鑷畾涔夎寖鍥碼llowCustomScopes:true,//闂璺宠繃skipQuestions:['footer'],//涓婚鏂囨湰榛樿鍊间负72subjectLimit:100}4.4.3鐜板湪鍙互浣跨敤gitcz鏉ユ浛鎹it鎻愪氦銆傜粡杩囦互涓婇厤缃悗锛屽氨鍙互浣跨敤gitadd浜嗐€傚皢淇敼鎻愪氦鍒版殏瀛樺尯锛岀劧鍚庝娇鐢╣itcz鎻愪氦涓€涓増鏈€俫itadd.gitcz杈撳叆gitcz鍚庯紝寮€濮嬮€夋嫨鎻愪氦绫诲瀷銆傞€夋嫨鍙樺寲鑼冨洿鍚庯紝浼氭湁涓€绯诲垪鐨勬彁绀猴紝鏈変簺鏄己鍒舵€х殑銆傛渶鍚庯紝纭鎻愪氦鍚庯紝灏卞彲浠ョ敓鎴愮増鏈簡銆傛渶鍚庝娇鐢╣itlog鏌ョ湅鎻愪氦鍘嗗彶銆傝鑼冨弬鑰僡irbnb瑙勮寖google瑙勮寖鐧惧害EFE瑙勮寖浜笢鍌查€旇鑼僇S浠g爜澶囨敞瑙勮寖锛欽SDoc闃竴宄扮殑CommitmessageandChangelog缂栧啓鎸囧崡濡傛灉鏈枃瀵规偍鏈夊府鍔╋紝璇风偣璧烇紝涔熷彲浠ュ皢姝ゆ枃绔犳帹鑽愮粰鎮ㄧ殑鏈嬪弸鏈嬪弸浠€傜偣璧?鍏虫敞+鏀惰棌=瀛︿範浜?/p>