{"id":318,"date":"2025-05-23T02:19:25","date_gmt":"2025-05-23T02:19:25","guid":{"rendered":"https:\/\/docs.quantri.online\/?docs=developer-guide\/introduction\/quy-trinh-lam-viec-danh-cho-developer"},"modified":"2025-07-07T02:37:29","modified_gmt":"2025-07-07T02:37:29","slug":"git-workflow","status":"publish","type":"docs","link":"https:\/\/docs.quantri.online\/?docs=developer-guide\/introduction\/git-workflow","title":{"rendered":"Git workflow"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Nh\u1eb1m qu\u1ea3n l\u00fd lu\u1ed3ng ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m m\u1ed9t c\u00e1ch khoa h\u1ecdc, tr\u00e1nh xung \u0111\u1ed9t v\u00e0 n\u00e2ng cao hi\u1ec7u qu\u1ea3 l\u00e0m vi\u1ec7c nh\u00f3m. D\u01b0\u1edbi \u0111\u00e2y l\u00e0 \u0111\u1ecbnh ngh\u0129a c\u00e1c nh\u00e1nh Git trong quy tr\u00ecnh ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m d\u00e0nh cho developer.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"949\" height=\"526\" src=\"https:\/\/docs.quantri.online\/wp-content\/uploads\/2025\/05\/git-workflow-1.png\" alt=\"\" class=\"wp-image-333\" srcset=\"https:\/\/docs.quantri.online\/wp-content\/uploads\/2025\/05\/git-workflow-1.png 949w, https:\/\/docs.quantri.online\/wp-content\/uploads\/2025\/05\/git-workflow-1-300x166.png 300w, https:\/\/docs.quantri.online\/wp-content\/uploads\/2025\/05\/git-workflow-1-768x426.png 768w\" sizes=\"auto, (max-width: 949px) 100vw, 949px\" \/><\/figure>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Nh\u00e1nh <strong>&#8220;main&#8221; <\/strong>ch\u1ee9a code m\u00f4i tr\u01b0\u1eddng ng\u01b0\u1eddi d\u00f9ng. M\u00f4i tr\u01b0\u1eddng ng\u01b0\u1eddi d\u00f9ng cu\u1ed1i s\u1eed d\u1ee5ng.<\/li>\n\n\n\n<li>Nh\u00e1nh <strong>&#8220;develop&#8221;<\/strong> (Dev) ch\u1ee9a code m\u00f4i tr\u01b0\u1eddng ph\u00e1t tri\u1ec3n. M\u00f4i tr\u01b0\u1eddng Test d\u00e0nh cho developer tr\u01b0\u1edbc khi merge v\u00e0o nh\u00e1nh <strong><em>&#8220;main&#8221;<\/em><\/strong>.<\/li>\n\n\n\n<li>Nh\u00e1nh <strong>&#8220;feature&#8221;<\/strong> \u0111\u01b0\u1ee3c t\u1ea1o t\u1eeb nh\u00e1nh <strong><em>&#8220;develop&#8221; <\/em><\/strong>ch\u1ee9a code c\u00e1c ch\u1ee9c n\u0103ng. \n<ul class=\"wp-block-list\">\n<li>Quy \u0111\u1ecbnh t\u00ean nh\u00e1nh feature<strong> <em>[developer_name]_[feature]_[optional]<\/em><\/strong>. V\u00ed d\u1ee5 <strong><em>hungnh_contacts_21052025<\/em><\/strong><\/li>\n\n\n\n<li>Nh\u1eb1m nh\u1eadn bi\u1ebft do developer n\u00e0o \u0111\u1ea3m nh\u1eadn c\u0169ng nh\u01b0 t\u00ednh n\u0103ng th\u1ef1c hi\u1ec7n.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Nh\u00e1nh <strong>&#8220;release&#8221;<\/strong> ch\u1ee9a code m\u00f4i tr\u01b0\u1eddng th\u1eed nghi\u1ec7m.\n<ul class=\"wp-block-list\">\n<li>Nh\u00e1nh n\u00e0y th\u00f4ng th\u01b0\u1eddng d\u00e0nh cho Tester<\/li>\n\n\n\n<li>T\u1ea1m th\u1eddi b\u1ecf qua nh\u00e1nh n\u00e0y. Test tr\u1ef1c ti\u1ebfp tr\u00ean nh\u00e1nh<strong> <em>&#8220;develop&#8221;<\/em><\/strong><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Nh\u00e1nh <strong>&#8220;hotfix&#8221;<\/strong> \u0111\u01b0\u1ee3c t\u1ea1o ra t\u1eeb nh\u00e1nh <em>&#8220;<strong>main<\/strong>&#8220;<\/em>. Xu\u1ea5t hi\u1ec7n trong tr\u01b0\u1eddng h\u1ee3p t\u00ednh n\u0103ng tr\u00ean m\u00f4i tr\u01b0\u1eddng <strong><em>&#8220;Production&#8221;<\/em> <\/strong>b\u1ecb l\u1ed7i.\n<ul class=\"wp-block-list\">\n<li>Developer s\u1ebd tr\u1ef1c ti\u1ebfp s\u1eeda l\u1ed7i tr\u00ean branch <strong>&#8220;hotfix&#8221;<\/strong>.<\/li>\n\n\n\n<li>\u0110\u1eb7t t\u00ean nh\u00e1nh <strong><em>[developer_name]_[hotfix_e<\/em><\/strong><strong><em>rror<\/em>_name<em>]_[optional]<\/em><\/strong>. V\u00ed d\u1ee5 <strong><em>hungnh_hotfix_errorjs_21052025<\/em><\/strong>.<\/li>\n\n\n\n<li>Sau khi s\u1eeda l\u1ed7i xong th\u00ec s\u1ebd merge th\u1eb3ng l\u00ean <em><strong>&#8220;main&#8221; <\/strong><\/em>v\u00e0 merge ng\u01b0\u1ee3c l\u1ea1i nh\u00e1nh <strong><em>&#8220;develop&#8221;<\/em><\/strong>.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nh\u1eb1m qu\u1ea3n l\u00fd lu\u1ed3ng ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m m\u1ed9t c\u00e1ch khoa h\u1ecdc, tr\u00e1nh xung \u0111\u1ed9t v\u00e0 n\u00e2ng cao hi\u1ec7u qu\u1ea3 l\u00e0m vi\u1ec7c nh\u00f3m. D\u01b0\u1edbi \u0111\u00e2y l\u00e0 \u0111\u1ecbnh ngh\u0129a c\u00e1c nh\u00e1nh Git trong quy tr\u00ecnh ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m d\u00e0nh cho developer.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":316,"menu_order":1,"comment_status":"open","ping_status":"closed","template":"","doc_tag":[],"class_list":["post-318","docs","type-docs","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/docs.quantri.online\/index.php?rest_route=\/wp\/v2\/docs\/318","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/docs.quantri.online\/index.php?rest_route=\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/docs.quantri.online\/index.php?rest_route=\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/docs.quantri.online\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/docs.quantri.online\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=318"}],"version-history":[{"count":15,"href":"https:\/\/docs.quantri.online\/index.php?rest_route=\/wp\/v2\/docs\/318\/revisions"}],"predecessor-version":[{"id":344,"href":"https:\/\/docs.quantri.online\/index.php?rest_route=\/wp\/v2\/docs\/318\/revisions\/344"}],"up":[{"embeddable":true,"href":"https:\/\/docs.quantri.online\/index.php?rest_route=\/wp\/v2\/docs\/316"}],"wp:attachment":[{"href":"https:\/\/docs.quantri.online\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=318"}],"wp:term":[{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/docs.quantri.online\/index.php?rest_route=%2Fwp%2Fv2%2Fdoc_tag&post=318"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}