TỔNG HỢP KIẾN THỨC GIT CƠ BẢN
1. Git là gì?
Git là một hệ thống quản lý phiên bản phân tán (Distributed Version Control System – DVCS), được sử dụng để lưu trữ, quản lý và theo dõi những thay đổi trong mã nguồn, dữ liệu và các tệp tin của một dự án.
Git cho phép lập trình viên theo dõi lịch sử chỉnh sửa, khôi phục các phiên bản trước đó và phối hợp làm việc với nhiều thành viên trong cùng một dự án.
1.1. Vì sao cần sử dụng Git?
Khi lập trình cá nhân, việc quản lý mã nguồn tương đối đơn giản. Tuy nhiên, khi làm việc nhóm, đặc biệt với các dự án có nhiều thành viên, việc đồng bộ và quản lý mã nguồn sẽ trở nên phức tạp.
Nếu chỉ sử dụng các phương pháp truyền thống như gửi mã nguồn qua mạng hoặc sao chép bằng USB, nhóm có thể gặp phải những vấn đề sau:
- Không đồng bộ phiên bản: Một thành viên cập nhật mã nguồn nhưng không thông báo cho những người còn lại, dẫn đến tình trạng mỗi người sử dụng một phiên bản khác nhau.
- Trùng lặp mã nguồn: Nhiều thành viên cùng chỉnh sửa một đoạn code, gây khó khăn khi kết hợp các phần mã nguồn lại với nhau.
- Khó khôi phục mã nguồn: Một đoạn code đang hoạt động bình thường bị chỉnh sửa thành lỗi, nhưng nhóm không lưu lại phiên bản cũ nên khó khôi phục.
- Khó theo dõi lịch sử chỉnh sửa: Không dễ xác định ai đã chỉnh sửa, chỉnh sửa nội dung nào và thay đổi đó được thực hiện vào thời điểm nào.
- Khó khăn trong quá trình làm việc nhóm: Việc chia sẻ và tổng hợp mã nguồn thủ công mất nhiều thời gian, đặc biệt khi dự án có nhiều thành viên.
Git được tạo ra để giải quyết những vấn đề trên, giúp việc quản lý mã nguồn trở nên có tổ chức, thuận tiện và an toàn hơn.
1.2. Lợi ích của Git
- Quản lý phiên bản: Lưu trữ lịch sử các thay đổi và cho phép xem lại những phiên bản trước của dự án.
- Khôi phục dữ liệu: Hỗ trợ khôi phục mã nguồn về các trạng thái đã được lưu trước đó khi phát sinh lỗi.
- Theo dõi thay đổi: Ghi nhận thông tin về những lần cập nhật mã nguồn, bao gồm người thực hiện và nội dung thay đổi.
- Hỗ trợ làm việc nhóm: Cho phép nhiều lập trình viên phát triển các phần khác nhau của cùng một dự án.
- Đồng bộ mã nguồn: Hỗ trợ chia sẻ và cập nhật mã nguồn giữa các máy tính thông qua kho lưu trữ từ xa.
- Phân tán và sao lưu: Mỗi bản sao đầy đủ của Repository đều có thể chứa lịch sử dự án, giúp tăng khả năng phục hồi khi xảy ra sự cố.
2. Repository trong Git
Repository (kho lưu trữ) là nơi chứa các thông tin cần thiết để Git quản lý dự án, bao gồm mã nguồn, dữ liệu, lịch sử thay đổi và các thông tin liên quan đến phiên bản.
Git có hai loại Repository chính:
2.1. Local Repository
Local Repository (kho lưu trữ cục bộ) là kho lưu trữ Git được tạo và quản lý trực tiếp trên máy tính cá nhân của lập trình viên.
Đặc điểm:
- Nằm trên máy tính cá nhân.
- Lưu trữ mã nguồn và lịch sử thay đổi của dự án.
- Cho phép thực hiện các thao tác như thêm tệp, lưu phiên bản, xem lịch sử và khôi phục mã nguồn.
- Có thể hoạt động mà không cần kết nối Internet.
2.2. Remote Repository
Remote Repository (kho lưu trữ từ xa) là kho lưu trữ được đặt trên máy chủ hoặc dịch vụ trực tuyến, cho phép nhiều lập trình viên chia sẻ và đồng bộ mã nguồn.
Một số nền tảng lưu trữ Repository phổ biến:
- GitHub: Nền tảng lưu trữ và quản lý mã nguồn sử dụng Git, hỗ trợ cộng tác và quản lý dự án.
- GitLab: Nền tảng quản lý mã nguồn và hỗ trợ quy trình phát triển phần mềm, tích hợp các công cụ CI/CD.
- Bitbucket: Nền tảng lưu trữ mã nguồn Git, hỗ trợ quản lý dự án và cộng tác nhóm.
2.3. Mối quan hệ giữa Local Repository và Remote Repository
Local Repository và Remote Repository có thể trao đổi dữ liệu với nhau thông qua các thao tác đồng bộ.
Ví dụ:
- Lập trình viên chỉnh sửa mã nguồn trên máy tính và lưu lại các thay đổi vào Local Repository.
- Sau đó, lập trình viên đẩy các thay đổi lên Remote Repository để chia sẻ với các thành viên khác.
- Các thành viên trong nhóm có thể tải những thay đổi mới từ Remote Repository về máy tính của mình.
Một ưu điểm quan trọng của Git là mỗi bản sao Repository được sao chép đầy đủ thường chứa cả lịch sử phiên bản. Vì vậy, nếu máy chủ gặp sự cố, dữ liệu và lịch sử dự án vẫn có thể được khôi phục từ một bản sao đầy đủ khác.
3. Cơ chế hoạt động của Git
Git sử dụng cơ chế quản lý phiên bản dựa trên những thay đổi và các trạng thái được lưu lại của dự án.
3.1. Theo dõi thay đổi
Khi lập trình viên thêm, sửa hoặc xóa tệp trong dự án, Git có thể phát hiện những thay đổi đó.
Git sử dụng các cơ chế lưu trữ hiệu quả, trong đó có việc lưu trữ và tái sử dụng dữ liệu để tránh phải nhân bản toàn bộ nội dung của dự án cho mỗi lần cập nhật.
Điều này giúp tối ưu không gian lưu trữ và hỗ trợ quản lý lịch sử phiên bản.
3.2. Snapshot
Snapshot (ảnh chụp trạng thái) là khái niệm quan trọng trong Git, dùng để mô tả trạng thái của dự án tại một thời điểm được lưu lại.
Khi thực hiện một lần Commit, Git ghi nhận trạng thái của các tệp đã được đưa vào vùng chuẩn bị (Staging Area).
Đặc điểm:
- Mỗi Commit lưu lại một trạng thái của dự án.
- Có thể xem lại lịch sử các Commit để theo dõi quá trình phát triển.
- Có thể sử dụng các Commit trước đó để khôi phục hoặc đối chiếu mã nguồn.
- Git có thể tái sử dụng những dữ liệu không thay đổi giữa các phiên bản nhằm tiết kiệm dung lượng.
Nhờ cơ chế này, lập trình viên có thể quay lại những trạng thái đã lưu khi cần thiết.
4. Sử dụng Git Bash
Git Bash là một môi trường dòng lệnh được cài đặt cùng Git trên Windows. Công cụ này cung cấp các lệnh để thao tác với Git và thực hiện một số tác vụ quản lý tệp, thư mục.
4.1. Mở Git Bash
Có thể mở Git Bash bằng cách:
- Nhấn chuột phải vào một thư mục hoặc vị trí trống trong File Explorer.
- Chọn Open Git Bash Here nếu tùy chọn này xuất hiện.
Ngoài ra, có thể mở Git Bash từ menu Start của Windows.
4.2. Kiểm tra phiên bản Git
Sử dụng lệnh:
git –version
Lệnh này hiển thị phiên bản Git đang được cài đặt trên máy tính.
5. Thiết lập danh tính người dùng trong Git
Trước khi bắt đầu làm việc với Git, cần khai báo tên và địa chỉ email của người thực hiện các Commit.
Thông tin này được Git sử dụng để ghi nhận tác giả của mỗi lần lưu phiên bản.
5.1. Thiết lập tên người dùng
Cú pháp:
git config –global user.name “Tên người dùng”
- git config: Lệnh dùng để xem hoặc thay đổi cấu hình Git.
- –global: Áp dụng cấu hình cho tất cả Repository của người dùng hiện tại trên máy tính.
- name: Tên tác giả được ghi nhận trong các Commit.
5.2. Thiết lập địa chỉ email
Cú pháp:
git config –global user.email “[email protected]”
Nên sử dụng địa chỉ email liên kết với tài khoản GitHub để việc hiển thị các Commit trên GitHub được thuận tiện.
5.3. Kiểm tra thông tin cấu hình
Sử dụng lệnh:
cat ~/.gitconfig
Lệnh này hiển thị nội dung tệp cấu hình Git toàn cục trên Git Bash.
Qua đó, có thể kiểm tra lại tên và email đã được thiết lập chính xác hay chưa.
6. Tạo Local Repository
Sau khi cài đặt Git và thiết lập danh tính người dùng, có thể bắt đầu tạo một Local Repository cho dự án.
6.1. Tạo thư mục dự án
Sử dụng lệnh:
Bash
mkdir MyProject
Trong đó:
- mkdir: Lệnh tạo thư mục mới.
- MyProject: Tên thư mục muốn tạo.
Lệnh trên sẽ tạo một thư mục có tên MyProject tại vị trí hiện tại.
6.2. Di chuyển vào thư mục dự án
Sử dụng lệnh:
Bash
cd MyProject
Trong đó:
- cd: Lệnh thay đổi thư mục làm việc hiện tại.
- MyProject: Thư mục muốn truy cập.
Sau khi thực hiện, vị trí làm việc hiện tại sẽ nằm bên trong thư mục MyProject.
6.3. Khởi tạo Repository
Sử dụng lệnh:
Bash
git init
Lệnh này khởi tạo một Repository Git mới ngay tại thư mục hiện tại.
Ví dụ thông báo:
Initialized empty Git repository in /…/MyProject/.git/
Sau khi thực hiện, Git tạo một thư mục ẩn có tên .git bên trong thư mục dự án.
Vai trò của thư mục .git:
- Lưu trữ thông tin cấu hình riêng của Repository.
- Quản lý lịch sử các Commit.
- Lưu trữ dữ liệu và thông tin cần thiết để Git theo dõi phiên bản.
- Quản lý các nhánh và những thành phần nội bộ khác của Git.
Thông thường, không cần chỉnh sửa trực tiếp nội dung bên trong thư mục .git. Người dùng chỉ cần thao tác với các tệp dự án thông qua những lệnh Git.
7. Thêm tệp vào Repository bằng Git Add
Sau khi khởi tạo Repository, có thể thêm các tệp dự án vào Git để chuẩn bị lưu phiên bản.
Ví dụ, trong thư mục MyProject, tạo hoặc sao chép một tệp hình ảnh có tên sample.jpeg.
7.1. Sử dụng lệnh Git Add
Cú pháp:
git add tên_tệp
7.2. Staging Area là gì?
Staging Area là khu vực trung gian giúp lập trình viên lựa chọn những thay đổi sẽ được đưa vào Commit tiếp theo.
Đặc điểm:
- Cho phép lựa chọn các tệp cần lưu phiên bản.
- Có thể đưa nhiều tệp vào Staging Area trước khi Commit.
- Giúp kiểm soát chính xác những thay đổi sẽ được ghi nhận trong một Commit.
Ngoài việc thêm từng tệp riêng lẻ, có thể sử dụng:
git add .
Lệnh này đưa các thay đổi phù hợp trong thư mục hiện tại và các thư mục con vào Staging Area.
8. Lưu phiên bản bằng Git Commit
Sau khi đưa các thay đổi vào Staging Area, cần thực hiện Commit để lưu lại trạng thái của những thay đổi đã được chuẩn bị.
8.1. Sử dụng lệnh Git Commit
Cú pháp:
git commit -m “Thông điệp mô tả”
8.2. Vai trò của Commit
Commit là một bản ghi lưu lại trạng thái của dự án tại một thời điểm nhất định.
Mỗi Commit thường bao gồm:
- Mã định danh duy nhất.
- Thông tin tác giả.
- Thời gian tạo.
- Thông điệp mô tả.
- Tham chiếu đến trạng thái dữ liệu của dự án.
- Liên kết đến Commit trước đó trong lịch sử.
Lưu ý: Git Commit chỉ lưu các thay đổi trong Local Repository. Để chia sẻ những thay đổi này lên Remote Repository, cần sử dụng thêm lệnh git push.
9. Kiểm tra trạng thái Repository bằng Git Status
Sau khi thực hiện Git Add và Git Commit, có thể kiểm tra trạng thái hiện tại của Repository.
9.1. Sử dụng lệnh Git Status
git status
Lệnh này hiển thị thông tin về trạng thái của thư mục làm việc và Staging Area.
Thông tin thường bao gồm:
- Nhánh hiện tại đang sử dụng.
- Các tệp đã được chỉnh sửa nhưng chưa đưa vào Staging Area.
- Các tệp đã được đưa vào Staging Area nhưng chưa Commit.
- Các tệp chưa được Git theo dõi.
- Trạng thái đồng bộ giữa các thay đổi hiện tại và Commit gần nhất.
9.2. Ý nghĩa của thông báo Working Tree Clean
Ví dụ kết quả:
On branch master
nothing to commit, working tree clean
Ý nghĩa:
- On branch master: Repository hiện đang ở nhánh master.
- nothing to commit: Không có thay đổi nào đang chờ được Commit.
- working tree clean: Thư mục làm việc không có thay đổi chưa được ghi nhận so với trạng thái đã lưu.
Kết quả này cho thấy các thay đổi đã được Commit và hiện tại không có thay đổi mới cần xử lý.
Lưu ý: nếu .env đã có trong .gitignore thì khi git status vẫn hiển thị:
On branch master
nothing to commit, working tree clean
10. Branch trong Git
Branch (nhánh) là một khái niệm quan trọng trong Git, cho phép phát triển các tính năng hoặc sửa lỗi độc lập mà không cần chỉnh sửa trực tiếp trên cùng một nhánh.
10.1. Nhánh mặc định
Khi khởi tạo Repository, Git tạo một nhánh ban đầu. Tên nhánh mặc định có thể là master hoặc main, tùy theo cấu hình.
10.2. Vai trò của Branch
- Cho phép phát triển nhiều tính năng song song.
- Hỗ trợ các thành viên làm việc trên những phần khác nhau của dự án.
- Giúp tách biệt quá trình phát triển tính năng với mã nguồn ổn định.
- Hỗ trợ kiểm tra và tích hợp các thay đổi trước khi đưa vào nhánh chính.
Một số lệnh Branch cơ bản:
git branch: Liệt kê các nhánh hiện có.
git branch feature-login: Tạo một nhánh mới có tên feature-login.
git checkout feature-login: Chuyển sang nhánh feature-login.
git merge feature-login: Hợp nhất các thay đổi từ nhánh feature-login vào nhánh hiện tại.
11. Tổng hợp các lệnh Git cơ bản
| Lệnh | Chức năng |
| git –version | Kiểm tra phiên bản Git đang sử dụng. |
| git config –global user.name “Tên” | Thiết lập tên người dùng trên toàn hệ thống Git của tài khoản hiện tại. |
| git config –global user.email “Email” | Thiết lập email người dùng trên toàn hệ thống Git của tài khoản hiện tại. |
| cat ~/.gitconfig | Xem nội dung tệp cấu hình Git toàn cục trên Git Bash. |
| mkdir MyProject | Tạo thư mục mới có tên MyProject. |
| cd MyProject | Di chuyển vào thư mục MyProject. |
| git init | Khởi tạo Repository Git mới. |
| git add sample.jpeg | Đưa tệp sample.jpeg vào Staging Area. |
| git add . | Đưa các thay đổi phù hợp trong thư mục hiện tại vào Staging Area. |
| git commit -m “Thông điệp” | Tạo Commit mới với thông điệp mô tả. |
| git status | Kiểm tra trạng thái hiện tại của Repository. |
| git branch | Liệt kê các nhánh hiện có. |
| git branch tên_nhánh | Tạo nhánh mới. |
| git checkout tên_nhánh | Chuyển sang nhánh được chỉ định. |
| git merge tên_nhánh | Hợp nhất nhánh được chỉ định vào nhánh hiện tại. |
| clear | Xóa nội dung đang hiển thị trên Git Bash. |
12. Quy trình thực hành Git cơ bản
Bước 1: Kiểm tra Git
git –version
Bước 2: Thiết lập danh tính
git config –global user.name “Vu Tien”
git config –global user.email “[email protected]”
Bước 3: Tạo thư mục dự án
mkdir MyProject
cd MyProject
Bước 4: Khởi tạo Repository
git init
Bước 5: Thêm tệp vào dự án
Sao chép tệp hehe.jpeg vào thư mục MyProject.
Bước 6: Đưa tệp vào Staging Area
git add hehe.jpeg
Bước 7: Tạo Commit
git commit -m “upload an image”
Bước 8: Kiểm tra trạng thái Repository
git status
Nếu kết quả hiển thị:
On branch master
nothing to commit, working tree clean
Có nghĩa là Repository hiện không có thay đổi nào đang chờ được Commit.
14. Kết luận
Git là công cụ quản lý phiên bản quan trọng trong quá trình phát triển phần mềm, đặc biệt đối với các dự án có nhiều thành viên tham gia.
Thông qua Git, lập trình viên có thể quản lý lịch sử mã nguồn, theo dõi các thay đổi, khôi phục những phiên bản trước đó và phối hợp làm việc với các thành viên khác.
Trong nội dung cơ bản, các kiến thức trọng tâm bao gồm:
- Khái niệm và vai trò của Git.
- Những lợi ích của việc sử dụng Git trong lập trình cá nhân và làm việc nhóm.
- Phân biệt Local Repository và Remote Repository.
- Cơ chế quản lý phiên bản dựa trên Snapshot và Commit.
- Cài đặt và sử dụng Git Bash trên Windows.
- Thiết lập tên và email người dùng.
- Khởi tạo Local Repository bằng git init.
- Đưa tệp vào Staging Area bằng git add.
- Lưu phiên bản bằng git commit.
- Kiểm tra trạng thái Repository bằng git status.
- Khái niệm cơ bản về Branch và một số lệnh thao tác với nhánh.
Đây là nền tảng cần thiết trước khi tìm hiểu các nội dung nâng cao hơn như kết nối GitHub, đồng bộ mã nguồn giữa Local Repository và Remote Repository, làm việc với nhiều nhánh, xử lý xung đột và cộng tác trong các dự án thực tế.



Khoá học lập trình game con rắn cho trẻ em




