{"id":41930,"date":"2026-06-23T09:26:31","date_gmt":"2026-06-23T02:26:31","guid":{"rendered":"https:\/\/interdata.vn\/blog\/?p=41930"},"modified":"2026-06-23T09:26:31","modified_gmt":"2026-06-23T02:26:31","slug":"day-code-len-github","status":"publish","type":"post","link":"https:\/\/interdata.vn\/blog\/day-code-len-github\/","title":{"rendered":"4 C\u00e1ch \u0110\u1ea9y Code L\u00ean GitHub Si\u00eau Nhanh, Kh\u00f4ng L\u1ed7i"},"content":{"rendered":"\n\n<style>\n.interdata-plan-carousel{--blue:#005bea;--blue-dark:#004dcc;--text:#071832;--border:#d8e6fb;--bg:#f3f8ff;container-type:inline-size;background:var(--bg);padding:14px 12px;overflow:hidden}\n.interdata-carousel-heading{color:#003fbd;font-size:18px;line-height:1.35;font-weight:800;text-align:center;margin:0 0 14px}\n.interdata-plan-track{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;padding:0 0 8px;-webkit-overflow-scrolling:touch;scrollbar-width:none}\n.interdata-plan-track::-webkit-scrollbar{display:none}\n.interdata-plan-card,.interdata-plan-card *{box-sizing:border-box}\n.interdata-plan-card{flex:0 0 calc(25% - 9px);min-width:205px;background:#fff;border:1px solid var(--border);border-radius:8px;padding:18px 14px 14px;min-height:382px;display:flex;flex-direction:column;scroll-snap-align:start;box-shadow:0 5px 14px rgba(0,62,145,.08)}\n.interdata-plan-title{color:var(--blue-dark);font-size:17px;line-height:1.25;font-weight:800;text-align:center;margin:0 0 8px}\n.interdata-plan-price{color:var(--blue-dark);font-size:32px;line-height:1;font-weight:900;text-align:center;margin-bottom:14px;white-space:nowrap;letter-spacing:0}\n.interdata-plan-price span{font-size:12px;font-weight:800;margin-left:2px}\n.interdata-plan-badge{align-self:center;display:inline-flex;align-items:center;justify-content:center;background:#ff3934;color:#fff;border-radius:5px;padding:8px 10px;font-size:10px;line-height:1;font-weight:800;margin-bottom:18px;white-space:nowrap}\n.interdata-plan-features{list-style:none!important;padding:0!important;margin:0!important}\n.interdata-plan-features li{display:flex;gap:8px;align-items:flex-start;color:var(--text);font-size:13px;line-height:1.35;font-weight:700;text-align:left;margin:0 0 11px!important;padding:0!important}\n.interdata-plan-icon{width:15px;min-width:15px;height:15px;color:#0069ff;margin-top:2px}\n.interdata-plan-icon svg{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}\n.interdata-plan-spacer{flex:1}\n.interdata-plan-button{display:flex;align-items:center;justify-content:center;min-height:44px;width:100%;background:var(--blue);color:#fff!important;border-radius:5px;font-size:14px;font-weight:800;text-decoration:none!important;box-shadow:0 7px 14px rgba(0,91,234,.24);transition:transform .2s ease,background .2s ease}\n.interdata-plan-button:hover{background:var(--blue-dark);color:#fff!important;transform:translateY(-1px)}\n@container (max-width:860px){.interdata-plan-card{flex-basis:calc(33.333% - 8px);min-width:205px}}\n@container (max-width:640px){.interdata-plan-card{flex-basis:calc(50% - 7px);min-width:215px}}\n@container (max-width:480px){.interdata-plan-carousel{padding:12px 10px}.interdata-carousel-heading{font-size:16px}.interdata-plan-card{flex-basis:86%;min-width:235px}.interdata-plan-price{font-size:31px}}\n@media (max-width:360px){.interdata-plan-card{flex-basis:90%;min-width:220px}.interdata-plan-price{font-size:29px}.interdata-plan-badge{font-size:9px}}\n<\/style>\n\n<div class=\"interdata-plan-carousel\">\n  <div class=\"interdata-carousel-heading\"><span style=\"font-family: Roboto, sans-serif; color: red;\">Si\u00eau \u01afu \u0110\u00e3i VPS \/ CLOUD SERVER - Ti\u1ebft Ki\u1ec7m \u0110\u1ebfn 70%<\/span><\/div>\n\n  <svg width=\"0\" height=\"0\" style=\"position:absolute;visibility:hidden\" aria-hidden=\"true\">\n    <symbol id=\"id-icon-cpu\" viewBox=\"0 0 24 24\"><rect x=\"7\" y=\"7\" width=\"10\" height=\"10\" rx=\"2\"><\/rect><path d=\"M4 9h3M4 15h3M17 9h3M17 15h3M9 4v3M15 4v3M9 17v3M15 17v3\"><\/path><path d=\"M10 10h4v4h-4z\"><\/path><\/symbol>\n    <symbol id=\"id-icon-ram\" viewBox=\"0 0 24 24\"><rect x=\"4\" y=\"8\" width=\"16\" height=\"8\" rx=\"2\"><\/rect><path d=\"M7 16v2M11 16v2M15 16v2M19 16v2M7 11h1M11 11h1M15 11h1\"><\/path><\/symbol>\n    <symbol id=\"id-icon-storage\" viewBox=\"0 0 24 24\"><rect x=\"6\" y=\"3\" width=\"12\" height=\"18\" rx=\"2\"><\/rect><path d=\"M9 7h6\"><\/path><circle cx=\"12\" cy=\"16\" r=\"1.5\"><\/circle><\/symbol>\n    <symbol id=\"id-icon-network\" viewBox=\"0 0 24 24\"><path d=\"M5 12.5a10 10 0 0 1 14 0\"><\/path><path d=\"M8.5 16a5 5 0 0 1 7 0\"><\/path><path d=\"M12 19h.01\"><\/path><\/symbol>\n    <symbol id=\"id-icon-gift\" viewBox=\"0 0 24 24\"><rect x=\"3\" y=\"8\" width=\"18\" height=\"13\" rx=\"2\"><\/rect><path d=\"M12 8v13M3 12h18\"><\/path><path d=\"M7.5 8C6.1 8 5 6.9 5 5.5S6.1 3 7.5 3C10 3 12 8 12 8\"><\/path><path d=\"M16.5 8C17.9 8 19 6.9 19 5.5S17.9 3 16.5 3C14 3 12 8 12 8\"><\/path><\/symbol>\n  <\/svg>\n\n  <div class=\"interdata-plan-track\">\n    <article class=\"interdata-plan-card\">\n      <h3 class=\"interdata-plan-title\">Premium Base<\/h3>\n      <div class=\"interdata-plan-price\">299K<span>\/3 Th\u00e1ng<\/span><\/div>\n      <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n      <ul class=\"interdata-plan-features\">\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>2 vCore Intel Xeon Scalable<\/li>\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>2 GB RAM<\/li>\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>30 GB NVMe U.2<\/li>\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Network: 300 Mbps<\/li>\n      <\/ul>\n      <div class=\"interdata-plan-spacer\"><\/div>\n      <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/best-value-plans-2026\/best-value-plans-premium-base\" target=\"_blank\" rel=\"nofollow sponsored noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n    <\/article>\n\n    <article class=\"interdata-plan-card\">\n      <h3 class=\"interdata-plan-title\">Premium Base<\/h3>\n      <div class=\"interdata-plan-price\">999K<span>\/n\u0103m<\/span><\/div>\n      <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n      <ul class=\"interdata-plan-features\">\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>3 vCore Intel Xeon<\/li>\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>3 GB RAM<\/li>\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>30 GB SSD NVMe U.2<\/li>\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Network: 300 Mbps<\/li>\n      <\/ul>\n      <div class=\"interdata-plan-spacer\"><\/div>\n      <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/cyber-week-2026\/premium-base\" target=\"_blank\" rel=\"nofollow sponsored noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n    <\/article>\n\n    <article class=\"interdata-plan-card\">\n      <h3 class=\"interdata-plan-title\">Premium Pro<\/h3>\n      <div class=\"interdata-plan-price\">2.599K<span>\/n\u0103m<\/span><\/div>\n      <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n      <ul class=\"interdata-plan-features\">\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>6 vCore Intel Xeon Scalable<\/li>\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>8 GB RAM<\/li>\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>80 GB SSD NVMe U.2<\/li>\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Network: 350 Mbps<\/li>\n      <\/ul>\n      <div class=\"interdata-plan-spacer\"><\/div>\n      <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/cyber-week-2026\/premium-pro\" target=\"_blank\" rel=\"nofollow sponsored noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n    <\/article>\n\n    <article class=\"interdata-plan-card\">\n      <h3 class=\"interdata-plan-title\">Cloud-Day - Base<\/h3>\n      <div class=\"interdata-plan-price\">2.666K<span>\/n\u0103m<\/span><\/div>\n      <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n      <ul class=\"interdata-plan-features\">\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-gift\"><\/use><\/svg><\/span>T\u1eb7ng 80 GB S3 v\u00e0 1 N\u0102M S\u1eec D\u1ee4NG khi mua 2 n\u0103m tr\u1edf l\u00ean<\/li>\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>4 vCPU AMD EPYC<\/li>\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>6 GB RAM<\/li>\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>60 GB SSD NVMe U.2<\/li>\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Network: 10 Gbps<\/li>\n      <\/ul>\n      <div class=\"interdata-plan-spacer\"><\/div>\n      <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/cloud-day-by-interdata-2026\/cloud-day-base\" target=\"_blank\" rel=\"nofollow sponsored noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n    <\/article>\n  <\/div>\n<\/div>\n\n\t<div id=\"gap-1929570647\" class=\"gap-element clearfix\" style=\"display:block; height:auto;\">\n\t\t\n<style>\n#gap-1929570647 {\n  padding-top: 30px;\n}\n<\/style>\n\t<\/div>\n\t\n<p style=\"text-align: justify;\"><span style=\"font-size: 100%;\"><strong>\u0110\u1ea9y code l\u00ean GitHub<\/strong> l\u00e0 thao t\u00e1c b\u1eaft bu\u1ed9c \u0111\u1ed1i v\u1edbi m\u1ecdi l\u1eadp tr\u00ecnh vi\u00ean, th\u1ebf nh\u01b0ng vi\u1ec7c \u0111\u1ed1i m\u1eb7t v\u1edbi t\u1ed1c \u0111\u1ed9 upload r\u00f9a b\u00f2, l\u1ed7i ch\u1ee9ng th\u1ef1c HTTPS hay xung \u0111\u1ed9t nh\u00e1nh li\u00ean t\u1ee5c x\u1ea3y ra khi\u1ebfn quy tr\u00ecnh ph\u00e1t tri\u1ec3n d\u1ef1 \u00e1n b\u1ecb gi\u00e1n \u0111o\u1ea1n tr\u1ea7m tr\u1ecdng. \u0110\u1ec3 t\u1ed1i \u01b0u h\u00f3a chu k\u1ef3 v\u1eadn h\u00e0nh ph\u1ea7n m\u1ec1m v\u00e0 ti\u1ebft ki\u1ec7m th\u1eddi gian, b\u1ea1n c\u1ea7n n\u1eafm v\u1eefng nh\u1eefng k\u1ef9 thu\u1eadt truy\u1ec1n t\u1ea3i m\u00e3 ngu\u1ed3n t\u1ed1i \u01b0u nh\u1ea5t. B\u00e0i vi\u1ebft n\u00e0y t\u1eeb c\u00e1c k\u1ef9 s\u01b0 h\u1ec7 th\u1ed1ng t\u1ea1i <a style=\"background: linear-gradient(90deg, #1E3A8A 0%, #2563EB 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; text-decoration: none; font-weight: bold;\" href=\"\/\">InterData<\/a> s\u1ebd ph\u00e2n t\u00edch chi ti\u1ebft c\u00e1c gi\u1ea3i ph\u00e1p \u0111\u1ed3ng b\u1ed9 d\u1eef li\u1ec7u nhanh g\u1ecdn, an to\u00e0n, gi\u00fap b\u1ea1n d\u1ee9t \u0111i\u1ec3m l\u1ed7i ngh\u1ebdn \u0111\u01b0\u1eddng truy\u1ec1n hay t\u1eeb ch\u1ed1i x\u00e1c th\u1ef1c.<\/span><\/p>\n<div style=\"background-color: #eff6ff; padding: 20px; border: 1.5px solid #BFDBFE; border-radius: 12px; margin-bottom: 40px; box-shadow: 0 8px 20px rgba(37, 99, 235, 0.05);\">\n<p style=\"font-family: 'Be Vietnam Pro', sans-serif; font-weight: bold; font-size: 18px; margin-top: 0; margin-bottom: 15px; color: #1e3a8a;\">N\u1ed8I DUNG B\u00c0I VI\u1ebeT<\/p>\n<ul style=\"list-style-type: none; padding-left: 0; margin: 0;\">\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: 600;\" href=\"#section1\">1. B\u1ea3n ch\u1ea5t lu\u1ed3ng d\u1eef li\u1ec7u Git v\u00e0 l\u00fd do qu\u00e1 tr\u00ecnh \u0111\u1ea9y code b\u1ecb ch\u1eadm<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: 600;\" href=\"#section2\">2. C\u00e1ch 1: S\u1eed d\u1ee5ng Git CLI qua giao th\u1ee9c SSH (T\u1ed1i \u01b0u t\u1ed1c \u0111\u1ed9 v\u00e0 b\u1ea3o m\u1eadt)<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: 600;\" href=\"#section3\">3. C\u00e1ch 2: \u0110\u1ed3ng b\u1ed9 m\u00e3 ngu\u1ed3n tr\u1ef1c quan b\u1eb1ng GitHub Desktop<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: 600;\" href=\"#section4\">4. C\u00e1ch 3: \u0110\u1ea9y code si\u00eau t\u1ed1c t\u00edch h\u1ee3p ngay tr\u00ean VS Code<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: 600;\" href=\"#section5\">5. C\u00e1ch 4: T\u1ef1 \u0111\u1ed9ng h\u00f3a CI\/CD \u0111\u1ea9y code v\u00e0 deploy th\u1eb3ng l\u00ean VPS<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: 600;\" href=\"#section6\">6. Kh\u1eafc ph\u1ee5c 5 l\u1ed7i &#8220;Kinh \u0111i\u1ec3n&#8221; khi push Git l\u00ean GitHub<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: 600;\" href=\"#section7\">7. B\u1ea3ng so s\u00e1nh 4 ph\u01b0\u01a1ng ph\u00e1p \u0111\u1ea9y code l\u00ean GitHub<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: 600;\" href=\"#section8\">8. C\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p khi \u0111\u1ed3ng b\u1ed9 m\u00e3 ngu\u1ed3n GitHub<\/a><\/li>\n<\/ul>\n<\/div>\n<h2 id=\"section1\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin-top: 40px; margin-bottom: 20px; line-height: 1.4;\">1. B\u1ea3n ch\u1ea5t lu\u1ed3ng d\u1eef li\u1ec7u Git v\u00e0 l\u00fd do qu\u00e1 tr\u00ecnh \u0111\u1ea9y code b\u1ecb ch\u1eadm<\/h2>\n<p style=\"text-align: justify;\">T\u1ea1i sao vi\u1ec7c \u0111\u1ea9y code \u0111\u00f4i khi m\u1ea5t qu\u00e1 nhi\u1ec1u th\u1eddi gian? \u0110\u1ec3 t\u00ecm ra gi\u1ea3i ph\u00e1p t\u1ed1i \u01b0u, tr\u01b0\u1edbc ti\u00ean b\u1ea1n c\u1ea7n hi\u1ec3u c\u00e1ch Git \u0111\u00f3ng g\u00f3i v\u00e0 chuy\u1ec3n giao d\u1eef li\u1ec7u t\u1eeb m\u00e1y c\u1ee5c b\u1ed9 (local) l\u00ean m\u00e1y ch\u1ee7 GitHub (remote).<\/p>\n<p style=\"text-align: justify;\">Khi b\u1ea1n ch\u1ea1y l\u1ec7nh g\u1eedi d\u1eef li\u1ec7u l\u00ean m\u00e1y ch\u1ee7, Git kh\u00f4ng truy\u1ec1n t\u1eebng file ri\u00eang l\u1ebb m\u1ed9t c\u00e1ch r\u1eddi r\u1ea1c. H\u1ec7 th\u1ed1ng s\u1ebd qu\u00e9t to\u00e0n b\u1ed9 c\u00e1c thay \u0111\u1ed5i trong th\u01b0 m\u1ee5c l\u00e0m vi\u1ec7c, so s\u00e1nh v\u1edbi l\u1ecbch s\u1eed commit g\u1ea7n nh\u1ea5t \u0111\u1ec3 gom c\u1ee5m c\u00e1c \u0111\u1ed1i t\u01b0\u1ee3ng d\u1eef li\u1ec7u (commit, tree, blob) th\u00e0nh m\u1ed9t file n\u00e9n duy nh\u1ea5t g\u1ecdi l\u00e0 Packfile. Qu\u00e1 tr\u00ecnh t\u1ea1o Packfile n\u00e0y ti\u00eau t\u1ed1n n\u0103ng l\u01b0\u1ee3ng c\u1ee7a CPU v\u00e0 RAM tr\u00ean m\u00e1y t\u00ednh c\u1ee7a b\u1ea1n. N\u1ebfu d\u1ef1 \u00e1n ch\u1ee9a nhi\u1ec1u file nh\u1ecb ph\u00e2n n\u1eb7ng nh\u01b0 h\u00ecnh \u1ea3nh \u0111\u1ed9 ph\u00e2n gi\u1ea3i cao, video ho\u1eb7c file th\u1ef1c thi, vi\u1ec7c \u0111\u00f3ng g\u00f3i n\u00e0y s\u1ebd di\u1ec5n ra c\u1ef1c k\u1ef3 ch\u1eadm ch\u1ea1p.<\/p>\n<p style=\"text-align: justify;\">Sau khi n\u00e9n xong, file n\u00e0y s\u1ebd \u0111\u01b0\u1ee3c truy\u1ec1n qua m\u1ea1ng th\u00f4ng qua m\u1ed9t trong hai giao th\u1ee9c ch\u00ednh: HTTPS ho\u1eb7c SSH. C\u00f3 3 nguy\u00ean nh\u00e2n c\u1ed1t l\u00f5i khi\u1ebfn \u0111\u01b0\u1eddng truy\u1ec1n c\u1ee7a b\u1ea1n b\u1ecb ngh\u1ebdn:<\/p>\n<ul style=\"list-style-type: disc; padding-left: 20px; margin-bottom: 25px; color: #1f2937;\">\n<li style=\"margin-bottom: 10px;\"><strong>Ch\u1ee9ng th\u1ef1c HTTPS l\u1eb7p \u0111i l\u1eb7p l\u1ea1i:<\/strong> Giao th\u1ee9c HTTPS y\u00eau c\u1ea7u x\u00e1c th\u1ef1c b\u1eb1ng Personal Access Token (PAT). Vi\u1ec7c li\u00ean t\u1ee5c g\u1eedi th\u00f4ng tin x\u00e1c th\u1ef1c tr\u00ean m\u1ed7i phi\u00ean k\u1ebft n\u1ed1i l\u00e0m t\u0103ng \u0111\u1ed9 tr\u1ec5 m\u1ea1ng (latency) \u0111\u00e1ng k\u1ec3.<\/li>\n<li style=\"margin-bottom: 10px;\"><strong>B\u0103ng th\u00f4ng m\u1ea1ng qu\u1ed1c t\u1ebf b\u1ecb b\u00f3p ngh\u1eb9t:<\/strong> GitHub \u0111\u1eb7t m\u00e1y ch\u1ee7 t\u1ea1i n\u01b0\u1edbc ngo\u00e0i. Khi c\u00e1p quang bi\u1ec3n g\u1eb7p s\u1ef1 c\u1ed1, lu\u1ed3ng upload d\u1eef li\u1ec7u t\u1eeb Vi\u1ec7t Nam s\u1ebd b\u1ecb gi\u1ea3m t\u1ed1c \u0111\u1ed9 nghi\u00eam tr\u1ecdng n\u1ebfu b\u1ea1n kh\u00f4ng c\u1ea5u h\u00ecnh proxy ho\u1eb7c t\u1eadn d\u1ee5ng c\u00e1c h\u1ec7 th\u1ed1ng m\u00e1y ch\u1ee7 trung gian c\u00f3 b\u0103ng th\u00f4ng r\u1ed9ng.<\/li>\n<li style=\"margin-bottom: 10px;\"><strong>X\u1eed l\u00fd c\u00e1c file k\u00edch th\u01b0\u1edbc l\u1edbn kh\u00f4ng \u0111\u00fang c\u00e1ch:<\/strong> Git \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf t\u1ed1i \u01b0u cho c\u00e1c file v\u0103n b\u1ea3n (m\u00e3 ngu\u1ed3n). Khi b\u1ea1n v\u00f4 t\u00ecnh \u0111\u1ea9y c\u00e1c file l\u1edbn h\u01a1n 50MB-100MB l\u00ean h\u1ec7 th\u1ed1ng, Git s\u1ebd b\u1ecb qu\u00e1 t\u1ea3i b\u1ed9 \u0111\u1ec7m, d\u1eabn \u0111\u1ebfn l\u1ed7i timeout \u0111\u01b0\u1eddng truy\u1ec1n gi\u1eefa ch\u1eebng.<\/li>\n<\/ul>\n<h2 id=\"section2\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin-top: 40px; margin-bottom: 20px; line-height: 1.4;\">2. C\u00e1ch 1: S\u1eed d\u1ee5ng Git CLI qua giao th\u1ee9c SSH (T\u1ed1i \u01b0u t\u1ed1c \u0111\u1ed9 v\u00e0 b\u1ea3o m\u1eadt)<\/h2>\n<p style=\"text-align: justify;\">S\u1eed d\u1ee5ng d\u00f2ng l\u1ec7nh Git CLI k\u1ebft h\u1ee3p giao th\u1ee9c SSH l\u00e0 ph\u01b0\u01a1ng ph\u00e1p t\u1ed1i \u01b0u nh\u1ea5t d\u00e0nh cho c\u00e1c k\u1ef9 s\u01b0 ph\u1ea7n m\u1ec1m th\u1ef1c th\u1ee5. N\u00f3 gi\u00fap lo\u1ea1i b\u1ecf ho\u00e0n to\u00e0n b\u01b0\u1edbc nh\u1eadp m\u1eadt kh\u1ea9u hay token phi\u1ec1n ph\u1ee9c, \u0111\u1ed3ng th\u1eddi t\u0103ng t\u1ed1c \u0111\u1ed9 thi\u1ebft l\u1eadp phi\u00ean k\u1ebft n\u1ed1i nh\u1edd c\u01a1 ch\u1ebf m\u00e3 h\u00f3a b\u1ea5t \u0111\u1ed1i x\u1ee9ng.<\/p>\n<p style=\"text-align: justify;\">Thu\u1eadt to\u00e1n Ed25519 hi\u1ec7n nay \u0111\u01b0\u1ee3c khuy\u1ebfn ngh\u1ecb thay th\u1ebf cho RSA c\u0169 nh\u1edd t\u1ed1c \u0111\u1ed9 t\u00ednh to\u00e1n kh\u00f3a nhanh h\u01a1n, \u0111\u1ed9 d\u00e0i kh\u00f3a ng\u1eafn h\u01a1n nh\u01b0ng l\u1ea1i mang \u0111\u1ebfn m\u1ee9c \u0111\u1ed9 b\u1ea3o m\u1eadt cao h\u01a1n \u0111\u00e1ng k\u1ec3. D\u01b0\u1edbi \u0111\u00e2y l\u00e0 c\u00e1c b\u01b0\u1edbc thi\u1ebft l\u1eadp c\u1ea5u h\u00ecnh chu\u1ea9n x\u00e1c \u0111\u1ec3 t\u1ed1i \u01b0u t\u1ed1c \u0111\u1ed9 \u0111\u1ea9y m\u00e3 ngu\u1ed3n.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; font-weight: 600; margin-top: 25px; margin-bottom: 15px;\">B\u01b0\u1edbc 1: Kh\u1edfi t\u1ea1o c\u1eb7p kh\u00f3a SSH Key chu\u1ea9n Ed25519<\/h3>\n<p style=\"text-align: justify;\">M\u1edf Terminal (tr\u00ean macOS\/Linux) ho\u1eb7c Git Bash (tr\u00ean Windows) v\u00e0 th\u1ef1c thi d\u00f2ng l\u1ec7nh sau \u0111\u1ec3 t\u1ea1o m\u1ed9t c\u1eb7p kh\u00f3a m\u1edbi:<\/p>\n<pre>ssh-keygen -t ed25519 -C \"your_email@example.com\"<\/pre>\n<p style=\"text-align: justify;\">Khi h\u1ec7 th\u1ed1ng y\u00eau c\u1ea7u ch\u1ecdn th\u01b0 m\u1ee5c l\u01b0u tr\u1eef, h\u00e3y nh\u1ea5n <strong>Enter<\/strong> \u0111\u1ec3 ch\u1ecdn \u0111\u01b0\u1eddng d\u1eabn m\u1eb7c \u0111\u1ecbnh. Ti\u1ebfp theo, b\u1ea1n c\u00f3 th\u1ec3 nh\u1eadp m\u1eadt kh\u1ea9u b\u1ea3o v\u1ec7 (passphrase) ho\u1eb7c nh\u1ea5n ti\u1ebfp <strong>Enter<\/strong> hai l\u1ea7n \u0111\u1ec3 b\u1ecf qua n\u1ebfu mu\u1ed1n \u0111\u1ea9y code t\u1ef1 \u0111\u1ed9ng kh\u00f4ng c\u1ea7n nh\u1eadp th\u00eam b\u1ea5t k\u1ef3 th\u00f4ng tin n\u00e0o.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; font-weight: 600; margin-top: 25px; margin-bottom: 15px;\">B\u01b0\u1edbc 2: \u0110\u0103ng k\u00fd kh\u00f3a c\u00f4ng khai (Public Key) v\u1edbi GitHub<\/h3>\n<p style=\"text-align: justify;\">B\u00e2y gi\u1edd, b\u1ea1n c\u1ea7n sao ch\u00e9p n\u1ed9i dung c\u1ee7a kh\u00f3a c\u00f4ng khai v\u1eeba \u0111\u01b0\u1ee3c t\u1ea1o ra b\u1eb1ng l\u1ec7nh sau:<\/p>\n<pre>cat ~\/.ssh\/id_ed25519.pub<\/pre>\n<p style=\"text-align: justify;\">H\u00e3y b\u00f4i \u0111en to\u00e0n b\u1ed9 chu\u1ed7i k\u00fd t\u1ef1 hi\u1ec3n th\u1ecb b\u1eaft \u0111\u1ea7u b\u1eb1ng <code>ssh-ed25519<\/code> cho \u0111\u1ebfn h\u1ebft \u0111\u1ecba ch\u1ec9 email c\u1ee7a b\u1ea1n r\u1ed3i sao ch\u00e9p l\u1ea1i. Ti\u1ebfp theo, truy c\u1eadp v\u00e0o t\u00e0i kho\u1ea3n GitHub c\u00e1 nh\u00e2n c\u1ee7a b\u1ea1n, \u0111i \u0111\u1ebfn m\u1ee5c <strong>Settings<\/strong> \u27f6 <strong>SSH and GPG keys<\/strong> \u27f6 Click ch\u1ecdn <strong>New SSH Key<\/strong>, d\u00e1n n\u1ed9i dung v\u1eeba copy v\u00e0o \u00f4 Key v\u00e0 \u0111\u1eb7t t\u00ean d\u1ec5 nh\u1edb t\u1ea1i \u00f4 Title r\u1ed3i nh\u1ea5n l\u01b0u l\u1ea1i.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; font-weight: 600; margin-top: 25px; margin-bottom: 15px;\">B\u01b0\u1edbc 3: Chuy\u1ec3n \u0111\u1ed5i giao th\u1ee9c d\u1ef1 \u00e1n t\u1eeb HTTPS sang SSH<\/h3>\n<p style=\"text-align: justify;\">N\u1ebfu d\u1ef1 \u00e1n hi\u1ec7n t\u1ea1i c\u1ee7a b\u1ea1n \u0111ang s\u1eed d\u1ee5ng HTTPS \u0111\u1ec3 li\u00ean k\u1ebft v\u1edbi GitHub, h\u00e3y chuy\u1ec3n n\u00f3 sang SSH b\u1eb1ng l\u1ec7nh sau \u0111\u1ec3 t\u0103ng t\u1ed1c \u0111\u1ed9 truy\u1ec1n t\u1ea3i:<\/p>\n<pre>git remote set-url origin git@github.com:USERNAME\/REPOSITORY.git<\/pre>\n<p style=\"text-align: justify;\">Thay th\u1ebf c\u1ee5m t\u1eeb <code>USERNAME\/REPOSITORY<\/code> b\u1eb1ng t\u00ean t\u00e0i kho\u1ea3n v\u00e0 t\u00ean d\u1ef1 \u00e1n th\u1ef1c t\u1ebf c\u1ee7a b\u1ea1n tr\u00ean GitHub. K\u1ec3 t\u1eeb l\u00fac n\u00e0y, m\u1ed7i l\u1ea7n ch\u1ea1y l\u1ec7nh <code>git push<\/code>, lu\u1ed3ng d\u1eef li\u1ec7u s\u1ebd \u0111\u01b0\u1ee3c \u0111\u1ea9y \u0111i t\u1ee9c th\u00ec m\u00e0 kh\u00f4ng c\u1ea7n m\u1ea5t th\u1eddi gian x\u00e1c th\u1ef1c l\u1ea1i.<\/p>\n<div style=\"display: flex; flex-wrap: wrap; background-color: #fff; border: 1.5px solid #BFDBFE; box-shadow: 0 8px 20px rgba(37,99,235,0.08); border-radius: 12px; overflow: hidden; margin: 35px 0;\">\n<div style=\"flex: 1; min-width: 250px; background: linear-gradient(135deg, #1E3A8A 0%, #2563EB 100%); display: flex; align-items: center; justify-content: center; padding: 30px; text-align: center;\">\n<div>\n<p style=\"color: white; font-size: 34px; font-family: 'Be Vietnam Pro', sans-serif; font-weight: bold; margin: 0; line-height: 1.1;\">Thu\u00ea VPS<\/p>\n<p style=\"color: #dbeafe; font-size: 15px; font-weight: 600; margin-top: 12px;\">SSD NVMe U.2 \u00b7 CPU \u0110\u1eddi M\u1edbi \u00b7 H\u1ed7 Tr\u1ee3 24\/7<\/p>\n<\/div>\n<\/div>\n<div style=\"flex: 2; padding: 25px; min-width: 300px;\">\n<h3 style=\"font-family: 'Be Vietnam Pro', sans-serif; color: #1e3a8a; margin-top: 0; font-size: 20px;\">M\u00f4i tr\u01b0\u1eddng ph\u00e1t tri\u1ec3n &amp; l\u01b0u tr\u1eef l\u00fd t\u01b0\u1edfng cho l\u1eadp tr\u00ecnh vi\u00ean<\/h3>\n<p style=\"text-align: justify; font-size: 15px; margin-bottom: 15px;\">Khi x\u00e2y d\u1ef1ng \u1ee9ng d\u1ee5ng ho\u1eb7c t\u1ef1 host c\u00e1c c\u00f4ng c\u1ee5 CI\/CD \u0111\u1ec3 \u0111\u1ea9y code t\u1ef1 \u0111\u1ed9ng l\u00ean GitHub, m\u00e1y t\u00ednh c\u00e1 nh\u00e2n \u0111\u00f4i khi kh\u00f4ng \u0111\u00e1p \u1ee9ng \u0111\u01b0\u1ee3c t\u00ednh li\u00ean t\u1ee5c c\u1ee7a c\u00f4ng vi\u1ec7c. Vi\u1ec7c v\u1eadn h\u00e0nh d\u1ef1 \u00e1n tr\u00ean m\u1ed9t h\u1ec7 th\u1ed1ng VPS t\u1ed1c \u0111\u1ed9 cao v\u1edbi to\u00e0n quy\u1ec1n c\u1ea5u h\u00ecnh root s\u1ebd gi\u00fap t\u0103ng t\u1ed1c ti\u1ebfn \u0111\u1ed9 ph\u00e1t tri\u1ec3n, gi\u1ea3i quy\u1ebft tri\u1ec7t \u0111\u1ec3 c\u00e1c r\u00e0o c\u1ea3n v\u1ec1 h\u1ea1 t\u1ea7ng m\u1ea1ng c\u1ee5c b\u1ed9 y\u1ebfu k\u00e9m.<\/p>\n<p><a style=\"background: linear-gradient(90deg, #2563EB 0%, #1E3A8A 100%); color: white; padding: 12px 25px; text-decoration: none; font-weight: 600; border-radius: 8px; font-size: 15px; display: inline-block; box-shadow: 0 5px 15px rgba(37,99,235,0.3);\" href=\"https:\/\/interdata.vn\/thue-vps\/\" target=\"_blank\" rel=\"noopener\">XEM B\u1ea2NG GI\u00c1 VPS \u27f6<\/a><\/p>\n<\/div>\n<\/div>\n<h2 id=\"section3\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin-top: 40px; margin-bottom: 20px; line-height: 1.4;\">3. C\u00e1ch 2: \u0110\u1ed3ng b\u1ed9 m\u00e3 ngu\u1ed3n tr\u1ef1c quan b\u1eb1ng GitHub Desktop<\/h2>\n<p style=\"text-align: justify;\">N\u1ebfu b\u1ea1n kh\u00f4ng quen l\u00e0m vi\u1ec7c v\u1edbi c\u00e1c d\u00f2ng l\u1ec7nh Terminal kh\u00f4 khan v\u00e0 d\u1ec5 g\u00f5 nh\u1ea7m, GitHub Desktop ch\u00ednh l\u00e0 s\u1ef1 thay th\u1ebf ho\u00e0n h\u1ea3o. Ph\u1ea7n m\u1ec1m ch\u00ednh ch\u1ee7 do GitHub ph\u00e1t tri\u1ec3n cung c\u1ea5p giao di\u1ec7n \u0111\u1ed3 h\u1ecda (GUI) tr\u1ef1c quan gi\u00fap gi\u1ea3m thi\u1ec3u r\u1ee7i ro commit sai nh\u00e1nh ho\u1eb7c push nh\u1ea7m c\u00e1c file r\u00e1c.<\/p>\n<p style=\"text-align: justify;\">Ph\u1ea7n m\u1ec1m n\u00e0y t\u00edch h\u1ee3p s\u1eb5n b\u1ed9 qu\u1ea3n l\u00fd t\u00e0i kho\u1ea3n v\u00f4 c\u00f9ng th\u00f4ng minh. Khi s\u1eed d\u1ee5ng GitHub Desktop, c\u00e1c thao t\u00e1c ph\u1ee9c t\u1ea1p nh\u01b0 gi\u1ea3i quy\u1ebft xung \u0111\u1ed9t m\u00e3 ngu\u1ed3n (merge conflict) s\u1ebd \u0111\u01b0\u1ee3c m\u00f4 ph\u1ecfng tr\u1ef1c quan theo t\u1eebng d\u00f2ng code kh\u00e1c bi\u1ec7t, gi\u00fap b\u1ea1n \u0111\u01b0a ra quy\u1ebft \u0111\u1ecbnh gi\u1eef l\u1ea1i \u0111o\u1ea1n code n\u00e0o m\u1ed9t c\u00e1ch ch\u00ednh x\u00e1c m\u00e0 kh\u00f4ng lo \u0111\u00e8 d\u1eef li\u1ec7u c\u1ee7a \u0111\u1ed3ng \u0111\u1ed9i.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; font-weight: 600; margin-top: 25px; margin-bottom: 15px;\">Quy tr\u00ecnh \u0111\u1ea9y code th\u1ea7n t\u1ed1c v\u1edbi GitHub Desktop<\/h3>\n<ol style=\"padding-left: 20px; margin-bottom: 25px; color: #1f2937;\">\n<li style=\"margin-bottom: 10px;\"><strong>T\u1ea3i v\u00e0 li\u00ean k\u1ebft t\u00e0i kho\u1ea3n:<\/strong> C\u00e0i \u0111\u1eb7t GitHub Desktop t\u1eeb trang ch\u1ee7 ch\u00ednh th\u1ee9c. M\u1edf \u1ee9ng d\u1ee5ng l\u00ean v\u00e0 ti\u1ebfn h\u00e0nh \u0111\u0103ng nh\u1eadp th\u00f4ng qua tr\u00ecnh duy\u1ec7t \u0111\u1ec3 t\u1ef1 \u0111\u1ed9ng \u0111\u1ed3ng b\u1ed9 h\u00f3a to\u00e0n b\u1ed9 danh s\u00e1ch repository c\u1ee7a b\u1ea1n.<\/li>\n<li style=\"margin-bottom: 10px;\"><strong>Th\u00eam th\u01b0 m\u1ee5c d\u1ef1 \u00e1n c\u1ee5c b\u1ed9:<\/strong> Ch\u1ecdn <strong>File<\/strong> \u27f6 <strong>Add Local Repository<\/strong> v\u00e0 tr\u1ecf \u0111\u01b0\u1eddng d\u1eabn \u0111\u1ebfn th\u01b0 m\u1ee5c ch\u1ee9a code tr\u00ean m\u00e1y t\u00ednh c\u1ee7a b\u1ea1n. N\u1ebfu ch\u01b0a kh\u1edfi t\u1ea1o Git, b\u1ea1n ch\u1ecdn <strong>Create a Repository<\/strong> \u0111\u1ec3 ph\u1ea7n m\u1ec1m t\u1ef1 \u0111\u1ed9ng thi\u1ebft l\u1eadp file <code>.gitignore<\/code> v\u00e0 c\u1ea5u h\u00ecnh ban \u0111\u1ea7u.<\/li>\n<li style=\"margin-bottom: 10px;\"><strong>T\u1ea1o commit v\u00e0 \u0111\u1ea9y code l\u00ean m\u00e2y:<\/strong> T\u1ea1i b\u1ea3ng qu\u1ea3n l\u00fd b\u00ean tr\u00e1i, t\u00edch ch\u1ecdn c\u00e1c file thay \u0111\u1ed5i m\u00e0 b\u1ea1n mu\u1ed1n \u0111\u1ea9y l\u00ean. Vi\u1ebft m\u00f4 t\u1ea3 ng\u1eafn g\u1ecdn t\u1ea1i \u00f4 <strong>Summary<\/strong> b\u00ean d\u01b0\u1edbi r\u1ed3i click n\u00fat <strong>Commit to main<\/strong> (ho\u1eb7c t\u00ean nh\u00e1nh hi\u1ec7n t\u1ea1i c\u1ee7a b\u1ea1n). Cu\u1ed1i c\u00f9ng, b\u1ea1n ch\u1ec9 c\u1ea7n nh\u1ea5n n\u00fat <strong>Push origin<\/strong> \u1edf thanh c\u00f4ng c\u1ee5 ph\u00eda tr\u00ean \u0111\u1ec3 ho\u00e0n t\u1ea5t vi\u1ec7c t\u1ea3i l\u00ean m\u00e1y ch\u1ee7.<\/li>\n<\/ol>\n<p style=\"text-align: justify;\">Nh\u01b0\u1ee3c \u0111i\u1ec3m duy nh\u1ea5t c\u1ee7a ph\u01b0\u01a1ng ph\u00e1p n\u00e0y l\u00e0 n\u00f3 ti\u00eau t\u1ed1n nhi\u1ec1u t\u00e0i nguy\u00ean RAM c\u1ee7a h\u1ec7 \u0111i\u1ec1u h\u00e0nh h\u01a1n so v\u1edbi vi\u1ec7c g\u00f5 d\u00f2ng l\u1ec7nh tr\u1ef1c ti\u1ebfp. Tuy nhi\u00ean, \u0111\u1ed1i v\u1edbi c\u00e1c l\u1eadp tr\u00ecnh vi\u00ean m\u1edbi b\u1eaft \u0111\u1ea7u, \u0111\u00e2y l\u1ea1i l\u00e0 c\u00f4ng c\u1ee5 gi\u00fap h\u1ea1n ch\u1ebf t\u1ed1i \u0111a c\u00e1c thao t\u00e1c sai l\u1ea7m c\u00f3 th\u1ec3 d\u1eabn t\u1edbi vi\u1ec7c m\u1ea5t m\u00e1t d\u1eef li\u1ec7u c\u1ee7a d\u1ef1 \u00e1n.<\/p>\n<h2 id=\"section4\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin-top: 40px; margin-bottom: 20px; line-height: 1.4;\">4. C\u00e1ch 3: \u0110\u1ea9y code si\u00eau t\u1ed1c t\u00edch h\u1ee3p ngay tr\u00ean VS Code<\/h2>\n<p style=\"text-align: justify;\">Visual Studio Code (VS Code) \u0111ang l\u00e0 tr\u00ecnh so\u1ea1n th\u1ea3o m\u00e3 ngu\u1ed3n ph\u1ed5 bi\u1ebfn nh\u1ea5t th\u1ebf gi\u1edbi hi\u1ec7n nay nh\u1edd kh\u1ea3 n\u0103ng t\u00edch h\u1ee3p s\u1eb5n b\u1ed9 c\u00f4ng c\u1ee5 qu\u1ea3n l\u00fd phi\u00ean b\u1ea3n (Source Control) c\u1ef1c k\u1ef3 m\u1ea1nh m\u1ebd. B\u1eb1ng c\u00e1ch t\u1eadn d\u1ee5ng c\u00e1c t\u00ednh n\u0103ng t\u00edch h\u1ee3p n\u00e0y, b\u1ea1n c\u00f3 th\u1ec3 th\u1ef1c hi\u1ec7n to\u00e0n b\u1ed9 quy tr\u00ecnh: vi\u1ebft code, ki\u1ec3m tra thay \u0111\u1ed5i, t\u1ea1o commit v\u00e0 \u0111\u1ea9y m\u00e3 ngu\u1ed3n l\u00ean GitHub m\u00e0 kh\u00f4ng c\u1ea7n r\u1eddi m\u1eaft kh\u1ecfi c\u1eeda s\u1ed5 l\u00e0m vi\u1ec7c c\u1ee7a IDE.<\/p>\n<p style=\"text-align: justify;\">T\u00ednh n\u0103ng n\u00e0y kh\u00f4ng ch\u1ec9 gi\u00fap b\u1ea1n t\u1eadp trung cao \u0111\u1ed9 v\u00e0o c\u00f4ng vi\u1ec7c vi\u1ebft m\u00e3 m\u00e0 c\u00f2n gi\u00fap \u0111\u1ea9y nhanh ti\u1ebfn tr\u00ecnh b\u00e0n giao s\u1ea3n ph\u1ea9m nh\u1edd v\u00e0o c\u01a1 ch\u1ebf t\u1ef1 \u0111\u1ed9ng ghi nh\u1edb th\u00f4ng tin x\u00e1c th\u1ef1c b\u1ea3o m\u1eadt v\u00e0 h\u1ed7 tr\u1ee3 ph\u00edm t\u1eaft c\u1ef1c nhanh.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; font-weight: 600; margin-top: 25px; margin-bottom: 15px;\">H\u01b0\u1edbng d\u1eabn thao t\u00e1c 1-Click Push tr\u00ean VS Code<\/h3>\n<ul style=\"list-style-type: disc; padding-left: 20px; margin-bottom: 25px; color: #1f2937;\">\n<li style=\"margin-bottom: 10px;\"><strong>Truy c\u1eadp Source Control:<\/strong> Nh\u1ea5n t\u1ed5 h\u1ee3p ph\u00edm t\u1eaft nhanh <code>Ctrl + Shift + G<\/code> (tr\u00ean Windows) ho\u1eb7c <code>Cmd + Shift + G<\/code> (tr\u00ean macOS) \u0111\u1ec3 m\u1edf nhanh b\u1ea3ng \u0111i\u1ec1u khi\u1ec3n Git \u0111\u01b0\u1ee3c t\u00edch h\u1ee3p \u1edf ph\u00eda b\u00ean tr\u00e1i m\u00e0n h\u00ecnh.<\/li>\n<li style=\"margin-bottom: 10px;\"><strong>Giai \u0111o\u1ea1n chu\u1ea9n b\u1ecb (Stage Changes):<\/strong> Nh\u1ea5n v\u00e0o bi\u1ec3u t\u01b0\u1ee3ng d\u1ea5u c\u1ed9ng <code>+<\/code> n\u1eb1m k\u1ebf b\u00ean c\u00e1c file \u0111\u00e3 \u0111\u01b0\u1ee3c thay \u0111\u1ed5i ho\u1eb7c nh\u1ea5n d\u1ea5u c\u1ed9ng l\u1edbn \u1edf m\u1ee5c <strong>Changes<\/strong> \u0111\u1ec3 \u0111\u01b0a t\u1ea5t c\u1ea3 c\u00e1c t\u1ec7p tin n\u00e0y v\u00e0o tr\u1ea1ng th\u00e1i s\u1eb5n s\u00e0ng \u0111\u00f3ng g\u00f3i (Staged).<\/li>\n<li style=\"margin-bottom: 10px;\"><strong>T\u1ea1o Commit nhanh:<\/strong> Nh\u1eadp th\u00f4ng \u0111i\u1ec7p gi\u1ea3i th\u00edch v\u1ec1 nh\u1eefng thay \u0111\u1ed5i v\u1eeba th\u1ef1c hi\u1ec7n v\u00e0o \u00f4 v\u0103n b\u1ea3n ph\u00eda tr\u00ean v\u00e0 nh\u1ea5n ph\u00edm t\u1eaft <code>Ctrl + Enter<\/code> ho\u1eb7c nh\u1ea5p n\u00fat <strong>Commit<\/strong> m\u00e0u xanh d\u01b0\u01a1ng.<\/li>\n<li style=\"margin-bottom: 10px;\"><strong>\u0110\u1ed3ng b\u1ed9 l\u00ean GitHub (Sync Changes):<\/strong> Ngay sau khi commit ho\u00e0n t\u1ea5t, n\u00fat n\u00e0y s\u1ebd chuy\u1ec3n th\u00e0nh <strong>Sync Changes<\/strong> ho\u1eb7c hi\u1ec3n th\u1ecb m\u1ed9t m\u0169i t\u00ean nh\u1ecf ch\u1ec9 l\u00ean k\u00e8m s\u1ed1 l\u01b0\u1ee3ng commit. B\u1ea1n ch\u1ec9 vi\u1ec7c nh\u1ea5n ch\u1ecdn n\u00fat n\u00e0y \u0111\u1ec3 h\u1ec7 th\u1ed1ng t\u1ef1 \u0111\u1ed9ng th\u1ef1c thi chu\u1ed7i l\u1ec7nh k\u00e9o code m\u1edbi v\u1ec1 (pull) v\u00e0 \u0111\u1ea9y code c\u1ee7a b\u1ea1n l\u00ean (push) an to\u00e0n.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">\u0110\u1ec3 \u0111\u1ea9y nhanh ti\u1ebfn \u0111\u1ed9 l\u00e0m vi\u1ec7c h\u01a1n n\u1eefa, b\u1ea1n c\u00f3 th\u1ec3 m\u1edf ph\u1ea7n c\u00e0i \u0111\u1eb7t h\u1ec7 th\u1ed1ng c\u1ee7a VS Code, t\u00ecm ki\u1ebfm t\u1eeb kh\u00f3a <code>git.autofetch<\/code> v\u00e0 chuy\u1ec3n n\u00f3 sang tr\u1ea1ng th\u00e1i <code>true<\/code>. H\u00e0nh \u0111\u1ed9ng n\u00e0y gi\u00fap VS Code t\u1ef1 \u0111\u1ed9ng c\u1eadp nh\u1eadt li\u00ean t\u1ee5c c\u00e1c thay \u0111\u1ed5i m\u1edbi nh\u1ea5t t\u1eeb kho l\u01b0u tr\u1eef GitHub t\u1eeb xa v\u1ec1 m\u00e1y t\u00ednh c\u1ee5c b\u1ed9 c\u1ee7a b\u1ea1n, gi\u1ea3m b\u1edbt t\u1ed1i \u0111a c\u00e1c t\u00ecnh hu\u1ed1ng xung \u0111\u1ed9t code kh\u00f4ng mong mu\u1ed1n tr\u01b0\u1edbc khi ti\u1ebfn h\u00e0nh \u0111\u1ea9y thay \u0111\u1ed5i m\u1edbi l\u00ean.<\/p>\n<h2 id=\"section5\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin-top: 40px; margin-bottom: 20px; line-height: 1.4;\">5. C\u00e1ch 4: T\u1ef1 \u0111\u1ed9ng h\u00f3a CI\/CD \u0111\u1ea9y code v\u00e0 deploy th\u1eb3ng l\u00ean VPS<\/h2>\n<p style=\"text-align: justify;\">Khi \u1ee9ng d\u1ee5ng c\u1ee7a b\u1ea1n \u0111\u00e3 \u0111i v\u00e0o ho\u1ea1t \u0111\u1ed9ng th\u1ef1c t\u1ebf tr\u00ean h\u1ea1 t\u1ea7ng m\u00e1y ch\u1ee7, quy tr\u00ecnh \u0111\u1ea9y code th\u1ee7 c\u00f4ng l\u00ean GitHub r\u1ed3i l\u1ea1i \u0111\u0103ng nh\u1eadp v\u00e0o VPS qua SSH \u0111\u1ec3 t\u1ea3i code m\u1edbi v\u1ec1 (git pull) l\u00e0 ph\u01b0\u01a1ng ph\u00e1p t\u1ed1n th\u1eddi gian v\u00e0 d\u1ec5 x\u1ea3y ra sai s\u00f3t k\u1ef9 thu\u1eadt. Ph\u01b0\u01a1ng ph\u00e1p th\u1ee9 t\u01b0 n\u00e0y s\u1ebd n\u00e2ng c\u1ea5p t\u01b0 duy c\u1ee7a b\u1ea1n l\u00ean m\u1ee9c DevOps chuy\u00ean nghi\u1ec7p b\u1eb1ng c\u00e1ch thi\u1ebft l\u1eadp m\u1ed9t \u0111\u01b0\u1eddng \u1ed1ng CI\/CD (Continuous Integration\/Continuous Deployment) t\u1ef1 \u0111\u1ed9ng h\u00f3a th\u00f4ng qua c\u00f4ng c\u1ee5 GitHub Actions.<\/p>\n<p style=\"text-align: justify;\">Nguy\u00ean l\u00fd ho\u1ea1t \u0111\u1ed9ng v\u00f4 c\u00f9ng \u0111\u01a1n gi\u1ea3n: M\u1ed7i khi b\u1ea1n th\u1ef1c thi l\u1ec7nh \u0111\u1ea9y code l\u00ean nh\u00e1nh ch\u00ednh c\u1ee7a GitHub, m\u1ed9t ti\u1ebfn tr\u00ecnh ch\u1ea1y ng\u1ea7m (runner) s\u1ebd l\u1eadp t\u1ee9c \u0111\u01b0\u1ee3c k\u00edch ho\u1ea1t. Ti\u1ebfn tr\u00ecnh n\u00e0y t\u1ef1 \u0111\u1ed9ng \u0111\u00f3ng g\u00f3i d\u1ef1 \u00e1n, ki\u1ec3m tra l\u1ed7i c\u00fa ph\u00e1p v\u00e0 truy\u1ec1n t\u1ea3i c\u00e1c t\u1ec7p tin thay \u0111\u1ed5i tr\u1ef1c ti\u1ebfp sang m\u00e1y ch\u1ee7 VPS c\u1ee7a b\u1ea1n qua giao th\u1ee9c m\u00e3 h\u00f3a SSH b\u1ea3o m\u1eadt cao \u0111\u1ec3 kh\u1edfi ch\u1ea1y phi\u00ean b\u1ea3n \u1ee9ng d\u1ee5ng m\u1edbi nh\u1ea5t.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; font-weight: 600; margin-top: 25px; margin-bottom: 15px;\">M\u1eabu c\u1ea5u h\u00ecnh GitHub Actions deploy l\u00ean VPS t\u1ef1 \u0111\u1ed9ng<\/h3>\n<p style=\"text-align: justify;\">Trong th\u01b0 m\u1ee5c g\u1ed1c c\u1ee7a d\u1ef1 \u00e1n ph\u1ea7n m\u1ec1m c\u1ee7a b\u1ea1n, h\u00e3y t\u1ea1o m\u1ed9t t\u1ec7p tin c\u1ea5u h\u00ecnh t\u1ef1 \u0111\u1ed9ng h\u00f3a theo \u0111\u01b0\u1eddng d\u1eabn ch\u00ednh x\u00e1c sau: <code>.github\/workflows\/deploy.yml<\/code> v\u00e0 d\u00e1n \u0111o\u1ea1n m\u00e3 c\u1ea5u h\u00ecnh ti\u00eau chu\u1ea9n d\u01b0\u1edbi \u0111\u00e2y v\u00e0o:<\/p>\n<pre>name: Deploy App to Production Server\r\n\r\non:\r\n  push:\r\n    branches:\r\n      - main\r\n\r\njobs:\r\n  deploy:\r\n    runs-on: ubuntu-latest\r\n    steps:\r\n      - name: Checkout Source Code\r\n        uses: actions\/checkout@v3\r\n\r\n      - name: Executing remote ssh commands to deploy\r\n        uses: appleboy\/ssh-action@master\r\n        with:\r\n          host: ${{ secrets.SERVER_IP }}\r\n          username: ${{ secrets.SERVER_USER }}\r\n          key: ${{ secrets.SSH_PRIVATE_KEY }}\r\n          port: 22\r\n          script: |\r\n            cd \/var\/www\/my-application\r\n            git pull origin main\r\n            npm install --production\r\n            pm2 restart all<\/pre>\n<p style=\"text-align: justify;\">\u0110\u1ec3 k\u1ecbch b\u1ea3n tr\u00ean c\u00f3 th\u1ec3 ho\u1ea1t \u0111\u1ed9ng th\u00e0nh c\u00f4ng, b\u1ea1n c\u1ea7n truy c\u1eadp v\u00e0o m\u1ee5c c\u1ea5u h\u00ecnh d\u1ef1 \u00e1n c\u1ee7a b\u1ea1n tr\u00ean GitHub, v\u00e0o ph\u1ea7n <strong>Settings<\/strong> \u27f6 <strong>Secrets and variables<\/strong> \u27f6 <strong>Actions<\/strong> v\u00e0 khai b\u00e1o ba bi\u1ebfn m\u00f4i tr\u01b0\u1eddng b\u1ea3o m\u1eadt quan tr\u1ecdng bao g\u1ed3m: <code>SERVER_IP<\/code> (\u0110\u1ecba ch\u1ec9 IP m\u00e1y ch\u1ee7 c\u1ee7a b\u1ea1n), <code>SERVER_USER<\/code> (T\u00ean \u0111\u0103ng nh\u1eadp h\u1ec7 th\u1ed1ng, th\u00f4ng th\u01b0\u1eddng l\u00e0 root) v\u00e0 <code>SSH_PRIVATE_KEY<\/code> (N\u1ed9i dung kh\u00f3a c\u00e1 nh\u00e2n t\u01b0\u01a1ng \u1ee9ng v\u1edbi kh\u00f3a c\u00f4ng khai b\u1ea1n \u0111\u00e3 c\u1ea5u h\u00ecnh trong th\u01b0 m\u1ee5c <code>~\/.ssh\/authorized_keys<\/code> c\u1ee7a m\u00e1y ch\u1ee7).<\/p>\n<h2 id=\"section6\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin-top: 40px; margin-bottom: 20px; line-height: 1.4;\">6. Kh\u1eafc ph\u1ee5c 5 l\u1ed7i &#8220;Kinh \u0111i\u1ec3n&#8221; khi push Git l\u00ean GitHub<\/h2>\n<p style=\"text-align: justify;\">Trong qu\u00e1 tr\u00ecnh t\u01b0\u01a1ng t\u00e1c v\u00e0 \u0111\u1ed3ng b\u1ed9 m\u00e3 ngu\u1ed3n v\u1edbi GitHub, vi\u1ec7c ph\u00e1t sinh c\u00e1c th\u00f4ng b\u00e1o l\u1ed7i k\u1ef9 thu\u1eadt t\u1eeb h\u1ec7 th\u1ed1ng l\u00e0 \u0111i\u1ec1u kh\u00f3 tr\u00e1nh kh\u1ecfi \u0111\u1ed1i v\u1edbi m\u1ecdi nh\u00e0 ph\u00e1t tri\u1ec3n. D\u01b0\u1edbi \u0111\u00e2y l\u00e0 b\u1ea3ng t\u1ed5ng h\u1ee3p chi ti\u1ebft nguy\u00ean nh\u00e2n c\u1ed1t l\u00f5i v\u00e0 ph\u01b0\u01a1ng \u00e1n kh\u1eafc ph\u1ee5c d\u1ee9t \u0111i\u1ec3m cho n\u0103m l\u1ed7i ph\u1ed5 bi\u1ebfn nh\u1ea5t.<\/p>\n<div style=\"overflow-x: auto; margin-bottom: 30px; box-shadow: 0 4px 15px rgba(0,0,0,0.05); border-radius: 8px;\">\n<table style=\"width: 100%; border-collapse: collapse; min-width: 600px; text-align: left;\">\n<thead>\n<tr style=\"background-color: #1e3a8a; color: white;\">\n<th style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600; font-size: 15px;\">M\u00e3\/T\u00ean L\u1ed7i \u0110\u1eb7c Tr\u01b0ng<\/th>\n<th style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600; font-size: 15px;\">Nguy\u00ean Nh\u00e2n C\u1ed1t L\u00f5i<\/th>\n<th style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600; font-size: 15px;\">C\u00e1ch X\u1eed L\u00fd Tri\u1ec7t \u0110\u1ec3<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"background-color: #ffffff;\">\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: bold; color: #ef4444; font-size: 14px;\">Support for password authentication was removed<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-size: 14px; text-align: justify;\">GitHub \u0111\u00e3 c\u1ea5m ho\u00e0n to\u00e0n vi\u1ec7c s\u1eed d\u1ee5ng m\u1eadt kh\u1ea9u t\u00e0i kho\u1ea3n c\u00e1 nh\u00e2n \u0111\u1ec3 \u0111\u1ea9y code tr\u1ef1c ti\u1ebfp qua giao th\u1ee9c HTTPS.<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-size: 14px; text-align: justify;\">T\u1ea1o Personal Access Token (PAT) trong ph\u1ea7n c\u00e0i \u0111\u1eb7t nh\u00e0 ph\u00e1t tri\u1ec3n c\u1ee7a GitHub v\u00e0 s\u1eed d\u1ee5ng token \u0111\u00f3 thay th\u1ebf cho m\u1eadt kh\u1ea9u th\u00f4ng th\u01b0\u1eddng khi \u0111\u01b0\u1ee3c h\u1ecfi, ho\u1eb7c chuy\u1ec3n sang d\u00f9ng SSH Key.<\/td>\n<\/tr>\n<tr style=\"background-color: #f9fafb;\">\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: bold; color: #ef4444; font-size: 14px;\">Updates were rejected because the remote contains work<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-size: 14px; text-align: justify;\">Nh\u00e1nh \u1edf m\u00e1y ch\u1ee7 \u0111\u00e1m m\u00e2y ch\u1ee9a c\u00e1c commit m\u1edbi h\u01a1n m\u00e0 m\u00e1y t\u00ednh c\u00e1 nh\u00e2n c\u1ee7a b\u1ea1n ch\u01b0a c\u1eadp nh\u1eadt v\u1ec1 (Conflict\/Out of sync).<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-size: 14px; text-align: justify;\">Th\u1ef1c hi\u1ec7n k\u00e9o c\u00e1c thay \u0111\u1ed5i m\u1edbi v\u1ec1 v\u00e0 g\u1ed9p nh\u00e1nh an to\u00e0n b\u1eb1ng d\u00f2ng l\u1ec7nh: <code>git pull origin [branch-name] --rebase<\/code> tr\u01b0\u1edbc khi th\u1eed \u0111\u1ea9y l\u1ea1i.<\/td>\n<\/tr>\n<tr style=\"background-color: #ffffff;\">\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: bold; color: #ef4444; font-size: 14px;\">Permission denied (publickey)<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-size: 14px; text-align: justify;\">H\u1ec7 th\u1ed1ng b\u1ea3o m\u1eadt c\u1ee7a GitHub kh\u00f4ng th\u1ec3 x\u00e1c th\u1ef1c danh t\u00ednh t\u1eeb c\u00e1c t\u1ec7p kh\u00f3a SSH l\u01b0u tr\u1eef tr\u00ean m\u00e1y t\u00ednh c\u1ee7a b\u1ea1n.<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-size: 14px; text-align: justify;\">Ki\u1ec3m tra xem SSH Agent \u0111\u00e3 ch\u1ea1y ch\u01b0a b\u1eb1ng l\u1ec7nh: <code>ssh-add -l<\/code>, v\u00e0 \u0111\u1ea3m b\u1ea3o kh\u00f3a c\u00f4ng khai \u0111\u00e3 \u0111\u01b0\u1ee3c th\u00eam ch\u00ednh x\u00e1c v\u00e0o t\u00e0i kho\u1ea3n GitHub c\u1ee7a b\u1ea1n.<\/td>\n<\/tr>\n<tr style=\"background-color: #f9fafb;\">\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: bold; color: #ef4444; font-size: 14px;\">File exceeds GitHub&#8217;s file size limit of 100.00 MB<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-size: 14px; text-align: justify;\">D\u1ef1 \u00e1n c\u1ee7a b\u1ea1n ch\u1ee9a m\u1ed9t ho\u1eb7c nhi\u1ec1u t\u1ec7p tin c\u00f3 dung l\u01b0\u1ee3ng v\u01b0\u1ee3t qu\u00e1 gi\u1edbi h\u1ea1n t\u1ea3i l\u00ean t\u1ed1i \u0111a cho m\u1ed9t file c\u1ee7a GitHub.<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-size: 14px; text-align: justify;\">C\u00e0i \u0111\u1eb7t v\u00e0 c\u1ea5u h\u00ecnh th\u01b0 vi\u1ec7n ti\u1ec7n \u00edch Git LFS (Large File Storage) \u0111\u1ec3 theo d\u00f5i v\u00e0 n\u00e9n ri\u00eang c\u00e1c file n\u1eb7ng n\u00e0y tr\u01b0\u1edbc khi truy\u1ec1n t\u1ea3i.<\/td>\n<\/tr>\n<tr style=\"background-color: #ffffff;\">\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: bold; color: #ef4444; font-size: 14px;\">Fatal: remote origin already exists<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-size: 14px; text-align: justify;\">Th\u01b0 m\u1ee5c d\u1ef1 \u00e1n c\u1ee5c b\u1ed9 hi\u1ec7n t\u1ea1i \u0111\u00e3 \u0111\u01b0\u1ee3c li\u00ean k\u1ebft v\u1edbi m\u1ed9t \u0111\u1ecba ch\u1ec9 kho l\u01b0u tr\u1eef t\u1eeb xa kh\u00e1c t\u1eeb tr\u01b0\u1edbc \u0111\u00f3.<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-size: 14px; text-align: justify;\">G\u1ee1 b\u1ecf li\u00ean k\u1ebft c\u0169 b\u1eb1ng c\u00e1ch th\u1ef1c thi l\u1ec7nh: <code>git remote remove origin<\/code>, sau \u0111\u00f3 th\u1ef1c hi\u1ec7n g\u00e1n l\u1ea1i \u0111\u1ecba ch\u1ec9 kho l\u01b0u tr\u1eef m\u1edbi b\u00ecnh th\u01b0\u1eddng.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h2 id=\"section7\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin-top: 40px; margin-bottom: 20px; line-height: 1.4;\">7. B\u1ea3ng so s\u00e1nh 4 ph\u01b0\u01a1ng ph\u00e1p \u0111\u1ea9y code l\u00ean GitHub<\/h2>\n<p style=\"text-align: justify;\">M\u1ed7i k\u1ef9 thu\u1eadt \u0111\u1ea9y m\u00e3 ngu\u1ed3n l\u00ean n\u1ec1n t\u1ea3ng \u0111\u00e1m m\u00e2y \u0111\u1ec1u mang l\u1ea1i nh\u1eefng gi\u00e1 tr\u1ecb s\u1eed d\u1ee5ng ri\u00eang bi\u1ec7t cho t\u1eebng nh\u00f3m \u0111\u1ed1i t\u01b0\u1ee3ng c\u1ee5 th\u1ec3. H\u00e3y c\u00f9ng \u0111\u00e1nh gi\u00e1 c\u00e1c ti\u00eau ch\u00ed c\u1ed1t l\u00f5i d\u01b0\u1edbi \u0111\u00e2y \u0111\u1ec3 l\u1ef1a ch\u1ecdn ra ph\u01b0\u01a1ng ph\u00e1p ph\u00f9 h\u1ee3p nh\u1ea5t v\u1edbi c\u1ea5u h\u00ecnh m\u00e1y m\u00f3c v\u00e0 quy m\u00f4 d\u1ef1 \u00e1n c\u1ee7a b\u1ea1n.<\/p>\n<div style=\"overflow-x: auto; margin-bottom: 30px; box-shadow: 0 4px 15px rgba(0,0,0,0.05); border-radius: 8px;\">\n<table style=\"width: 100%; border-collapse: collapse; min-width: 600px; text-align: left;\">\n<thead>\n<tr style=\"background-color: #1e3a8a; color: white;\">\n<th style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600; font-size: 15px;\">Ti\u00eau ch\u00ed \u0110\u00e1nh gi\u00e1<\/th>\n<th style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600; font-size: 15px;\">Git CLI (SSH Key)<\/th>\n<th style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600; font-size: 15px;\">GitHub Desktop<\/th>\n<th style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600; font-size: 15px;\">T\u00edch h\u1ee3p VS Code<\/th>\n<th style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600; font-size: 15px;\">CI\/CD (GitHub Actions)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"background-color: #ffffff;\">\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: bold; font-size: 14px;\">T\u1ed1c \u0111\u1ed9 th\u1ef1c hi\u1ec7n<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-size: 14px; color: #10b981; font-weight: 600;\">C\u1ef1c k\u1ef3 nhanh<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-size: 14px;\">Trung b\u00ecnh<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-size: 14px; color: #10b981; font-weight: 600;\">Nhanh<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-size: 14px; color: #10b981; font-weight: 600;\">T\u1ef1 \u0111\u1ed9ng ho\u00e0n to\u00e0n<\/td>\n<\/tr>\n<tr style=\"background-color: #f9fafb;\">\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: bold; font-size: 14px;\">Y\u00eau c\u1ea7u ki\u1ebfn th\u1ee9c<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-size: 14px;\">Kh\u00e1 tr\u1edf l\u00ean (Bi\u1ebft d\u00f9ng l\u1ec7nh)<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-size: 14px; color: #10b981; font-weight: 600;\">Kh\u00f4ng c\u1ea7n kinh nghi\u1ec7m<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-size: 14px; color: #10b981; font-weight: 600;\">D\u1ec5 ti\u1ebfp c\u1eadn<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-size: 14px;\">Chuy\u00ean gia (DevOps)<\/td>\n<\/tr>\n<tr style=\"background-color: #ffffff;\">\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: bold; font-size: 14px;\">\u0110\u1ed9 an to\u00e0n b\u1ea3o m\u1eadt<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-size: 14px; color: #10b981; font-weight: 600;\">T\u1ed1i \u0111a (M\u00e3 h\u00f3a SSH)<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-size: 14px;\">Cao (OAuth)<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-size: 14px;\">Cao (OAuth)<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-size: 14px; color: #10b981; font-weight: 600;\">T\u1ed1i \u0111a (Secrets m\u00e3 h\u00f3a)<\/td>\n<\/tr>\n<tr style=\"background-color: #f9fafb;\">\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: bold; font-size: 14px;\">T\u00ednh linh ho\u1ea1t<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-size: 14px; color: #10b981; font-weight: 600;\">R\u1ea5t cao<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-size: 14px;\">Th\u1ea5p (Ph\u1ee5 thu\u1ed9c GUI)<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-size: 14px;\">Trung b\u00ecnh<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-size: 14px; color: #10b981; font-weight: 600;\">C\u1ef1c k\u1ef3 cao<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div style=\"display: flex; flex-wrap: wrap; background-color: #fff; border: 1.5px solid #BFDBFE; box-shadow: 0 8px 20px rgba(37,99,235,0.08); border-radius: 12px; overflow: hidden; margin: 35px 0;\">\n<div style=\"flex: 1; min-width: 250px; background: linear-gradient(135deg, #1E3A8A 0%, #2563EB 100%); display: flex; align-items: center; justify-content: center; padding: 30px; text-align: center;\">\n<div>\n<p style=\"color: white; font-size: 34px; font-family: 'Be Vietnam Pro', sans-serif; font-weight: bold; margin: 0; line-height: 1.1;\">Cloud Server<\/p>\n<p style=\"color: #dbeafe; font-size: 15px; font-weight: 600; margin-top: 12px;\">Scale Linh Ho\u1ea1t \u00b7 Kh\u1edfi T\u1ea1o Nhanh \u00b7 B\u1ea3o M\u1eadt S\u00e2u<\/p>\n<\/div>\n<\/div>\n<div style=\"flex: 2; padding: 25px; min-width: 300px;\">\n<h3 style=\"font-family: 'Be Vietnam Pro', sans-serif; color: #1e3a8a; margin-top: 0; font-size: 20px;\">H\u1ea1 t\u1ea7ng \u1ea3o h\u00f3a m\u1ea1nh m\u1ebd cho c\u00e1c \u0111\u01b0\u1eddng \u1ed1ng CI\/CD ph\u1ee9c t\u1ea1p<\/h3>\n<p style=\"text-align: justify; font-size: 15px; margin-bottom: 15px;\">Khi c\u00e1c k\u1ecbch b\u1ea3n ch\u1ea1y th\u1eed nghi\u1ec7m m\u00e3 ngu\u1ed3n t\u1ef1 \u0111\u1ed9ng c\u1ee7a b\u1ea1n \u0111\u00f2i h\u1ecfi l\u01b0\u1ee3ng t\u00e0i nguy\u00ean CPU v\u00e0 RAM l\u1edbn \u0111\u1ec3 bi\u00ean d\u1ecbch \u1ee9ng d\u1ee5ng li\u00ean t\u1ee5c t\u1eeb GitHub, vi\u1ec7c s\u1eed d\u1ee5ng c\u00e1c d\u00f2ng m\u00e1y ch\u1ee7 Cloud Server c\u00f3 kh\u1ea3 n\u0103ng thay \u0111\u1ed5i quy m\u00f4 t\u1ee9c th\u00ec l\u00e0 gi\u1ea3i ph\u00e1p c\u1ef1c k\u1ef3 hi\u1ec7u qu\u1ea3 \u0111\u1ec3 gi\u1eef v\u1eefng s\u1ef1 \u1ed5n \u0111\u1ecbnh c\u1ee7a d\u1ef1 \u00e1n.<\/p>\n<p><a style=\"background: linear-gradient(90deg, #2563EB 0%, #1E3A8A 100%); color: white; padding: 12px 25px; text-decoration: none; font-weight: 600; border-radius: 8px; font-size: 15px; display: inline-block; box-shadow: 0 5px 15px rgba(37,99,235,0.3);\" href=\"https:\/\/interdata.vn\/cloud-server\/\" target=\"_blank\" rel=\"noopener\">THU\u00ca CLOUD SERVER \u27f6<\/a><\/p>\n<\/div>\n<\/div>\n<h2 id=\"section8\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin-top: 40px; margin-bottom: 20px; line-height: 1.4;\">8. C\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p khi \u0111\u1ed3ng b\u1ed9 m\u00e3 ngu\u1ed3n GitHub<\/h2>\n<p style=\"text-align: justify;\">Gi\u1ea3i \u0111\u00e1p m\u1ed9t s\u1ed1 th\u1eafc m\u1eafc th\u1ef1c ti\u1ec5n ph\u00e1t sinh t\u1eeb qu\u00e1 tr\u00ecnh c\u1ea5u h\u00ecnh v\u00e0 \u0111\u1ea9y t\u1ec7p tin d\u1eef li\u1ec7u c\u1ee7a c\u1ed9ng \u0111\u1ed3ng l\u1eadp tr\u00ecnh vi\u00ean Vi\u1ec7t Nam.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; font-weight: 600; margin-top: 20px; margin-bottom: 10px;\">T\u00f4i n\u00ean l\u00e0m g\u00ec \u0111\u1ec3 \u0111\u1ea9y m\u1ed9t d\u1ef1 \u00e1n c\u00f3 s\u1eb5n t\u1eeb m\u00e1y t\u00ednh l\u00ean kho l\u01b0u tr\u1eef m\u1edbi t\u1ea1o tr\u00ean GitHub?<\/h3>\n<p style=\"text-align: justify;\">\u0110\u1ea7u ti\u00ean, b\u1ea1n c\u1ea7n m\u1edf terminal t\u1ea1i th\u01b0 m\u1ee5c d\u1ef1 \u00e1n \u0111\u00f3 v\u00e0 ch\u1ea1y tu\u1ea7n t\u1ef1 c\u00e1c l\u1ec7nh sau: <code>git init<\/code> \u0111\u1ec3 kh\u1edfi t\u1ea1o Git, <code>git add .<\/code> \u0111\u1ec3 th\u00eam to\u00e0n b\u1ed9 m\u00e3 ngu\u1ed3n, <code>git commit -m \"initial commit\"<\/code> \u0111\u1ec3 ghi nh\u1eadn phi\u00ean b\u1ea3n \u0111\u1ea7u ti\u00ean, sau \u0111\u00f3 g\u00e1n remote b\u1eb1ng l\u1ec7nh <code>git remote add origin [\u0111\u1ecba-ch\u1ec9-repo]<\/code> v\u00e0 cu\u1ed1i c\u00f9ng l\u00e0 \u0111\u1ea9y code l\u00ean b\u1eb1ng <code>git push -u origin main<\/code>.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; font-weight: 600; margin-top: 20px; margin-bottom: 10px;\">T\u1ea1i sao t\u00f4i kh\u00f4ng th\u1ec3 s\u1eed d\u1ee5ng m\u1eadt kh\u1ea9u \u0111\u0103ng nh\u1eadp th\u00f4ng th\u01b0\u1eddng c\u1ee7a t\u00e0i kho\u1ea3n \u0111\u1ec3 push code qua HTTPS n\u1eefa?<\/h3>\n<p style=\"text-align: justify;\">GitHub \u0111\u00e3 ch\u00ednh th\u1ee9c ng\u1eebng h\u1ed7 tr\u1ee3 x\u00e1c th\u1ef1c b\u1eb1ng m\u1eadt kh\u1ea9u thu\u1ea7n t\u00fay cho t\u1ea5t c\u1ea3 c\u00e1c thao t\u00e1c \u0111\u1ea9y v\u00e0 k\u00e9o d\u1eef li\u1ec7u b\u1eb1ng Git k\u1ec3 t\u1eeb th\u00e1ng 8 n\u0103m 2021 nh\u1eb1m gi\u1ea3m thi\u1ec3u t\u1ed1i \u0111a nguy c\u01a1 b\u1ecb \u0111\u00e1nh c\u1eafp t\u00e0i kho\u1ea3n th\u00f4ng qua c\u00e1c cu\u1ed9c t\u1ea5n c\u00f4ng Brute Force hay Phishing. M\u1ecdi ng\u01b0\u1eddi d\u00f9ng \u0111\u1ec1u b\u1eaft bu\u1ed9c ph\u1ea3i chuy\u1ec3n sang s\u1eed d\u1ee5ng SSH Key ho\u1eb7c t\u1ea1o Personal Access Token \u0111\u1ec3 \u0111\u1ea1i di\u1ec7n cho quy\u1ec1n truy c\u1eadp c\u1ee5c b\u1ed9.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; font-weight: 600; margin-top: 20px; margin-bottom: 10px;\">T\u00f4i mu\u1ed1n h\u1ee7y l\u1ec7nh git push v\u1eeba th\u1ef1c hi\u1ec7n th\u00ec ph\u1ea3i l\u00e0m th\u1ebf n\u00e0o?<\/h3>\n<p style=\"text-align: justify;\">N\u1ebfu b\u1ea1n ph\u00e1t hi\u1ec7n ra l\u1ed7i nghi\u00eam tr\u1ecdng ngay sau khi v\u1eeba g\u1eedi code l\u00ean m\u00e1y ch\u1ee7, b\u1ea1n c\u00f3 th\u1ec3 th\u1ef1c hi\u1ec7n quay ng\u01b0\u1ee3c l\u1ecbch s\u1eed c\u1ee7a kho ch\u1ee9a v\u1ec1 v\u1ecb tr\u00ed an to\u00e0n tr\u01b0\u1edbc \u0111\u00f3 b\u1eb1ng d\u00f2ng l\u1ec7nh: <code>git reset --hard HEAD~1<\/code> (h\u00e0nh \u0111\u1ed9ng n\u00e0y s\u1ebd x\u00f3a b\u1ecf ho\u00e0n to\u00e0n commit g\u1ea7n nh\u1ea5t \u1edf m\u00e1y c\u1ee5c b\u1ed9), sau \u0111\u00f3 th\u1ef1c hi\u1ec7n ghi \u0111\u00e8 d\u1eef li\u1ec7u l\u00ean GitHub b\u1eb1ng l\u1ec7nh \u00e9p bu\u1ed9c: <code>git push origin [branch-name] --force<\/code>.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; font-weight: 600; margin-top: 20px; margin-bottom: 10px;\">L\u00e0m th\u1ebf n\u00e0o \u0111\u1ec3 tr\u00e1nh \u0111\u1ea9y c\u00e1c file c\u1ea5u h\u00ecnh b\u00ed m\u1eadt ho\u1eb7c th\u01b0 m\u1ee5c th\u01b0 vi\u1ec7n c\u1ed3ng k\u1ec1nh l\u00ean GitHub?<\/h3>\n<p style=\"text-align: justify;\">B\u1ea1n c\u1ea7n t\u1ea1o m\u1ed9t t\u1ec7p tin c\u00f3 t\u00ean ch\u00ednh x\u00e1c l\u00e0 <code>.gitignore<\/code> t\u1ea1i th\u01b0 m\u1ee5c g\u1ed1c c\u1ee7a d\u1ef1 \u00e1n. Ghi c\u1ee5 th\u1ec3 t\u00ean c\u00e1c file b\u00ed m\u1eadt (v\u00ed d\u1ee5 nh\u01b0 <code>.env<\/code>, <code>config.json<\/code>) ho\u1eb7c c\u00e1c th\u01b0 m\u1ee5c th\u01b0 vi\u1ec7n kh\u00f4ng c\u1ea7n thi\u1ebft (nh\u01b0 <code>node_modules\/<\/code>, <code>vendor\/<\/code>) v\u00e0o t\u1ec7p tin n\u00e0y tr\u01b0\u1edbc khi th\u1ef1c hi\u1ec7n commit m\u00e3 ngu\u1ed3n \u0111\u1ec3 Git t\u1ef1 \u0111\u1ed9ng b\u1ecf qua ch\u00fang khi \u0111\u00f3ng g\u00f3i.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; font-weight: 600; margin-top: 20px; margin-bottom: 10px;\">T\u00f4i c\u00f3 th\u1ec3 thay \u0111\u1ed5i c\u1ed5ng k\u1ebft n\u1ed1i SSH m\u1eb7c \u0111\u1ecbnh khi \u0111\u1ea9y code l\u00ean GitHub t\u1eeb m\u00f4i tr\u01b0\u1eddng m\u1ea1ng c\u00f4ng ty kh\u00f4ng?<\/h3>\n<p style=\"text-align: justify;\">N\u1ebfu t\u01b0\u1eddng l\u1eeda c\u1ee7a c\u00f4ng ty ho\u1eb7c m\u00e1y ch\u1ee7 n\u1ed9i b\u1ed9 ch\u1eb7n c\u1ed5ng 22 (c\u1ed5ng SSH m\u1eb7c \u0111\u1ecbnh), b\u1ea1n c\u00f3 th\u1ec3 c\u1ea5u h\u00ecnh \u0111\u1ec3 truy\u1ec1n d\u1eef li\u1ec7u SSH qua c\u1ed5ng HTTPS (c\u1ed5ng 443) b\u1eb1ng c\u00e1ch t\u1ea1o ho\u1eb7c ch\u1ec9nh s\u1eeda t\u1ec7p tin <code>~\/.ssh\/config<\/code> v\u00e0 th\u00eam v\u00e0o n\u1ed9i dung c\u1ea5u h\u00ecnh sau:<\/p>\n<pre>Host github.com\r\n  Hostname ssh.github.com\r\n  Port 443\r\n  User git<\/pre>\n<div style=\"border-top: 2px dashed #BFDBFE; margin-top: 50px; padding-top: 30px;\">\n<p style=\"text-align: justify;\">L\u1ef1a ch\u1ecdn \u0111\u00fang \u0111\u1eafn ph\u01b0\u01a1ng ph\u00e1p \u0111\u1ea9y code l\u00ean GitHub kh\u00f4ng ch\u1ec9 gi\u00fap ti\u1ebft ki\u1ec7m th\u1eddi gian l\u00e0m vi\u1ec7c h\u00e0ng ng\u00e0y c\u1ee7a b\u1ea1n m\u00e0 c\u00f2n gi\u00fap chu k\u1ef3 b\u00e0n giao s\u1ea3n ph\u1ea9m ph\u1ea7n m\u1ec1m tr\u1edf n\u00ean tr\u01a1n tru v\u00e0 an to\u00e0n h\u01a1n bao gi\u1edd h\u1ebft. Cho d\u00f9 b\u1ea1n ch\u1ecdn d\u00f9ng CLI, GUI, IDE hay ti\u1ebfn h\u00e0nh thi\u1ebft l\u1eadp h\u1ec7 th\u1ed1ng t\u1ef1 \u0111\u1ed9ng h\u00f3a CI\/CD, h\u00e3y lu\u00f4n \u0111\u1ea3m b\u1ea3o t\u00ednh an to\u00e0n c\u1ee7a c\u00e1c t\u1ec7p kh\u00f3a b\u1ea3o m\u1eadt \u0111\u1ec3 tr\u00e1nh l\u1ed9 l\u1ecdt th\u00f4ng tin m\u00e3 ngu\u1ed3n qu\u00fd gi\u00e1 c\u1ee7a d\u1ef1 \u00e1n.<\/p>\n<div style=\"background: #EFF6FF; border: 1px solid #2563EB; padding: 30px; margin-top: 25px; border-radius: 12px; text-align: center;\">\n<p style=\"font-family: 'Be Vietnam Pro', sans-serif; font-size: 20px; font-weight: bold; color: #1e3a8a; margin-top: 0;\">S\u1eb5n s\u00e0ng t\u1ed1i \u01b0u h\u00f3a h\u1ea1 t\u1ea7ng DevOps c\u1ee7a b\u1ea1n?<\/p>\n<p style=\"font-size: 15px; margin-bottom: 20px; color: #4b5563;\">\u0110\u1ec3 t\u0103ng t\u1ed1c ti\u1ebfn tr\u00ecnh x\u00e2y d\u1ef1ng v\u00e0 v\u1eadn h\u00e0nh d\u1ef1 \u00e1n, h\u00e3y ch\u1ecdn gi\u1ea3i ph\u00e1p h\u1ea1 t\u1ea7ng m\u00e1y ch\u1ee7 ch\u1ea5t l\u01b0\u1ee3ng cao ngay h\u00f4m nay.<\/p>\n<p><a style=\"background: #2563EB; color: #ffffff; padding: 12px 30px; text-decoration: none; font-weight: 600; border-radius: 6px; display: inline-block;\" href=\"https:\/\/interdata.vn\/thue-vps\/\" target=\"_blank\" rel=\"noopener\">\u0110\u0102NG K\u00dd THU\u00ca VPS CH\u1ea4T L\u01af\u1ee2NG CAO \u27f6<\/a><\/p>\n<\/div>\n<\/div>\n<p style=\"text-align: justify; font-size: 13px; font-style: italic; color: #6b7280; margin-top: 30px; border-top: 1px solid #E5E7EB; padding-top: 15px;\"><span style=\"font-size: 100%;\"><em>L\u01b0u \u00fd: C\u00e1c th\u00f4ng tin k\u1ef9 thu\u1eadt, c\u00e2u l\u1ec7nh v\u00e0 c\u1ea5u h\u00ecnh h\u1ec7 th\u1ed1ng \u0111\u01b0\u1ee3c cung c\u1ea5p trong b\u00e0i vi\u1ebft n\u00e0y mang t\u00ednh ch\u1ea5t tham kh\u1ea3o chung. C\u00e1c phi\u00ean b\u1ea3n ph\u1ea7n m\u1ec1m, h\u1ec7 \u0111i\u1ec1u h\u00e0nh hay c\u00e1c thi\u1ebft l\u1eadp t\u01b0\u1eddng l\u1eeda c\u1ee5 th\u1ec3 tr\u00ean h\u1ec7 th\u1ed1ng c\u1ee7a b\u1ea1n c\u00f3 th\u1ec3 d\u1eabn \u0111\u1ebfn s\u1ef1 kh\u00e1c bi\u1ec7t v\u1ec1 k\u1ebft qu\u1ea3 thao t\u00e1c th\u1ef1c t\u1ebf. Kh\u00e1ch h\u00e0ng n\u00ean ti\u1ebfn h\u00e0nh ki\u1ec3m th\u1eed c\u1ea9n th\u1eadn trong m\u00f4i tr\u01b0\u1eddng th\u1eed nghi\u1ec7m v\u00e0 th\u1ef1c hi\u1ec7n sao l\u01b0u to\u00e0n b\u1ed9 d\u1eef li\u1ec7u quan tr\u1ecdng tr\u01b0\u1edbc khi \u00e1p d\u1ee5ng c\u1ea5u h\u00ecnh t\u1ef1 \u0111\u1ed9ng h\u00f3a tr\u1ef1c ti\u1ebfp l\u00ean c\u00e1c h\u1ec7 th\u1ed1ng m\u00e1y ch\u1ee7 v\u1eadn h\u00e0nh s\u1ea3n xu\u1ea5t th\u1ef1c t\u1ebf.<\/em><\/span><\/p>\n\n\n<style>\n.interdata-plan-carousel{--blue:#005bea;--blue-dark:#004dcc;--text:#071832;--border:#d8e6fb;--bg:#f3f8ff;container-type:inline-size;background:var(--bg);padding:14px 12px;overflow:hidden}\n.interdata-carousel-heading{color:#003fbd;font-size:18px;line-height:1.35;font-weight:800;text-align:center;margin:0 0 14px}\n.interdata-plan-track{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;padding:0 0 8px;-webkit-overflow-scrolling:touch;scrollbar-width:none}\n.interdata-plan-track::-webkit-scrollbar{display:none}\n.interdata-plan-card,.interdata-plan-card *{box-sizing:border-box}\n.interdata-plan-card{flex:0 0 calc(25% - 9px);min-width:205px;background:#fff;border:1px solid var(--border);border-radius:8px;padding:18px 14px 14px;min-height:382px;display:flex;flex-direction:column;scroll-snap-align:start;box-shadow:0 5px 14px rgba(0,62,145,.08)}\n.interdata-plan-title{color:var(--blue-dark);font-size:17px;line-height:1.25;font-weight:800;text-align:center;margin:0 0 8px}\n.interdata-plan-price{color:var(--blue-dark);font-size:32px;line-height:1;font-weight:900;text-align:center;margin-bottom:14px;white-space:nowrap;letter-spacing:0}\n.interdata-plan-price span{font-size:12px;font-weight:800;margin-left:2px}\n.interdata-plan-badge{align-self:center;display:inline-flex;align-items:center;justify-content:center;background:#ff3934;color:#fff;border-radius:5px;padding:8px 10px;font-size:10px;line-height:1;font-weight:800;margin-bottom:18px;white-space:nowrap}\n.interdata-plan-features{list-style:none!important;padding:0!important;margin:0!important}\n.interdata-plan-features li{display:flex;gap:8px;align-items:flex-start;color:var(--text);font-size:13px;line-height:1.35;font-weight:700;text-align:left;margin:0 0 11px!important;padding:0!important}\n.interdata-plan-icon{width:15px;min-width:15px;height:15px;color:#0069ff;margin-top:2px}\n.interdata-plan-icon svg{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}\n.interdata-plan-spacer{flex:1}\n.interdata-plan-button{display:flex;align-items:center;justify-content:center;min-height:44px;width:100%;background:var(--blue);color:#fff!important;border-radius:5px;font-size:14px;font-weight:800;text-decoration:none!important;box-shadow:0 7px 14px rgba(0,91,234,.24);transition:transform .2s ease,background .2s ease}\n.interdata-plan-button:hover{background:var(--blue-dark);color:#fff!important;transform:translateY(-1px)}\n@container (max-width:860px){.interdata-plan-card{flex-basis:calc(33.333% - 8px);min-width:205px}}\n@container (max-width:640px){.interdata-plan-card{flex-basis:calc(50% - 7px);min-width:215px}}\n@container (max-width:480px){.interdata-plan-carousel{padding:12px 10px}.interdata-carousel-heading{font-size:16px}.interdata-plan-card{flex-basis:86%;min-width:235px}.interdata-plan-price{font-size:31px}}\n@media (max-width:360px){.interdata-plan-card{flex-basis:90%;min-width:220px}.interdata-plan-price{font-size:29px}.interdata-plan-badge{font-size:9px}}\n<\/style>\n\n<div class=\"interdata-plan-carousel\">\n  <div class=\"interdata-carousel-heading\"><span style=\"font-family: Roboto, sans-serif; color: red;\">Si\u00eau \u01afu \u0110\u00e3i VPS \/ CLOUD SERVER - Ti\u1ebft Ki\u1ec7m \u0110\u1ebfn 70%<\/span><\/div>\n\n  <svg width=\"0\" height=\"0\" style=\"position:absolute;visibility:hidden\" aria-hidden=\"true\">\n    <symbol id=\"id-icon-cpu\" viewBox=\"0 0 24 24\"><rect x=\"7\" y=\"7\" width=\"10\" height=\"10\" rx=\"2\"><\/rect><path d=\"M4 9h3M4 15h3M17 9h3M17 15h3M9 4v3M15 4v3M9 17v3M15 17v3\"><\/path><path d=\"M10 10h4v4h-4z\"><\/path><\/symbol>\n    <symbol id=\"id-icon-ram\" viewBox=\"0 0 24 24\"><rect x=\"4\" y=\"8\" width=\"16\" height=\"8\" rx=\"2\"><\/rect><path d=\"M7 16v2M11 16v2M15 16v2M19 16v2M7 11h1M11 11h1M15 11h1\"><\/path><\/symbol>\n    <symbol id=\"id-icon-storage\" viewBox=\"0 0 24 24\"><rect x=\"6\" y=\"3\" width=\"12\" height=\"18\" rx=\"2\"><\/rect><path d=\"M9 7h6\"><\/path><circle cx=\"12\" cy=\"16\" r=\"1.5\"><\/circle><\/symbol>\n    <symbol id=\"id-icon-network\" viewBox=\"0 0 24 24\"><path d=\"M5 12.5a10 10 0 0 1 14 0\"><\/path><path d=\"M8.5 16a5 5 0 0 1 7 0\"><\/path><path d=\"M12 19h.01\"><\/path><\/symbol>\n    <symbol id=\"id-icon-gift\" viewBox=\"0 0 24 24\"><rect x=\"3\" y=\"8\" width=\"18\" height=\"13\" rx=\"2\"><\/rect><path d=\"M12 8v13M3 12h18\"><\/path><path d=\"M7.5 8C6.1 8 5 6.9 5 5.5S6.1 3 7.5 3C10 3 12 8 12 8\"><\/path><path d=\"M16.5 8C17.9 8 19 6.9 19 5.5S17.9 3 16.5 3C14 3 12 8 12 8\"><\/path><\/symbol>\n  <\/svg>\n\n  <div class=\"interdata-plan-track\">\n    <article class=\"interdata-plan-card\">\n      <h3 class=\"interdata-plan-title\">Premium Base<\/h3>\n      <div class=\"interdata-plan-price\">299K<span>\/3 Th\u00e1ng<\/span><\/div>\n      <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n      <ul class=\"interdata-plan-features\">\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>2 vCore Intel Xeon Scalable<\/li>\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>2 GB RAM<\/li>\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>30 GB NVMe U.2<\/li>\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Network: 300 Mbps<\/li>\n      <\/ul>\n      <div class=\"interdata-plan-spacer\"><\/div>\n      <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/best-value-plans-2026\/best-value-plans-premium-base\" target=\"_blank\" rel=\"nofollow sponsored noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n    <\/article>\n\n    <article class=\"interdata-plan-card\">\n      <h3 class=\"interdata-plan-title\">Premium Base<\/h3>\n      <div class=\"interdata-plan-price\">999K<span>\/n\u0103m<\/span><\/div>\n      <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n      <ul class=\"interdata-plan-features\">\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>3 vCore Intel Xeon<\/li>\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>3 GB RAM<\/li>\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>30 GB SSD NVMe U.2<\/li>\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Network: 300 Mbps<\/li>\n      <\/ul>\n      <div class=\"interdata-plan-spacer\"><\/div>\n      <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/cyber-week-2026\/premium-base\" target=\"_blank\" rel=\"nofollow sponsored noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n    <\/article>\n\n    <article class=\"interdata-plan-card\">\n      <h3 class=\"interdata-plan-title\">Premium Pro<\/h3>\n      <div class=\"interdata-plan-price\">2.599K<span>\/n\u0103m<\/span><\/div>\n      <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n      <ul class=\"interdata-plan-features\">\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>6 vCore Intel Xeon Scalable<\/li>\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>8 GB RAM<\/li>\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>80 GB SSD NVMe U.2<\/li>\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Network: 350 Mbps<\/li>\n      <\/ul>\n      <div class=\"interdata-plan-spacer\"><\/div>\n      <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/cyber-week-2026\/premium-pro\" target=\"_blank\" rel=\"nofollow sponsored noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n    <\/article>\n\n    <article class=\"interdata-plan-card\">\n      <h3 class=\"interdata-plan-title\">Cloud-Day - Base<\/h3>\n      <div class=\"interdata-plan-price\">2.666K<span>\/n\u0103m<\/span><\/div>\n      <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n      <ul class=\"interdata-plan-features\">\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-gift\"><\/use><\/svg><\/span>T\u1eb7ng 80 GB S3 v\u00e0 1 N\u0102M S\u1eec D\u1ee4NG khi mua 2 n\u0103m tr\u1edf l\u00ean<\/li>\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>4 vCPU AMD EPYC<\/li>\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>6 GB RAM<\/li>\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>60 GB SSD NVMe U.2<\/li>\n        <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Network: 10 Gbps<\/li>\n      <\/ul>\n      <div class=\"interdata-plan-spacer\"><\/div>\n      <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/cloud-day-by-interdata-2026\/cloud-day-base\" target=\"_blank\" rel=\"nofollow sponsored noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n    <\/article>\n  <\/div>\n<\/div>\n\n\t<div id=\"gap-1834904355\" class=\"gap-element clearfix\" style=\"display:block; height:auto;\">\n\t\t\n<style>\n#gap-1834904355 {\n  padding-top: 30px;\n}\n<\/style>\n\t<\/div>\n\t\n","protected":false},"excerpt":{"rendered":"<p>\u0110\u1ea9y code l\u00ean GitHub l\u00e0 thao t\u00e1c b\u1eaft bu\u1ed9c \u0111\u1ed1i v\u1edbi m\u1ecdi l\u1eadp tr\u00ecnh vi\u00ean, th\u1ebf nh\u01b0ng vi\u1ec7c \u0111\u1ed1i m\u1eb7t v\u1edbi t\u1ed1c \u0111\u1ed9 upload r\u00f9a b\u00f2, l\u1ed7i ch\u1ee9ng th\u1ef1c HTTPS hay xung \u0111\u1ed9t nh\u00e1nh li\u00ean t\u1ee5c x\u1ea3y ra khi\u1ebfn quy tr\u00ecnh ph\u00e1t tri\u1ec3n d\u1ef1 \u00e1n b\u1ecb gi\u00e1n \u0111o\u1ea1n tr\u1ea7m tr\u1ecdng. \u0110\u1ec3 t\u1ed1i \u01b0u h\u00f3a chu<\/p>\n","protected":false},"author":2,"featured_media":41934,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[140],"tags":[],"class_list":["post-41930","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-lap-trinh"],"_links":{"self":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/41930","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/comments?post=41930"}],"version-history":[{"count":3,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/41930\/revisions"}],"predecessor-version":[{"id":41935,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/41930\/revisions\/41935"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/media\/41934"}],"wp:attachment":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/media?parent=41930"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/categories?post=41930"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/tags?post=41930"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}