Chuyển đến nội dung chính

Top 20 lệnh Git kèm ví dụ: Hướng dẫn thực tiễn

Hướng dẫn này bao quát những lệnh Git thiết yếu nhất kèm ví dụ để giúp bạn làm việc hiệu quả hơn!
Đã cập nhật 16 thg 4, 2026  · 15 phút đọc

Git là công cụ thiết yếu cho bất kỳ ai làm việc với mã nguồn, dù bạn là lập trình viên, nhà khoa học dữ liệu, kỹ sư dữ liệu hay người làm machine learning. Nó cho phép các nhóm cộng tác trên cùng một dự án đồng thời, đồng thời cung cấp lịch sử rõ ràng về các chỉnh sửa mã, giúp việc theo dõi và quản lý cập nhật trở nên dễ dàng.

Trong bài viết này, tôi sẽ hướng dẫn bạn những lệnh Git được dùng nhiều nhất, cú pháp của chúng và cách áp dụng vào công việc hằng ngày!

Các lệnh Git cơ bản

Các bước cơ bản khi làm việc với Git gồm tạo một repository, sao chép một repository có sẵn và chỉnh sửa mã. Phần này bàn luận chi tiết về những chức năng nền tảng của Git cùng với cú pháp để triển khai chúng. 

Cần cài đặt Git? hãy làm theo hướng dẫn này để cài đặt Git trên hệ thống của bạn.

git init

Lệnh git init tạo một Git repository mới hoặc khởi tạo lại một repository hiện có.  

Khi bạn chạy lệnh này, thư mục hiện tại sẽ trở thành một Git repository, cho phép bạn theo dõi các thay đổi của nó. Nó thêm một thư mục ẩn .git trong thư mục đó, nơi Git lưu trữ toàn bộ metadata, lịch sử phiên bản và log liên quan đến dự án.

git clone

Để sao chép một Git repository từ vị trí này sang vị trí khác, ta dùng lệnh git clone. Thông thường nó sao chép một repository hiện có, bao gồm log và các phiên bản, từ các máy chủ từ xa như GitHub hoặc GitLab về máy cục bộ của bạn. 

Bước 1: Điều hướng tới repository trên GitHub mà bạn muốn clone và nhấp “Code”.

lệnh git clone

lệnh git clone

Bước 2: Sao chép URL như hiển thị trong hình. 

lệnh git clone cơ bản

lệnh git clone cơ bản

Bước 3: Đi tới thư mục nơi bạn muốn clone repository này về máy cục bộ và thực thi lệnh sau: 

git clone <copied_URL>

git status

Lệnh git status cho chúng ta biết chi tiết về: 

  • các tệp đã sửa đổi (tệp đã thay đổi nhưng chưa được stage).
  • các tệp chưa được theo dõi (tệp mà Git chưa theo dõi).
  • các tệp đã stage (tệp đã được stage và sẵn sàng commit). 

Cú pháp như sau:

git status 

 Lệnh Git status

Lệnh Git status

git add

Lệnh git add thêm các thay đổi của bạn vào khu vực staging. Nó thông báo cho Git rằng repository nên cập nhật những thay đổi này khi người dùng chạy lệnh commit.

  • git add .: stage các thay đổi đã thực hiện với tất cả các tệp. 
  • git add <file_name>: chỉ đưa các thay đổi của một tệp cụ thể vào khu vực staging.

git commit

Lệnh git commit lưu các thay đổi bạn đã thực hiện (hoặc đã stage) vào repository cục bộ. Mỗi lần bạn chạy git commit, Git sẽ tạo một ảnh chụp (snapshot) của repository tại thời điểm đó. Việc này cho phép bạn quay lại một commit trước đó bất cứ khi nào cần.

Cú pháp như sau:

git commit -m "commit_message"

Thông điệp commit là mô tả ngắn gọn về các thay đổi trong một commit.

Làm việc với Remote Repository

GitHub lưu trữ nhiều ứng dụng trên máy chủ từ xa của họ, cho phép các nhà phát triển theo dõi và quản lý chúng. Trong phần này, chúng ta sẽ xem cách trích xuất, truyền tải và tương tác với những remote repository đó bằng các lệnh Git. 

Muốn tìm hiểu GitHub hoạt động ra sao? Hãy bắt đầu với Giới thiệu về các khái niệm GitHub để hiểu repository, pull request và các thực tiễn cộng tác tốt nhất.

git remote add

Lệnh git remote add tạo kết nối giữa Git repository cục bộ của bạn và Git repository từ xa, cho phép bạn push và pull các thay đổi giữa chúng:

git remote add <repo_name> <remote_url>
  • <repo_name>: một biệt danh cho repository từ xa (mặc định là “origin”).
  • <remote_url>: URL của repository từ xa.

git push

Lệnh git push đồng bộ repository từ xa với repository cục bộ. Khi bạn chạy lệnh này, repository từ xa sẽ phản ánh tất cả các thay đổi bạn đã commit cục bộ.

git push <remote> <branch>
  • <remote>: bí danh của repository từ xa (mặc định là “origin”).
  • <brach>: tên nhánh bạn muốn push.

Có một số biến thể của git push, ví dụ:

git push ---all origin

Lệnh trên sẽ push tất cả các nhánh cục bộ của bạn lên repository từ xa.

git push --force origin main

Lệnh trên ghi đè nhánh main trên repository từ xa bằng nhánh main cục bộ của bạn. Hãy cẩn trọng khi sử dụng, vì nhánh main từ xa có thể mất toàn bộ lịch sử. 

git pull

Lệnh git pull tải về và hợp nhất các thay đổi từ repository từ xa với repository cục bộ. 

Lệnh git pull kết hợp hai lệnh: git fetchgit merge

Đầu tiên, git fetch lấy tất cả thay đổi từ repository từ xa, bao gồm commit, tag và nhánh mới. Sau đó, git merge được thực thi, tích hợp những thay đổi đó vào nhánh cục bộ hiện tại. 

Cú pháp như sau:

git pull origin feature-branch

Lệnh trên lấy dữ liệu từ feature_branch trên repository từ xa và merge vào nhánh cục bộ hiện tại của bạn. 

git fetch

Lệnh git fetch cho phép bạn xem trước các thay đổi trong repository từ xa trước khi merge chúng vào cục bộ. Nó tải về các thay đổi và cập nhật vào các nhánh theo dõi từ xa (remote tracking branches). Với những ai chưa quen, remote tracking branches là các bản sao của các nhánh trên repository từ xa. 

Ví dụ, lệnh sau tải về các thay đổi trong repository từ xa và cập nhật vào các nhánh theo dõi từ xa dưới origin:

git fetch origin

Branching và Merging trong Git

Branching trong Git cho phép các nhà phát triển làm việc độc lập trên tính năng mới hoặc sửa lỗi mà không ảnh hưởng đến repository chính. Khi thay đổi đã sẵn sàng, việc merge sẽ tích hợp chúng vào codebase chính. Hãy cùng khám phá các lệnh chủ chốt trong quy trình này.

git branch

Lệnh git branch liệt kê, tạo mới hoặc xóa nhánh. Một nhánh là một phiên bản khác của repository của bạn. 

Nếu bạn đang phát triển một tính năng mới cho ứng dụng, bạn có thể tạo và làm việc trên một nhánh mới.Bạn có thể merge nhánh mới này vào nhánh chính khi các thay đổi đã sẵn sàng và được kiểm thử. Điều này cho phép bạn làm việc độc lập trên các tính năng mới mà không can thiệp trực tiếp vào dòng chính. 

  • git branch: xuất danh sách tất cả các nhánh trong repository.
  • git branch <branch_name>: tạo một nhánh mới tên là “branch_name”.
  • git branch -d <branch_name>: Xóa nhánh tên “branch_name”.

git checkout

Lệnh git checkout có thể làm hai việc: chuyển đổi giữa các nhánh hoặc khôi phục tệp về trạng thái trước đó. 

  • Chuyển nhánh: Trước Git 2.23, lệnh git checkout branch_name được dùng để chuyển từ nhánh hiện tại sang nhánh khác. Không chỉ để chuyển, bạn cũng có thể tạo và chuyển sang nhánh mới.

Lệnh sau tạo nhánh mới tên “feature_branch” và chuyển sang nhánh đó:

git checkout -b feature_branch

Tuy nhiên, trong phiên bản Git mới nhất, git checkout được thay thế bằng git switch để khôi phục tệp. 

  • Khôi phục tệp: Bạn có thể loại bỏ các thay đổi đã thực hiện trên một tệp và khôi phục nó về phiên bản trước đó với lệnh sau.
git checkout -- <file-name>

Bạn cũng có thể làm điều này với một tệp từ nhánh khác như sau:

git checkout <branch-name> -- <file-name>

git merge

Nếu bạn đã làm việc trên một nhánh mới, bạn có thể merge nó vào nhánh chính bằng git merge để áp dụng các thay đổi. Git thực hiện merge theo hai cách:

  • Fast forward merge: Giả sử bạn tạo một nhánh mới tên "feature_x" từ nhánh chính và làm việc trên đó. Nếu nhánh chính không có cập nhật nào kể từ khi bạn tạo "feature_x", thì thay vì tạo commit merge “feature_x” vào nhánh chính, Git sẽ cập nhật con trỏ của nhánh chính trỏ tới phiên bản mới nhất của "feature_x". Trong trường hợp này, không có commit merge mới nào được tạo. 
  • Three-way merge: Nếu cả “feature_x” và nhánh chính đều có chỉnh sửa, Git sẽ kết hợp các thay đổi và tạo một commit merge mới trên nhánh chính. 

Ví dụ: 

      C---D---F (feature-branch)
     /
A---B---E---G (main)

Tại commit B, nhánh tính năng C được tạo. Nhánh chính có thêm các commit EG ngay cả sau khi tạo nhánh tính năng. Do đó, tính năng được merge vào nhánh chính, tạo ra một commit merge mới M như sau:

      C---D---F (feature-branch)
     /         \         
A---B---E---G---M (main)

git rebase

git rebase là một cách khác để tích hợp các thay đổi giữa các nhánh, nhưng hoạt động khác so với git merge. Merge giữ toàn bộ lịch sử của cả nhánh chính và nhánh tính năng. Ngược lại, rebase ghi đè lịch sử commit để làm cho nó tuyến tính và sạch sẽ hơn.

Hơn nữa, merge cần một commit merge bổ sung, trong khi rebase không tạo thêm commit mới. Git rebase thực hiện hai bước: 

  1. Chuyển sang nhánh tính năng 
  2. Rebase vào nhánh chính.

Ví dụ:

      C---D---F (feature-branch)
     /
A---B---E---G (main)
  • Bước 1: chạy git checkout feature_branch.
  • Bước 2: Chạy git rebase main: Di chuyển toàn bộ nhánh tính năng lên trên nhánh chính bằng cách áp dụng lại các commit C, D, F dưới dạng C’, D’F’ trên đỉnh commit mới nhất G của nhánh chính. Điều này tạo ra lịch sử commit tuyến tính như sau:
A---B---E---G---C'---D'---F' (main)

Vì các thao tác merge và rebase thường bị nhầm lẫn, dưới đây là tóm tắt các khác biệt:

Merge 

Rebase

Giữ nguyên toàn bộ lịch sử commit của cả hai nhánh.

Ghi đè lịch sử commit để làm cho tuyến tính.

Tạo thêm một commit merge.

Không tạo thêm commit nào.

Cấu trúc nhánh hiển thị trong lịch sử.

Khiến lịch sử commit trông như một đường thẳng.

Dùng khi cần theo dõi lịch sử commit của từng nhánh, bao gồm mốc thời gian khi chúng được merge.

Dùng khi bạn cần lịch sử commit rõ ràng và dễ hiểu. 

Muốn tìm hiểu thêm về làm việc với nhánh từ xa? Học cách checkout và theo dõi các nhánh từ xa bằng git checkout trong hướng dẫn từng bước này.

Lịch sử Git và Hoàn tác thay đổi

Git cung cấp nhiều lệnh để xem lịch sử và hoàn tác thay đổi ở các giai đoạn phát triển khác nhau. Các lệnh liên quan được trình bày tại đây. 

git log

Lệnh git log hiển thị toàn bộ lịch sử commit của nhánh hiện tại. Nó bao gồm bốn trường chính: commit, tác giả, ngày và thông điệp commit. 

lịch sử git commit

lịch sử git commit

  • Commit: một ID duy nhất.
  • Tác giả: tên và email của người thực hiện.
  • Ngày: Dấu thời gian khi thay đổi được commit.
  • Thông điệp commit: mô tả về commit. 

git diff

Lệnh git diff hiển thị khác biệt giữa các trạng thái khác nhau của repository — dù bạn đang so sánh thư mục làm việc hiện tại với khu vực staging, staging với commit cuối, hay thậm chí là hai tệp hoặc hai nhánh, miễn là bạn chỉ định.

  • git diff - hiển thị khác biệt giữa thư mục làm việc hiện tại và khu vực staging. 
  • git diff -- cached: hiển thị khác biệt giữa khu vực staging và commit cuối.
  • git diff commit1 commit2 - khác biệt giữa commit 1commit 2.
  • git diff branch1..branch2 - so sánh khác biệt giữa branch 1branch 2.

git reset

Lệnh git reset cho phép bạn hoàn tác thay đổi bằng cách đặt lại HEAD hiện tại về một trạng thái trước đó cụ thể. Để đưa HEAD về một commit trước đó, bạn có ba biến thể: “soft”, “mixed” và “hard” để dùng với lệnh reset. 

  • Soft: quay về một commit trước nhưng giữ nguyên các thay đổi hiện tại ở trạng thái staged, cho phép bạn commit lại sau khi cần. 

git reset --soft HEAD~1

  • Mixed: quay về một commit trước và loại bỏ các thay đổi của commit hiện tại khỏi khu vực staging. Tuy nhiên, các thay đổi đó vẫn giữ nguyên trong thư mục làm việc.

git reset --mixed HEAD~1

  • Hard: trỏ về một commit trước đồng thời xóa các cập nhật của commit hiện tại khỏi cả thư mục làm việc và khu vực staging. 

git reset --hard HEAD~1

Cần hoàn tác thay đổi trong Git? Khám phá sự khác nhau giữa git resetgit revert trong hướng dẫn chi tiết này.

Git Stash và Dọn dẹp

Khi làm việc với Git, bạn có thể cần tạm thời gác lại các thay đổi mà không commit hoặc dọn dẹp các tệp không cần thiết làm lộn xộn repository. Đây là lúc các lệnh stash và dọn dẹp của Git phát huy tác dụng.

git stash

Giả sử bạn muốn quay về trạng thái trước đó nhưng không muốn commit tiến độ hiện tại; bạn có thể dùng git stash. Lệnh này lưu tạm thời các thay đổi chưa commit và đặt lại thư mục làm việc về trạng thái đã commit gần nhất. 

git stash pop

Nếu bạn đã stash một số thay đổi trước đó và muốn đưa chúng trở lại thư mục làm việc, hãy dùng lệnh git stash pop. Lệnh này sẽ áp dụng những thay đổi stash mới nhất vào thư mục hiện tại và loại bỏ chúng khỏi danh sách stash. 

git clean

Lệnh git clean xóa các tệp chưa được theo dõi khỏi Git repository. Hãy dùng lệnh git clean -n để xem trước những gì sẽ bị xóa trước khi thực hiện lệnh dọn dẹp thật!

Muốn dọn dẹp lịch sử Git? Học cách gộp nhiều commit thành một với hướng dẫn Git squash này.

Cấu hình Git và Thiết lập người dùng

Git cho phép bạn cấu hình thiết lập người dùng ở các cấp độ khác nhau. Hãy cùng khám phá tại đây.

git config

Lệnh git config cho phép bạn tùy chỉnh các thiết lập Git theo nhu cầu. Bạn có thể cấu hình ở ba cấp: local, system và global. 

  • Cấp hệ thống (system): là cấp cấu hình rộng nhất với quyền truy cập cấp root.
  • Cấp toàn cục (global): các cấu hình ở cấp này được áp dụng cho tất cả repository của người dùng hiện tại. 
  • Cấp cục bộ (local): các thiết lập liên quan đến repository Git hiện tại có thể được tùy chỉnh ở cấp này. 

Dưới đây là một số lệnh git config thường dùng:

  • git config -list: Hiển thị các thiết lập Git ở mọi cấp.
  • git config --global user.name "Your_name": Đặt tên người dùng Git cho mọi repository trên hệ thống của bạn là “Your_name”.
  • git config --global user.email "your.email@example.com": Đặt địa chỉ email cho mọi repository trên hệ thống của bạn.

Chúng ta biết rằng master là nhánh chính mặc định khi khởi tạo một Git repository. Nhưng bạn có thể đổi tên nó theo ý muốn bằng lệnh sau:

git config --global init.defaultBranch "srujana_master"

Trong lệnh trên, chúng tôi thay thế nhánh master mặc định bằng "srujana_master" ở cấp global (cho tất cả repository trong hệ thống).

Bạn có thể áp dụng các thiết lập cấp global khác. Ví dụ, để đổi trình soạn thảo văn bản mặc định sang VS Code, hãy chạy lệnh sau:

git config -global core.editor "code-w"

Bạn cũng có thể tạo lệnh Git của riêng mình. Ví dụ:

git config --global alias.slice branch

Lệnh trên tạo một bí danh mới slice cho branch. Vì vậy, nếu bạn muốn tạo một nhánh mới, bạn có thể chạy git slice branch_name thay vì git branch branch_name.

Tóm tắt các lệnh Git

Dưới đây là tóm tắt các lệnh Git chúng ta đã khám phá để bạn tiện tra cứu:

Lệnh

Mô tả

Ví dụ sử dụng

git init

Khởi tạo một Git repository mới.

git init

git clone

Clone một Git repository hiện có.

git clone <repository_url>

git status

Kiểm tra trạng thái các tệp trong thư mục làm việc.

git status

git add

Thêm tệp vào khu vực staging.

git add <file_name>

git commit

Commit các thay đổi đã stage vào repository cục bộ.

git commit -m 'Commit message'

git remote add

Thêm kết nối tới một repository từ xa.

git remote add origin <remote_url>

git push

Đẩy các thay đổi đã commit lên repository từ xa.

git push origin <branch_name>

git pull

Fetch và merge các thay đổi từ repository từ xa.

git pull origin <branch_name>

git fetch

Fetch các thay đổi từ repository từ xa mà không merge.

git fetch origin

git branch

Liệt kê, tạo hoặc xóa nhánh.

git branch <branch_name>

git checkout

Chuyển đổi giữa các nhánh hoặc khôi phục tệp (cách cũ).

git checkout <branch_name>

git switch

Chuyển đổi giữa các nhánh (được ưu tiên trong các phiên bản mới).

git switch <branch_name>

git merge

Merge các thay đổi từ một nhánh sang nhánh khác.

git merge <branch_name>

git rebase

Áp lại các commit từ một nhánh lên nhánh khác để có lịch sử sạch hơn.

git rebase <branch_name>

git log

Xem lịch sử commit.

git log

git diff

Hiển thị khác biệt giữa các trạng thái khác nhau của repository.

git diff

git reset

Hoàn tác thay đổi bằng cách đặt HEAD về trạng thái trước đó.

git reset --soft HEAD~1

git stash

Tạm thời lưu các thay đổi chưa commit và đặt lại thư mục làm việc.

git stash

git stash pop

Áp dụng các thay đổi stash mới nhất vào thư mục làm việc.

git stash pop

git clean

Xóa các tệp chưa được theo dõi khỏi repository.

git clean -n

git config

Cấu hình thiết lập Git ở cấp hệ thống, global hoặc local.

git config --global user.name 'Your Name'

Thực tiễn tốt nhất khi sử dụng Git

Sử dụng Git hiệu quả không chỉ là theo dõi thay đổi — đó là duy trì một quy trình làm việc sạch, có cấu trúc và mang tính cộng tác. Tuân theo các thực tiễn tốt giúp repository của bạn luôn ngăn nắp, lịch sử commit có ý nghĩa và quy trình phát triển vận hành trơn tru.

Dưới đây là một số thói quen quan trọng nên áp dụng khi làm việc với Git:

  • Commit thường xuyên: Một mục đích chính của việc dùng hệ thống quản lý phiên bản như Git là theo dõi thay đổi hiệu quả theo thời gian. Khi bạn commit từng thay đổi riêng lẻ thay vì gộp nhiều thay đổi cùng lúc, về sau sẽ dễ hiểu hơn mỗi commit đã chỉnh sửa gì. 
  • Commit với thông điệp rõ ràng: Mỗi lần commit, hãy kèm một thông điệp rõ ràng mô tả commit đó. Lần sau khi xem lại các commit, bạn sẽ dễ dàng biết mỗi commit đã thay đổi gì trong mã. 
  • Sử dụng nhánh: Với bất kỳ tính năng mới hoặc sửa lỗi nào, hãy tạo một nhánh, làm việc trên đó và merge lại. Đây là thực tiễn tốt nhất để tách phần phát triển mới khỏi dự án chính. 
  • Tận dụng .gitignore: Một tệp .gitignore chứa các tệp và thư mục liên quan đến dự án nhưng không cần theo dõi. Chúng thường gồm các tệp tự động sinh ra, artefact build, log, tệp tạm và tệp phụ thuộc nền tảng. Bỏ qua chúng sẽ tránh các log không cần thiết và theo dõi phiên bản thừa, giúp lịch sử của bạn sạch sẽ.

Kết luận

Git là công cụ mạnh mẽ để theo dõi thay đổi, cộng tác với người khác và duy trì quy trình phát triển có cấu trúc. Trong bài viết này, tôi đã trình bày các lệnh Git thiết yếu và thực tiễn tốt nhất để giúp bạn quản lý dự án hiệu quả hơn.

Tất nhiên, luôn còn nhiều điều để học! Nếu bạn mới bắt đầu, hãy xem Introduction to Git để xây dựng nền tảng vững chắc. Với những ai muốn trau dồi thêm kỹ năng, Intermediate Git đi sâu hơn vào các quy trình và kỹ thuật nâng cao.

Cần tài liệu tham khảo Git nhanh cho các dự án sau này? Hãy giữ các lệnh thiết yếu trong tầm tay với git cheat sheet này!

Câu hỏi thường gặp

Sự khác nhau giữa git pull và git fetch là gì?

git pull tải về các thay đổi từ repository từ xa và merge vào nhánh cục bộ của bạn, trong khi git fetch chỉ tải về các cập nhật, cho phép bạn xem trước trước khi merge.

Làm thế nào để đổi tên một nhánh Git?

Để đổi tên nhánh hiện tại:

git branch -m new-branch-name

Nếu đổi tên một nhánh khác:

git branch -m old-branch-name new-branch-name

Làm sao để xóa một nhánh trong Git?

Để xóa một nhánh cục bộ:

git branch -d branch-name

Để xóa một nhánh từ xa:

git push origin --delete branch-name

Sự khác nhau giữa git merge và git rebase là gì?

git merge kết hợp các thay đổi từ những nhánh khác nhau trong khi vẫn giữ lịch sử, còn git rebase viết lại lịch sử commit để tạo một chuỗi tuyến tính, gọn gàng hơn.

Tôi có thể hoàn tác một git commit không?

Có! Để hoàn tác commit gần nhất nhưng giữ các thay đổi trong khu vực staging:

git reset --soft HEAD~1

Để hoàn tác commit gần nhất và đưa các thay đổi ra khỏi staging:

git reset --mixed HEAD~1

Để loại bỏ hoàn toàn các thay đổi:

git reset --hard HEAD~1

Làm sao để kiểm tra tôi đang ở nhánh nào?

Chạy:

git branch --show-current

Hoặc đơn giản là:

git status

Làm sao để hoàn tác thay đổi cho một tệp đơn lẻ?

Để loại bỏ các thay đổi chưa stage trong một tệp:

git checkout -- filename

Để đưa tệp về trạng thái đã commit gần nhất:

git restore filename

Làm sao để liệt kê tất cả nhánh từ xa trong một Git repository?

Sử dụng:

git branch -r

Làm sao để force push một nhánh trong Git?

Hãy cẩn thận khi force push, vì nó ghi đè thay đổi trên remote:

git push --force origin branch-name

Làm sao để xem lịch sử Git của tôi ở dạng đồ họa?

Nếu bạn muốn trực quan hóa lịch sử commit dạng đồ thị:

git log --oneline --graph --all --decorate

Srujana Maddula's photo
Author
Srujana Maddula
LinkedIn

Srujana là một cây bút công nghệ tự do với bằng Cử nhân Khoa học Máy tính. Việc viết về nhiều chủ đề như khoa học dữ liệu, điện toán đám mây, phát triển, lập trình, bảo mật và nhiều lĩnh vực khác đến với cô một cách tự nhiên. Cô yêu thích văn học kinh điển và khám phá những điểm đến mới.

Chủ đề

Tìm hiểu thêm về Git với các khóa học này!

Tracks

Nền tảng GitHub

10 giờ
Chuẩn bị cho Chứng chỉ Nền tảng GitHub bằng cách học các kiến thức cơ bản về Git và GitHub: kiểm soát phiên bản, hợp tác và phân nhánh.
Xem chi tiếtRight Arrow
Bắt đầu khóa học
Xem thêmRight Arrow