CodeGym /Các khóa học /JAVA 25 SELF /Chu trình hằng ngày của lập trình viên: Commit, Push và ....

Chu trình hằng ngày của lập trình viên: Commit, Push và .gitignore

JAVA 25 SELF
Mức độ , Bài học
Có sẵn

1. Bắt đầu: nhân bản (clone) dự án

Hãy bắt đầu từ nơi chúng ta dừng lại ở bài trước. Bạn đã có một repository được tạo trên GitHub và bây giờ bạn cần lấy bản sao cục bộ của nó về máy tính để bắt đầu làm việc. Quy trình này được gọi là cloning.

Bước 1. Khởi chạy IDE của bạn. Nếu bạn đang mở một dự án nào đó, hãy đóng nó qua File -> Close Project. Ở màn hình bắt đầu, chọn Clone Repository hoặc Get from VCS.

Bước 2. Trong cửa sổ mở ra, dán URL repository của bạn. Cách này hữu ích nếu bạn đang clone repository của người khác. URL có thể sao chép từ trang repository trên GitHub.

Nếu bạn clone repository của chính mình (trường hợp của chúng ta), cách đơn giản nhất là đăng nhập vào tài khoản GitHub trực tiếp từ IDE. Để làm điều đó, chọn tùy chọn Log in to GitHub. IDE sẽ mở trình duyệt để ủy quyền.

Cửa sổ ủy quyền JetBrains IDE trên GitHub

Trên trang mở ra, hãy mạnh dạn nhấn nút màu xanh lá Authorize JetBrains. Sau đó, bạn có thể chọn các repository của mình trực tiếp từ danh sách trong IDE. Chọn dự án cần thiết và nhấn Clone.

Bước 3. IDE sẽ hỏi bạn có tin cậy dự án này không. Vì đây là repository của chính bạn, hãy nhấn Trust Project.

Bước 4. Cấu hình antivirus (dành cho người dùng Windows)

Antivirus trên Windows có thể cảnh báo rằng IDE đang cố gắng thực hiện những thao tác lạ. Vì chúng ta sẽ tạo và chạy chương trình, cần cho phép IDE hoạt động không bị hạn chế. Nhấn nút “Automatically” để IDE tự thêm các thư mục cần thiết vào danh sách ngoại lệ của antivirus.

2. Lưu thay đổi: Commit

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

        gitGraph
        commit id: "Initial commit"
        commit id: "Add user authentication"
        commit id: "Fix login button bug"
        commit id: "Refactor database connection"
    
Lịch sử commit. Mỗi commit mới được xây dựng dựa 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.

Nếu bạn đã clone một repository mới tạo, nó sẽ chỉ chứa một tệp — README.md

Mở tệp README.md và thêm mô tả về dự án của bạn. Ngay khi bạn bắt đầu chỉnh sửa, IDE sẽ tô sáng tên tệp bằng màu xanh lam trong khung dự án. Điều đó có nghĩa là tệp đã được sửa đổi nhưng thay đổi vẫn chưa được lưu vào Git. IDE cũng thêm đường kẻ màu xanh lá ở nơi bạn đã chỉnh sửa.

Bước 2. Mở cửa sổ Commit.

Bên trái IDE có thẻ Commit. Khi mở nó, bạn sẽ thấy tất cả thay đổi sẵn sàng để lưu. Đối với commit đầu tiên, cửa sổ này cần được chú ý đặc biệt.

Hãy cùng xem những gì có ở đây:

  • Changes: ở đây là các tệp đã được Git theo dõi nhưng vừa bị sửa đổi. Trong trường hợp của chúng ta là README.md, nơi ta đã thêm kế hoạch dự án.
  • Unversioned Files: các tệp mới mà Git nhìn thấy trong thư mục dự án nhưng chưa theo dõi.

Câu hỏi có thể xuất hiện: có cần thêm tất cả những tệp dịch vụ này vào repository không?

Tin vui là khi chúng ta tạo repository trên GitHub, ta đã chọn mẫu .gitignore. Tệp này đã chứa các quy tắc yêu cầu Git bỏ qua những thư mục hoặc tệp không cần thiết. Nhưng chúng ta sẽ nói chi tiết về nó ở cuối bài.

Còn bây giờ, nhiệm vụ cho commit đầu tiên — thêm tất cả các tệp chính của dự án vào lịch sử và viết thông điệp commit.

Bước 3. Thực hiện commit.

Nhấn nút Commit. Xong! Bạn đã lưu “ảnh chụp” của dự án vào repository cục bộ. Tệp sẽ trở lại màu bình thường.

3. Gửi (push) thay đổi lên GitHub: Push

Các commit của bạn hiện chỉ được lưu trên máy tính của bạn. Để chia sẻ với đội hoặc lưu trữ ở nơi an toàn, bạn cần đẩy chúng lên repository từ xa trên GitHub.

        sequenceDiagram
        participant Kho cục bộ (Máy tính của bạn)
        participant Kho từ xa (GitHub)

        note over Kho cục bộ (Máy tính của bạn): Bạn đã tạo một hoặc vài commit.
Chúng chỉ tồn tại ở đây. Kho cục bộ (Máy tính của bạn) ->> Kho từ xa (GitHub): git push (gửi các commit) note over Kho từ xa (GitHub): Các commit của bạn đã được sao chép
và lưu trữ an toàn trên máy chủ.
Các commit cục bộ của bạn được gửi lên máy chủ từ xa, đồng bộ hóa lịch sử dự án.

Bước 1. Nhấn nút Push.

Ở góc trên bên phải IDE có mũi tên xanh hướng lên — đó là nút Push. Hãy nhấn vào nó.

Bước 2. Kiểm tra và xác nhận.

Một cửa sổ sẽ mở ra nơi bạn thấy tất cả các commit sẵn sàng để gửi. Đây là cơ hội cuối cùng để đảm bảo bạn đang gửi đúng những gì cần. Nhấn Push.

Nếu mọi thứ diễn ra thành công, bạn sẽ thấy các thông báo: Pushed commits to origin/main. Create pull request

Bước 3. Kiểm tra kết quả trên GitHub.

Sau khi gửi thành công, mở trang repository của bạn trên GitHub. Bạn sẽ thấy các thay đổi đã xuất hiện ở đó.

4. Bảng điều khiển Git

Trong IDE của bạn có menu Git chuyên dụng, có thể tìm thấy ở thanh trên cùng. Đây là trung tâm quản lý phiên bản của bạn. Hãy nhanh chóng làm quen với các mục chính của nó.

  • Commit: mở cửa sổ quen thuộc để lưu thay đổi.
  • Push: mở cửa sổ để gửi các commit của bạn lên GitHub.
  • Update Project: chức năng rất quan trọng. Nó tải về các thay đổi mới từ những thành viên khác trong nhóm (thực hiện git pull). Hãy nhấn nó mỗi sáng trước khi bắt đầu làm việc!
  • Branches: mở cửa sổ quản lý nhánh. Chúng ta sẽ tìm hiểu kỹ ở bài tiếp theo.
  • Show Git Log: hiển thị toàn bộ lịch sử commit của dự án. Cỗ máy thời gian cá nhân của bạn.

5. Sử dụng các tệp .gitignore

Nếu bạn đã thêm một số tệp dịch vụ vào dự án và không muốn chúng vô tình lọt vào repository, bạn có thể đưa chúng vào danh sách bỏ qua. Có một tệp tên là .gitignore dành cho việc này. Điều này rất tiện khi trong dự án có những tệp không cần lưu trong hệ thống quản lý phiên bản (ví dụ tệp tạm, log, mật khẩu).

Bước 1. Trước hết, hãy tạo một tệp trong thư mục dự án mà bạn muốn bỏ qua. Ví dụ, notes.txt. Sau khi tạo tệp, nhấn Cancel nếu IDE đề nghị thêm nó vào Git.

Bước 2. Nhấp chuột phải vào tệp vừa tạo trong cửa sổ “Project”. Chuyển đến Git --> Add to .gitignore --> Add to .gitignore. Tùy chọn này sẽ thêm tệp đã chọn vào tệp .gitignore ở thư mục gốc của dự án.

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

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

Sau khi thêm vào .gitignore, các tệp bị bỏ qua sẽ hiển thị màu xám hoặc nâu. Khi cố gắng commit thay đổi, các tệp này sẽ bị bỏ qua. Bạn có thể thêm thư mục .idea vào danh sách bỏ qua.

Đừng quên commit chính tệp .gitignore vào repository và gửi thay đổi lên GitHub để tất cả thành viên dự án dùng cùng một bộ quy tắc bỏ qua.

Loại trừ tệp cục bộ: .git/info/exclude

Bên cạnh tệp .gitignore dùng để loại trừ tệp cho tất cả người dùng của dự án, Git còn cho phép tạo các quy tắc bỏ qua cục bộ trong tệp .git/info/exclude. Chúng sẽ không được commit vào repository và chỉ áp dụng cho bản sao cục bộ của bạn.

Điều này có thể hữu ích, ví dụ, để bỏ qua các tệp do IDE của bạn tạo ra mà không nên đưa vào hệ thống quản lý phiên bản và chỉ đặc thù cho bạn.

Quan trọng! Các quy tắc bỏ qua cục bộ chỉ có hiệu lực đối với bản sao cục bộ của repository của bạn.

Nếu tôi đã lỡ commit thì sao?

.gitignore chỉ bỏ qua các tệp mới, chưa được theo dõi. Nếu bạn đã commit một tệp, nó đã nằm trong lịch sử của repository và Git sẽ tiếp tục theo dõi nó, ngay cả khi bạn thêm nó vào .gitignore. Cho những tình huống như vậy, có lệnh dùng trong terminal: git rm --cached <file>. Tuy nhiên, bạn sẽ cần đọc thêm về nó riêng.

Quy tắc cho .gitignore

Trong tệp .gitignore, bạn chỉ định các mẫu tên tệp và thư mục mà Git phải bỏ qua.

Dòng trống sẽ bị bỏ qua. Để thêm chú thích, bắt đầu dòng bằng ký tự #.

Mẫu (patterns):

  • * — thay thế bất kỳ số lượng ký tự nào. Ví dụ, *.log sẽ bỏ qua tất cả tệp có phần mở rộng .log.
  • / — ở cuối mẫu có nghĩa là thư mục. Ví dụ, logs/ sẽ bỏ qua toàn bộ nội dung của thư mục logs.
  • ! — ở đầu dòng sẽ đảo ngược quy tắc. Ví dụ, nếu bạn có quy tắc *.log nhưng muốn theo dõi important.log, hãy thêm dòng !important.log.
  • ** — khớp với bất kỳ số lượng thư mục lồng nhau. Ví dụ, **/temp sẽ bỏ qua các thư mục temp ở mọi cấp độ lồng nhau.

Ví dụ tệp .gitignore


# Mã đã biên dịch
/bin/
/obj/

# Tệp tạm
*.tmp
*.swp

# Nhật ký
*.log

# Thư mục do IDE tạo
.idea/
*.user
*.suo

# Môi trường ảo và phụ thuộc
/venv/
/node_modules/

Mẫu có sẵn

Bạn không cần viết những tệp này từ đầu. Có những mẫu có sẵn và đã được cộng đồng kiểm chứng:

  1. Bộ sưu tập .gitignore của GitHub cho nhiều ngôn ngữ và framework: https://github.com/github/gitignore.
  2. gitignore.io — dịch vụ web tiện lợi tạo tệp .gitignore theo công nghệ bạn dùng.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION