CodeGym /Các khóa học /C# 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

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

1. Bắt đầu làm việc: clone project

Bắt đầu từ chỗ chúng ta dừng ở bài trước. Bạn có một repository được tạo trên GitHub, và giờ bạn cần lấy bản sao cục bộ về máy để bắt đầu làm việc. Quá trình này gọi là clone.

Bước 1. Khởi động IDE của bạn. Nếu đang mở một project nào đó, đóng nó bằng File -> Close Project. Trên cửa sổ khởi động chọn Clone Repository hoặc Get from VCS.

Bước 2. Ở cửa sổ mở ra dán URL repository của bạn. Cách này hữu ích nếu bạn clone repository của người khác. URL có thể copy 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), tiện nhất là đăng nhập vào tài khoản GitHub trực tiếp từ IDE. Để làm việc này chọn tùy chọn Log in to GitHub. IDE sẽ mở trình duyệt để xác thực.

Cửa sổ xác thực JetBrains IDE trên GitHub

Trên trang mở ra cứ nhấn nút màu xanh Authorize JetBrains. Sau đó bạn có thể chọn repository của mình ngay trong danh sách ở IDE. Chọn project cần thiết rồi nhấn Clone.

Bước 3. IDE sẽ hỏi bạn có tin tưởng project này không. Vì đây là repository của bạn, 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ố thực hiện hành động lạ. Vì ta sẽ tạo và chạy chương trình, cần cho IDE quyền 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 ngoại lệ của antivirus.

2. Lưu thay đổi: Commit

commit — là một "snapshot", hay trạng thái đã lưu của project tại một thời điểm nhất định. Hãy nghĩ nó như điểm lưu trong game: bạn luôn có thể quay về nếu có sự cố. Mỗi commit có một identifier duy nhất và một message mô tả thay đổi.

        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 xây dựng trên commit trước đó, tạo nên dòng thời gian phát triển dự án.

Bước 1. Thực hiện thay đổi.

Nếu bạn clone một repository mới tạo, nó thường chỉ chứa một file — README.md

Mở file README.md và thêm mô tả cho project của bạn. Ngay khi bắt đầu chỉnh sửa, IDE sẽ highlight tên file màu xanh trên panel project. Điều này có nghĩa file đã thay đổi nhưng chưa được lưu trong Git. IDE sẽ thêm một đường màu xanh ở nơi bạn thay đổi.

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

Bên trái trong IDE có tab Commit. Mở nó ra bạn sẽ thấy tất cả thay đổi sẵn sàng để lưu. Với commit đầu tiên cửa sổ này cần chú ý kỹ.

Ta cùng xem những gì thấy:

  • Changes: đây là các file đã được Git theo dõi nhưng đã bị thay đổi. Trong ví dụ này là README.md, nơi ta thêm kế hoạch project.
  • Unversioned Files: là các file mới mà Git thấy trong thư mục project nhưng chưa theo dõi.

Có thể bạn sẽ thắc mắc: có cần thêm tất cả các file hệ thống này vào repository không?

Tin tốt là khi tạo repository trên GitHub, chúng ta đã chọn template .gitignore. File này chứa các rule nói Git bỏ qua thư mục hoặc file không cần thiết. Về chi tiết sẽ nói kỹ ở cuối bài giảng.

Còn hiện tại nhiệm vụ của chúng ta cho commit đầu tiên — thêm tất cả file chính của project vào lịch sử và viết message cho commit.

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

Nhấn nút Commit. Xong! Bạn đã lưu "snapshot" của project vào repository cục bộ. File sẽ trở lại màu bình thường.

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

Các commit hiện chỉ nằm trên máy bạn. Để chia sẻ với đồng đội hoặc lưu trữ an toàn, cần gửi chúng lên remote repository trên GitHub.

        sequenceDiagram
        participant Локальный репозиторий (Ваш компьютер)
        participant Удаленный репозиторий (GitHub)

        note over Локальный репозиторий (Ваш компьютер): Вы сделали один или несколько коммитов.
Они существуют только здесь. Локальный репозиторий (Ваш компьютер) ->> Удаленный репозиторий (GitHub): git push (отправить коммиты) note over Удаленный репозиторий (GitHub): Ваши коммиты скопированы
и надежно сохранены на сервере.
Các commit cục bộ của bạn được gửi lên server từ xa, đồng bộ hóa lịch sử project.

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

Ở góc phải trên cùng của IDE có mũi tên xanh hướng lên — đó là nút Push. Nhấn vào nó.

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

Hộp thoại mở ra sẽ hiển thị tất cả commit chuẩn bị để gửi. Đây là cơ hội cuối cùng để chắc chắn bạn đang gửi đúng thứ cần gửi. Nhấn Push.

Nếu mọi thứ thành công, bạn sẽ thấy 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 trên GitHub. Bạn sẽ thấy thay đổi đã xuất hiện ở đó.

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

Trong IDE có menu chuyên dụng Git trên thanh trên cùng. Đây là trung tâm quản lý version của bạn. Ta nhanh qua các mục quan trọng.

  • Commit: mở cửa sổ đã quen để lưu thay đổi.
  • Push: mở cửa sổ để gửi commit lên GitHub.
  • Update Project: chức năng rất quan trọng. Nó tải các thay đổi mới từ đồng đội (thực hiện git pull). 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ủ đề này sẽ phân tích kỹ trong bài tiếp theo.
  • Show Git Log: hiển thị toàn bộ lịch sử commit của project. Máy thời gian cá nhân của bạn.

5. Sử dụng file .gitignore

Nếu bạn thêm vào project một số file hệ thống và không muốn chúng vô tình vào repository, bạn có thể đưa chúng vào danh sách ngoại lệ. Dùng file có tên .gitignore. Rất tiện khi project có file không cần lưu trong VCS (ví dụ file tạm, logs, mật khẩu).

Bước 1. Ban đầu tạo file trong thư mục project mà bạn muốn bỏ qua. Ví dụ, notes.txt. Sau khi tạo file, nếu IDE gợi ý thêm nó vào Git thì nhấn Cancel.

Bước 2. Click chuột phải vào file vừa tạo trong cửa sổ "Project". Chọn Git --> Add to .gitignore --> Add to .gitignore. Tùy chọn này thêm file đã chọn vào file .gitignore ở gốc project.

Nếu bạn chưa có file .gitignore, IDE sẽ đề nghị tạo. Chọn đồng ý.

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

Sau khi thêm vào .gitignore, các file bị bỏ qua sẽ hiển thị màu xám hoặc nâu. Khi cố commit, các file đó sẽ bị bỏ qua. Thư mục .idea có thể thêm vào ignore.

Đừng quên commit file .gitignore vào repository và push thay đổi lên GitHub để mọi thành viên dùng cùng quy tắc bỏ qua file.

Loại trừ file cục bộ: .git/info/exclude

Bên cạnh file .gitignore dùng cho tất cả người dùng project, Git cung cấp khả năng tạo rule ignore cục bộ trong file .git/info/exclude. Chúng sẽ không được commit vào repository và chỉ có hiệu lực với bản sao cục bộ của bạn.

Điều này hữu ích, ví dụ, để bỏ qua file do IDE tạo ra, những file không nên vào VCS nhưng chỉ đặc thù cho bạn.

Quan trọng! Các rule ignore cục bộ chỉ áp dụng cho bản sao cục bộ của bạn.

Còn nếu tôi đã commit rồi thì sao?

.gitignore chỉ bỏ qua các file mới chưa được theo dõi. Nếu bạn đã commit file rồi, nó đã nằm trong lịch sử repository và Git sẽ tiếp tục theo dõi nó ngay cả khi thêm vào .gitignore. Trong trường hợp đó có lệnh cho terminal: git rm --cached <file>. Nhưng lệnh này cần đọc hướng dẫn riêng.

Quy tắc cho .gitignore

Trong file .gitignore ghi các pattern tên file và thư mục mà Git cần bỏ qua.

Dòng rỗng bị bỏ qua. Để thêm comment bắt đầu dòng bằng ký tự #.

Patterns:

  • * — thay cho bất kỳ số ký tự nào. Ví dụ, *.log bỏ qua mọi file có đuôi .log.
  • / — ở cuối pattern biểu thị thư mục. Ví dụ, logs/ bỏ qua toàn bộ nội dung thư mục logs.
  • ! — đầu dòng đảo ngược rule. Ví dụ, nếu có rule *.log nhưng bạn muốn theo dõi important.log, 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 bỏ qua thư mục temp ở mọi cấp độ.

Ví dụ file .gitignore


# Скомпилированный код
/bin/
/obj/

# Временные файлы
*.tmp
*.swp

# Логи
*.log

# Папки, создаваемые IDE
.idea/
*.user
*.suo

# Виртуальные окружения и зависимости
/venv/
/node_modules/

Mẫu có sẵn

Bạn không cần tự viết từ đầu. Có những mẫu sẵn do cộng đồng kiểm chứng:

  1. Thư mục .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 để sinh file .gitignore theo tech stack của bạn.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION