CodeGym /Các khóa học /C# SELF /Giới thiệu về Git: tại sao cần kiểm soát phiên bản

Giới thiệu về Git: tại sao cần kiểm soát phiên bản

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

1. Vấn đề khi không có kiểm soát phiên bản: tại sao chỉ sao chép file — không phải ý hay

Hãy bắt đầu từ tình huống thực tế. Hãy tưởng tượng bạn đang làm dự án C# của mình. Mọi thứ ổn cho tới khi đến giai đoạn "thử nghiệm". Bạn quyết định thay đổi gì đó, nhưng sợ làm hỏng bản working. Phải làm sao? Tất nhiên là sao chép dự án!

Kết quả là trên ổ đĩa của bạn xuất hiện những kiệt tác như sau:

MyProject/
├── Main.cs
├── Main_backup.cs
├── Main_final.cs
├── Main_final2.cs
├── Main_tochno_final.cs
├── Main_tochno_tochno_final.cs

Quen thuộc chứ? Giờ hãy tưởng tượng có thêm một người bạn tham gia vào dự án. Anh ta cũng thích sao chép file — nhưng theo cách của anh ta. Làm sao biết phiên bản nào mới nhất và chạy ổn? Làm sao biết ai đã thay đổi gì? Làm sao quay lại nếu thử nghiệm thất bại?

Không có kiểm soát phiên bản:

  • Dễ mất hoặc nhầm lẫn code hoạt động.
  • Không thể "rollback" về phiên bản cũ.
  • Khó làm việc theo nhóm hai ba người.
  • Hỗn độn và sợ thử nghiệm.

Chính những vấn đề này được các hệ thống kiểm soát phiên bản giải quyết — ví dụ như Git.

2. Tại sao lập trình viên cần Git?

Git — là một hệ thống quản lý phiên bản mạnh mẽ, được dùng để theo dõi thay đổi trong source code trong quá trình phát triển phần mềm. Nó cho phép lập trình viên lưu nhiều phiên bản của file và phối hợp công việc của nhiều người trên cùng một dự án.

Những khái niệm cơ bản của Git:

Repository

Repository (hay "repo") — là nơi lưu toàn bộ lịch sử của dự án, bao gồm mọi thay đổi và phiên bản của các file.

Commits

commit — là trạng thái đã được lưu của dự án. Mỗi commit trong Git chứa thông tin về những thay đổi đã được thực hiện trên dự án, ai đã làm và khi nào. Các commit tạo thành lịch sử của dự án và cho phép quay lại bất kỳ phiên bản trước nào.

        gitGraph
        commit id: "1"
        commit id: "2"
        commit id: "3"
        commit id: "4"
        commit id: "5"
        commit id: "6"
    

Mỗi commit là một "snapshot" của dự án, nối tiếp nhau để tạo thành chuỗi lịch sử thay đổi.

Branches

branch — là dòng phát triển độc lập. Mặc định Git tạo branch main. Bạn có thể tạo branch mới để phát triển feature hoặc sửa lỗi, rồi merge chúng trở lại branch chính.

        gitGraph
        commit id: "1"
        commit id: "2"
        branch develop
        commit id: "3"
        commit id: "4"
        commit id: "5"
        checkout main
        commit id: "6"
        commit id: "7"
        merge develop
        commit id: "8"
        commit id: "9"
    

Từ branch chính main tách ra branch develop để phát triển song song. Sau khi hoàn thành, thay đổi từ develop được merge về main.

3. Các lệnh cơ bản của Git (những gì ở dưới nắp)

Dưới đây là danh sách các lệnh cơ bản để làm việc với Git qua terminal. Quan trọng là hiểu các lệnh này là nền tảng cho mọi thao tác. Tuy nhiên chúng ta sẽ theo cách tiếp cận GUI và học cách thực hiện tất cả các hành động này bằng GUI tiện lợi của IntelliJ IDEA. Hãy xem các lệnh này như những gì diễn ra "dưới nắp".

Lệnh Mô tả
git init Khởi tạo một Git-repository mới trong thư mục hiện tại.
git clone Clone repository từ URL vào thư mục mới.
git add Thêm file vào index để chuẩn bị cho commit tiếp theo.
git commit Ghi các thay đổi đã chuẩn bị vào repository.
git push Đẩy thay đổi từ repository local lên remote.
git pull Cập nhật branch hiện tại với phiên bản mới nhất từ remote repository.
git branch Hiển thị, tạo hoặc xóa branch.
git merge Merge thay đổi từ branch được chỉ định vào branch hiện tại.

Những lệnh này là công cụ cơ bản để làm việc với Git, cho phép quản lý thay đổi code, branch và merge trong các dự án mọi kích thước.

        sequenceDiagram
        participant Thu_muc_lam_viec
        participant Vung_indexing_Staging
        participant Repo_cuc_bo
        participant Repo_tu_xa

        Thu_muc_lam_viec ->> Vung_indexing_Staging: git add (Chuẩn_bị)
        Vung_indexing_Staging ->> Repo_cuc_bo: git commit (Luu_locally)
        Repo_cuc_bo ->> Repo_tu_xa: git push (Đẩy_lên_server)
        Repo_tu_xa ->> Thu_muc_lam_viec: git pull (Tải_bản_cập_nhật)
    

4. Ba nơi lưu mã nguồn

Khi bạn dùng hệ thống kiểm soát phiên bản cho mã nguồn, tóm lại mã của bạn sẽ được lưu ở ba nơi:

1. Remote repository

Đây là nơi tập trung để lưu mã của bạn, thường được host trên các dịch vụ như GitHub, GitLab hoặc Bitbucket. Chúng cung cấp lưu trữ tập trung và là nền tảng cho làm việc cộng tác. Remote repository là điểm tích hợp cho các quy trình tự động như build, test và deploy ứng dụng.

2. Local repository

Local repository — là bản sao cá nhân của mã, lưu trên máy tính của bạn. Trong repo này bạn có thể thực hiện mọi thao tác với Git (commit, branch, merge) mà không cần kết nối Internet.

3. Working directory

Working directory trên máy bạn chứa các file hiện tại của dự án mà bạn đang làm. Đây là nơi bạn thấy và chỉnh sửa file, thêm tính năng mới hoặc sửa bug.

Những thành phần này cùng nhau tạo thành hạ tầng mạnh mẽ để quản lý source code, cho phép lập trình viên theo dõi lịch sử dự án và hợp tác hiệu quả.

5. GitHub — portfolio của bạn

GitHublà nền tảng web hàng đầu để host source code, sử dụng hệ thống kiểm soát phiên bản Git. Thành lập năm 2008, nó nhanh chóng trở thành một trong những công cụ then chốt cho lập trình viên toàn cầu.

GitHub cho phép người dùng tạo repository để quản lý dự án, kiểm soát và theo dõi thay đổi trong code và cộng tác với các lập trình viên khác. Với lập trình viên hiện đại, profile trên GitHub là phần quan trọng của portfolio, thứ bạn có thể show cho nhà tuyển dụng tiềm năng.

6. Tạo repository đầu tiên trên GitHub

Bước 1. Vào https://github.com và đăng ký.

Bước 2. Nhấn nút New repository để tạo repository mới.

Bước 3. Thiết lập các tham số cho repository:

  1. Tên repository: nghĩ một cái tên có ý nghĩa.
  2. Công khai hay riêng tư: cho project học tập tốt nhất chọn "Public" để người khác có thể xem.
  3. Add a README file: nhớ tick mục này. README là "bộ mặt" của project.
  4. Add .gitignore: bấm dropdown và chọn template phù hợp cho ngôn ngữ của bạn.
  5. Choose a license: có thể bỏ qua.
  6. Nhấn Create repository.

Bước 4. Chúc mừng, remote repository đầu tiên của bạn đã được tạo!

7. Cài đặt và cấu hình Git

Dù có thể học Git qua các lệnh console (như trong video), trong công việc hằng ngày 99% lập trình viên dùng các công cụ tích hợp trong IDE. Mục tiêu của chúng ta là dạy bạn làm việc như các chuyên gia.

Giao diện làm việc với Git trong tất cả IDE hiện đại của JetBrains — dù là IntelliJ IDEA cho Java/Kotlin, Rider cho C# hay PyCharm cho Python — gần như giống hệt nhau. Điều này có nghĩa là khi bạn biết cách làm việc với Git trong một IDE, bạn có thể dễ dàng áp dụng kỹ năng đó ở IDE khác. Vì vậy chúng ta sẽ dùng IntelliJ IDEA làm ví dụ chung. Mọi thứ bạn thấy ở đây sẽ trông và hoạt động giống hệt trong IDE bạn yêu thích.

Để dùng Git trên máy, trước tiên bạn phải cài Git. Nếu bạn dùng IntelliJ IDEA, IDE có thể đề nghị cài Git tự động nếu không tìm thấy trong hệ thống. Chúng tôi khuyến nghị đồng ý — đó là cách đơn giản nhất.

Đóng project hiện tại bằng cách chọn File > Close Project, rồi nhấn Clone Repository.

Nếu bạn muốn cài thủ công, dùng trang chính thức: https://git-scm.com/downloads.

8. Một chút lịch sử: main vs master

Trước đây branch mặc định trong Git gọi là master. Tuy nhiên vào năm 2020 cộng đồng phát triển và các nền tảng lớn, bao gồm GitHub, đã chuyển sang dùng thuật ngữ trung lập hơn — main.

Điều này quan trọng vì trong một số bài viết hay dự án cũ bạn vẫn có thể thấy nhắc tới branch master. Trong bài giảng của chúng ta và trong các dự án hiện đại, branch chính luôn là main.

Chi tiết về việc chuyển sang main có thể xem ở các link sau:

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION