Trong bài viết này, bạn sẽ làm quen với workflow cơ bản lặp lại mỗi ngày: lấy một bản sao của dự án, lưu các thay đổi (commit), gửi chúng lên GitHub (push) và thiết lập để bỏ qua những tệp không cần thiết bằng .gitignore. Claude Code cũng thực hiện workflow này thay bạn khi làm việc với repository, nên hiểu nó sẽ càng hữu ích.

Ví dụ và ảnh chụp giao diện sử dụng IDE JetBrains; tên và vị trí các thao tác có thể khác tùy phiên bản. Hãy dùng một repository riêng để thực hành. Với dự án thực tế, hãy tuân theo quy tắc về branch, commit và gửi thay đổi của dự án đó.

Clone dự án

Bạn đã có repository trên GitHub và giờ cần lấy một bản sao về máy để bắt đầu làm việc. Quá trình này gọi là clone.

Bước 1. Mở IDE. Nếu đang mở một dự án nào đó, hãy đóng dự án bằng File | Close Project. Ở màn hình khởi động (Welcome Screen), chọn Clone Repository (hoặc Get from VCS).

Hình minh họa cho mục "Clone dự án"

Bước 2. Trong cửa sổ vừa mở, dán URL của repository. Cách này tiện khi bạn clone repository của người khác: URL được sao chép từ trang repository trên GitHub.

Nhập URL để clone

Nếu clone repository của chính mình, cách đơn giản nhất là đăng nhập GitHub ngay trong IDE bằng Log in to GitHub. IDE sẽ mở trình duyệt để xác thực.

Cửa sổ cấp quyền cho IDE JetBrains trên GitHub

Trên trang vừa mở, nhấn nút màu xanh lá Authorize JetBrains. Sau đó, bạn có thể chọn repository của mình ngay trong danh sách ở IDE. Chọn dự án cần dùng rồi nhấn Clone.

Danh sách repository để clone

Bước 3. Cân nhắc có tin cậy dự án hay không. Với repository quen thuộc của chính mình, bạn có thể chọn Trust Project. Với repository lạ, hãy xem nội dung và hướng dẫn chạy trước: khi được tin cậy, IDE có thể thực thi các thao tác của dự án.

Bước 4. Mở dự án. Trên Windows, IDE có thể đề xuất thêm thư mục ngoại lệ cho phần mềm diệt virus để tăng tốc lập chỉ mục. Việc này không cần thiết để tìm hiểu Git; đừng tắt bảo vệ chỉ để clone dự án.

Thiết lập ngoại lệ cho phần mềm diệt virus

Lưu thay đổi bằng commit

commit là một ảnh chụp, tức trạng thái dự án được lưu tại một thời điểm cụ thể. Hãy nghĩ về nó như điểm lưu trong trò chơi: nếu có sự cố, bạn luôn có thể quay lại đó. Mỗi commit có một mã định danh duy nhất và thông điệp mô tả các thay đổi.

Các ảnh chụp nối tiếp trong lịch sửABCD
Các ảnh chụp nối tiếp trong lịch sử

Lịch sử commit: mỗi commit mới được xây dựng trên commit trước, tạo nên dòng thời gian phát triển của dự án.

Bước 1. Thực hiện thay đổi. Mở tệp README.md và thêm phần mô tả dự án. Ngay khi bắt đầu chỉnh sửa, IDE sẽ tô màu xanh dương cho tên tệp trong bảng dự án - tức là tệp đã thay đổi nhưng Git chưa lưu các thay đổi đó. Bên cạnh những dòng vừa sửa, IDE hiển thị một vạch màu: xanh lá cho dòng được thêm, xanh dương cho dòng được chỉnh sửa.

Tệp đã chỉnh sửa được tô màu

Mở tab Commit và xem các tệp đã thay đổi. Ở chế độ thông thường của JetBrains, đây là các danh sách thay đổi (changelists); có thể bật Git staging riêng trong phần thiết lập. Đừng nhầm các ô chọn trong cửa sổ này với index đã được chuẩn bị trong terminal.

Cửa sổ Commit trong IntelliJ IDEA

Trong cửa sổ có những mục sau:

  • Changes - các tệp đã được Git theo dõi và vừa thay đổi (ở đây là README.md);
  • Unversioned Files - các tệp mới mà Git thấy trong thư mục dự án nhưng chưa theo dõi.

Bước 2. Xem lại diff đã chọn. Các tệp mới trong Unversioned Files vẫn chưa được theo dõi. Thông thường, ta loại trừ kết quả build, cache và thiết lập cá nhân bằng .gitignore. Một số thiết lập chung của dự án có thể được lưu trong Git, vì vậy hãy xem quy tắc của dự án trước khi bỏ qua toàn bộ thư mục .idea/.

Bước 3. Tạo commit. Nhập thông điệp dễ hiểu, chẳng hạn docs: Describe the project in README, xem lại diff đã chọn rồi nhấn Commit. Nếu đã bật các bước kiểm tra trước commit, hãy chờ kết quả. Mở Git Log và xác nhận commit mới có chứa tệp cần thiết.

Commit thành công
Claude Code liên quan thế nào

Khi Claude Code đề xuất tạo commit, đằng sau đó là lệnh git commit với các tệp và thông điệp đã chọn. Thói quen nhìn kỹ danh sách tệp cũng hữu ích ở đây: hãy kiểm tra xem Claude có định commit đúng những gì cần thiết không, đọc thông điệp commit rồi chấp thuận hoặc chỉnh sửa.

Gửi thay đổi lên GitHub bằng push

Hiện các commit của bạn chỉ được lưu trên máy tính. Để chia sẻ với nhóm hoặc cất chúng ở nơi an toàn hơn, hãy gửi lên repository từ xa trên GitHub.

  • Commit cục bộ
  • git push
  • Branch từ xa

Push cập nhật branch từ xa đã chọn bằng các commit của bạn. Lệnh này không tải công việc của người khác về và cũng không gửi các tệp chưa commit.

Bước 1. Nhấn Push. Nút Push nằm trên thanh công cụ chính phía trên (Main Toolbar), có biểu tượng mũi tên hướng lên và sang phải.

Nút Push trên Main Toolbar

Bước 2. Kiểm tra và xác nhận. Một cửa sổ sẽ hiện các commit sẵn sàng được gửi. Đây là cơ hội cuối để chắc chắn bạn đang gửi đúng nội dung. Nhấn Push.

Cửa sổ xác nhận Push

Sau khi gửi thành công, IDE sẽ hiện thông báo. Hãy kiểm tra repository và branch đích trong đó; ở bài thực hành này, đó là origin/main. Nội dung thông báo tùy thuộc phiên bản IDE.

Bước 3. Kiểm tra kết quả trên GitHub. Mở trang repository trên GitHub bằng trình duyệt - bạn sẽ thấy các thay đổi và tệp của mình ở đó.

Claude Code liên quan thế nào

Claude Code có thể gửi thay đổi thay bạn bằng git push. Hãy nhớ: server chỉ nhận những gì đã được lưu trong commit. Vì vậy, kiểm soát ở bước commit - xem chính xác nội dung nào nằm trong ảnh chụp - cũng chính là kiểm soát những gì sẽ xuất hiện trên GitHub.

Bảng điều khiển Git

IDE có bảng công cụ riêng Git cùng các thao tác nhanh trên thanh công cụ phía trên. Đây là nơi bạn quản lý phiên bản. Các nút chính gồm:

Các thành phần điều khiển Git trong IDE
  • Commit (dấu tích) - mở bảng để lưu thay đổi;
  • Push (mũi tên lên/phải) - mở cửa sổ gửi commit lên GitHub;
  • Branches - tiện ích quản lý branch (ở góc trên bên trái);
  • Show Git Log - toàn bộ lịch sử commit của dự án, như cỗ máy thời gian của riêng bạn.

Lấy cập nhật

Update Project lấy thay đổi về và kết hợp chúng với branch cục bộ; IDE dùng merge hoặc rebase tùy thiết lập. Trước khi cập nhật, hãy lưu công việc còn dang dở và xem phương thức cập nhật được chọn.

Trước khi bắt đầu việc mới, hãy kiểm tra trạng thái các tệp và branch cần dùng đã cập nhật chưa. Nếu có commit của người khác, hãy lấy về rồi kết hợp theo quy tắc của dự án. Việc cập nhật có thể cần xử lý xung đột; nó không đảm bảo xung đột sẽ không phát sinh về sau.

Bỏ qua tệp không cần thiết bằng .gitignore

Nếu dự án có tệp phụ trợ hoặc kết quả build mà bạn không muốn vô tình đưa vào repository, hãy thêm chúng vào danh sách loại trừ. Để làm vậy, tạo một tệp đặc biệt tên là .gitignore ở thư mục gốc dự án.

Thường bỏ qua những gì và vì sao

Gần như công nghệ nào cũng có những tệp không nên đưa vào Git vì chúng chỉ dành riêng cho máy tính của bạn hoặc được tạo lại khi build:

  • thư mục build (chẳng hạn build/, dist/) - đây là kết quả biên dịch, có thể tạo lại dễ dàng;
  • cache của trình quản lý package và các dependency (chẳng hạn node_modules/) - chúng có thể nặng hàng trăm megabyte và khác nhau trên mỗi hệ thống;
  • thiết lập IDE cá nhân, chẳng hạn trạng thái cửa sổ làm việc. Thư mục .idea/ đôi khi chứa cả thiết lập chung của dự án, nên chỉ bỏ qua toàn bộ thư mục này nếu đó là quy tắc của dự án;
  • tệp của hệ điều hành (.DS_Store, Thumbs.db) - tệp rác do hệ điều hành tự động tạo ra.

Cách tự thêm tệp vào danh sách bỏ qua:

Bước 1. Giả sử bạn tạo tệp cục bộ notes.txt để ghi chú nháp. Nhấp chuột phải vào tệp trong cây dự án.

Tạo tệp tạm thời

Bước 2. Mở menu Git -> Add to .gitignore -> Add to .gitignore. Tùy chọn này sẽ thêm tệp đã chọn vào .gitignore ở thư mục gốc dự án.

Thêm vào .gitignore qua menu

Nếu chưa có tệp .gitignore, IDE sẽ đề nghị tạo tệp đó. Hãy đồng ý.

Bước 3. IDE sẽ tự động thêm tên tệp vào .gitignore.

Tệp đã được thêm vào .gitignore

Tệp chưa được theo dõi và khớp với quy tắc thường sẽ biến mất khỏi danh sách thêm vào; màu sắc trong IDE tùy thuộc giao diện. Đây không phải cách ngăn việc ép thêm tệp, cũng không xóa được nội dung đã lưu trong lịch sử. Hãy commit chính tệp .gitignore nếu muốn mọi người đều áp dụng quy tắc.

Lưu ý

Nếu tệp đã được theo dõi. Thêm vào .gitignore không dừng việc theo dõi tệp. Lệnh git rm --cached đường-dẫn-tệp xóa tệp khỏi index nhưng giữ bản làm việc; sau đó cần commit thay đổi này. Các phiên bản cũ vẫn còn trong lịch sử. Nếu lộ bí mật, trước tiên hãy thu hồi quyền truy cập, đừng chỉ thêm vào danh sách bỏ qua.

Quy tắc cho .gitignore

Tệp này liệt kê các mẫu tên tệp và thư mục mà Git cần bỏ qua. Dòng trống sẽ bị bỏ qua, còn chú thích bắt đầu bằng ký tự #.

  • * - thay thế cho số lượng ký tự bất kỳ. Ví dụ, *.log bỏ qua mọi tệp có phần mở rộng .log;
  • / ở cuối mẫu biểu thị một thư mục. Ví dụ, build/ bỏ qua toàn bộ nội dung trong thư mục build;
  • ! ở đầu dòng đảo ngược quy tắc. Ví dụ, với quy tắc *.log, dòng !important.log sẽ loại tệp này khỏi quy tắc bỏ qua đó; tệp chỉ được theo dõi sau khi bạn thêm nó;
  • ** giữa các dấu gạch chéo khớp với số lượng thư mục lồng nhau bất kỳ, kể cả không có thư mục nào. Ví dụ, logs/**/*.log khớp cả logs/a.log lẫn logs/2026/09/a.log.

Ví dụ tệp .gitignore

# Thư mục build và cache
build/
dist/
node_modules/

# Trạng thái IDE cá nhân (JetBrains)
.idea/workspace.xml

# Tệp của hệ điều hành
.DS_Store
Thumbs.db

Mẫu có sẵn

Không cần viết các tệp này từ đầu - đã có những mẫu được cộng đồng kiểm chứng:

  1. bộ sưu tập .gitignore của GitHub dành cho nhiều ngôn ngữ và framework: https://github.com/github/gitignore;
  2. gitignore.io - dịch vụ web tạo tệp .gitignore phù hợp với công nghệ bạn dùng (chỉ cần nhập ngôn ngữ, hệ điều hành và IDE).

Cách Claude Code làm việc với Git

Workflow hằng ngày này cũng chính là những gì Claude Code có thể thực hiện thay bạn. Hãy chú ý các điểm sau:

  • Claude có thể tự tạo commit và push - bạn kiểm tra nội dung commit và đọc thông điệp;
  • .gitignore được thiết lập cẩn thận sẽ giúp loại trừ tệp không cần thiết, nhưng vẫn cần xem lại những tệp được chọn trước khi commit;
  • trước khi cập nhật, hãy kiểm tra trạng thái branch và công việc còn dang dở; sau đó xem kết quả merge.
Claude Code liên quan thế nào

Trước khi chấp thuận commit hoặc push, hãy xem diff Claude Code đưa ra. Đây cũng là cách kiểm tra các ô chọn trong cửa sổ Commit, chỉ khác ở chỗ Claude khởi tạo thay đổi. Nhờ vậy, lịch sử dự án và server chỉ nhận những gì bạn thực sự đã duyệt.

Bài trước: Giới thiệu về Git và GitHub · Bài tiếp theo: Branch và merge trong Git