NỘI DUNG BÀI HỌC
✅ Hướng dẫn cài đặt để sử dụng Git
✅ Các câu lệnh cơ bản của Git
✅ Quy trình cơ bản khi làm việc với Git
✅ Giới thiệu về .gitignores
1. TỔNG QUAN VỀ GIT

Khái niệm về git
-
-
-
- Git là hệ thống kiểm soát phiên bản phân tán mã nguồn mở và miễn phí được thiết kế để xử lý mọi thứ từ các dự án nhỏ đến rất lớn một cách nhanh chóng và hiệu quả (Định nghĩa trên trang chủ Git SCM)
-
-
Ưu điểm của git
-
-
-
- Giúp quản lý mã nguồn đơn giản, an toàn và dễ sử dụng
- Quản lý source code cho một nhóm hiệu quả bằng cách chia và kết hợp các nhánh
- Dễ dàng tích hợp với chu trình CI/CD
- Có thể dễ dàng lấy source code ở bất kỳ đâu
-
-
Khái niệm về git server
-
-
-
- Là một máy chủ sử dụng các dịch vụ git. Mọi thông tin, lịch sử làm việc, phiên bản, v.v... với source code sẽ được lưu ở trên này
- Một số git server nổi tiếng: GitHub, GitLab, Bitbucket, Azure Repos (thuộc platform Microsoft Azure DevOps), v.v...
-
-
Repository là gì?
-
-
-
- Được hiểu như một kho lưu trữ mã nguồn (source code) và tất cả thông tin, lịch sử làm việc của một project
- Có 2 loại repository:
- Remote Repository: Repository được đặt trên git server và chia sẻ cho tất cả mọi người
- Local Repository: Repository ở máy tính cá nhân của mỗi người. Nó được hình thành khi clone từ remote repository về máy tính cá nhân của mình
-
-

Branch là gì?
-
-
-
- Mỗi một remote repository khi được tạo ra sẽ có một nhánh(branch) mặc định là main(một số git server sẽ là master). Nhánh này thường sẽ là được coi như sản phẩm cuối cùng để triển khai sản phẩm (đối với dev sẽ dùng để deploy phiên bản lên môi trường, auto test dùng để thực thi script khi tích hợp vào chu trình CI/CD)
- Để team phát triển source code có một khu vực làm việc riêng mà không bị ảnh hưởng đến sản phẩm chính, chúng ta cần tạo một nhánh khác được lấy nguồn từ nhánh main/master.
- Hiểu một cách đơn giản, Branch sẽ tạo ra cho cả team một không gian riêng để thực hiện công việc phát triển source code mà không ảnh hưởng đến sản phấm chính đang tồn tại và ổn định.
- Có 2 loại branch:
- Remote branch: Là nhánh được lưu trữ trên git server và chia sẻ cho tất cả mọi người
- Local branch: Là nhánh được lưu trữ trên máy tính cá nhân của mỗi người. Nó được hình thành từ việc checkout từ một nhánh trên remote. Nó có thể liên kết với nhánh trên remote hoặc không.
-
-
2. CÁC BƯỚC CÀI ĐẶT GIT
-
-
- Bước 1: cài đặt phần mềm Git SCM: https://git-scm.com/download/ . Khi cài sẽ có Git Bash.
- Bước 2: đăng ký tài khoản trên dịch vụ GitHub để lưu trữ source code:
- Truy cập https://github.com
- Đăng ký bằng email, chọn username.
- Xác thực email.
- Bước 3: Đăng nhập và tạo repository trên GitHub và kết nối với máy tính Windows
-
Để kiểm tra Git đã cài đặt thành công:
git --version
Cấu hình thông tin cá nhân cho git
git config --global user.name "chuot.beo.tester"
git config --global user.email "chuot.beo.di.test@gmail.com"
3. MỘT SỐ CÂU LỆNH CƠ BẢN CỦA GIT
# Tải một remote repository từ git server về máy.
git clone
# Kiểm tra tình trạng của repo, xem file nào đã thay đổi.
git status
# Đưa vào vùng stage trên máy tính.
git add
# Đóng gói toàn bộ vùng stage trên máy tính và ghi vào nhật ký
git commit
# Đẩy tất cả các commit từ máy mình lên repository lên git server.
git push
# Cập nhật các thay đổi mới nhất từ git server về máy.
git pull
# Chuyển đổi các phiên bản làm việc
git checkout
# Kiểm tra branch
git branch
4. QUY TRÌNH LÀM VIỆC CƠ BẢN VÀ TỔNG QUAN CỦA GIT
-
-
- Dành cho người mới join vào project
- git clone: Để tải source code trên remote repository
- git checkout: Chuyển đổi về branch mình sẽ thực hiện làm việc
- Thực hiện lần thứ hai về sau:
- git pull: cập nhật source code từ nhánh làm việc chung của cả team
- Sau khi hoàn thành việc phát triển source code
- git pull: cập nhật lại thay đổi của source code trên nhánh làm việc chung của cả team. Nếu có conflict thì xử lý conflict
- git add: thêm phần đã chỉnh sửa vào stage
- git commit: Đóng gói stage
- git push: Đẩy commit lên git server
- Tạo pull request từ remote branch của cá nhân đến remote phát triển chung của cả team
- Dành cho người mới join vào project
-
Xử lý conflict:
-
- Khi conflict xảy ra, trên tại những dòng source code của bạn có xung đột xảy ra sẽ có những dòng báo lỗi như sau:
Project Members:
- Alice
<<<<<<< HEAD
- An
=======
- Binh
>>>>>>> feature/add-binh
-
- Ý nghĩa của các dòng này như sau:
=======: Ranh giới.
>>>>>>> feature/add-binh: Kết thúc phần code từ nhánh bạn đang cố trộn vào.
-
- Lúc này bạn có thể chấp nhận việc các dòng được nêu trên đồng thời sửa theo mong muốn của bạn (nếu xóa đi dòng code nào tốt nhất nên trao đổi với Leader về quyết định của bạn)
5. GITIGNORE LÀ GÌ?
-
- gitignore là file có tên là .gitignore do Git quy định. Nhiệm vụ của nó là liệt kê những file mà mình không mong muốn cho vào git hoặc hiểu nôm na là Git sẽ bỏ qua những file đó đi không mang lên dịch vụ lưu trữ source code. VD: Các file trong folder Report
Một số kiểu format trong .gitignore
-
-
-
- Sử dụng dấu # để comment và có thể để cách dòng cho dễ đọc.
- Format cho các file có tên cụ thể: jdk.exe, source.zip, record.mp4,...
- Format dành cho loại bỏ cả thư mục: example_folder/
- Khi ignore thư mục nên có dấu / ở sau tên thư mục để nhận biết đó là thư mục, nếu không nó có thể là coi là thư mục hoặc file hay symbolic link.
- Dấu ! phía trước có ý nghĩa phủ định: !abc/example.exe nghĩa là không loại bỏ file cụ thể example.exe
- Sử dụng dấu * để tìm các file có cùng định dạng. Ví dụ như bạn muốn ignore tất cả các file .xml trong project: *.xml
- Trường hợp khác của * nếu bạn chỉ rõ đường dẫn ví dụ: config/*.xml thì nó chỉ có hiệu lực cho các file config/abc.xml mà không có hiệu lực cho các file config/sub/abc.xml.
- Sử dụng dấu ** để có hiệu lực cho các thư mục không cần định rõ tên. Ví dụ: **/report nó sẽ có hiệu lực cho tất cả file hoặc thư mục có tên là report ở mọi nơi trong project.
- Hay sử dụng kiểu folder/** để có hiệu lực cho tất cả các file bên trong thư mục.
-
-
