Các lệnh Git cơ bản và Quản lý Commit
- 19-01-2026
- Toanngo92
- 0 Comments
Mục lục
Các lệnh Git cơ bản (Basic Git Commands)
Git là một hệ thống VCS mạnh mẽ giúp lập trình viên quản lý codebase.
git init
- Khởi tạo Git repository mới trong thư mục hiện tại
- Tạo thư mục
.gitchứa toàn bộ file cấu hình và dữ liệu của repository
Khi bắt đầu một dự án mới và muốn quản lý bằng Git, người dùng chạy git init tại thư mục gốc.
Nếu repository đã tồn tại và muốn kiểm tra hoặc cấu hình lại, có thể chạy git init lần nữa.
Ví dụ minh họa
Giả sử tạo thư mục JohnRepo.
Mở Command Prompt và chạy:
git init
Thực thi lệnh:
Lệnh git init được thực thi tại C:\Newrepo\Johnrepo.
Kết quả:
Thông báo cho biết Git repository đã được khởi tạo.
Vị trí repository:
Thư mục .git nằm tại:
C:\Newrepo\Johnrepo\.git
Khởi tạo lại Repository bằng git init

Kết quả:
Git thông báo repository đã tồn tại và được khởi tạo lại.
git clone
- Sao chép một Git repository từ server remote về máy local
- Tạo bản sao đầy đủ gồm toàn bộ lịch sử và các branch
Khi muốn làm việc với một dự án được lưu trên server, người dùng sử dụng git clone.
Ví dụ:
Giả sử repository GitHub tồn tại tại:
https://github.com/John986-creator/Johnrepo

Thực thi lệnh (Command Execution)
Lệnh:
git clone https://github.com/John986-creator/Johnrepo
được thực thi trong thư mục:
C:\Newrepo\Johnrepo
Quá trình Clone (Cloning Process)
- Khởi tạo (Initialization):
Git bắt đầu quá trình clone repository có tên Johnrepo từ URL đã cung cấp. - Liệt kê đối tượng (Object Enumeration):
Git liệt kê các đối tượng, tức là đếm số lượng đối tượng cần clone. - Đếm đối tượng (Object Counting):
Git đếm tổng số đối tượng cần clone (trong ví dụ này là 12). - Nén đối tượng (Object Compression):
Git nén các đối tượng để chuẩn bị truyền tải. - Truyền đối tượng (Object Transfer):
Git chuyển các đối tượng đã nén về máy local. - Giải quyết delta (Delta Resolution):
Git xử lý các khác biệt (delta) giữa các đối tượng đã truyền.
Kết quả (Result)
Repository đã được clone thành công vào thư mục local:
C:\Newrepo\Johnrepo
git add
- git add: Đưa các thay đổi trong thư mục làm việc (working directory) vào vùng staging để chuẩn bị cho commit tiếp theo.
- Người dùng có thể thêm từng file riêng lẻ hoặc toàn bộ thay đổi cùng lúc.
Khi người dùng chỉnh sửa file trong thư mục làm việc, họ sử dụng git add để stage các thay đổi này.
Staging là bước chuẩn bị trước khi commit vào repository.
Cú pháp:
git add <file-name>
Ví dụ sử dụng

Thực thi lệnh
Lệnh:
git add Readme.txt
được thực thi trong thư mục:
C:\Newrepo\Johnrepo
Hành động (Action)
Lệnh này đưa file Readme.txt vào vùng staging để chuẩn bị cho commit tiếp theo.
git commit
- git commit: Ghi lại các thay đổi vào repository kèm theo thông điệp mô tả.
- Lệnh này tạo một “ảnh chụp” (snapshot) của trạng thái hiện tại của dự án.
Sau khi stage thay đổi bằng git add, người dùng dùng git commit để lưu các thay đổi này vào repository, tạo ra một snapshot mới.
Cú pháp:
git commit -m "<commit message>"
Ví dụ sử dụng

Staging một file
- Lệnh
git add Readme.txtđược dùng để stage fileReadme.txt.
Commit các thay đổi
- Lệnh:
git commit -m "Hello World"
được thực thi để commit các thay đổi đã stage với thông điệp Hello World.
Kết quả của Commit (Result of Commit)
- Commit Hash:
7b8bd4flà mã hash của commit, đóng vai trò là định danh duy nhất cho commit này. - Commit Message:
Hello World là thông điệp gắn với commit. - Tóm tắt thay đổi file (File Change Summary):
1 file changed, 1 insertion(+): Một file được thay đổi với một dòng được thêm.create mode 160000 Johnrepo: Cho biết việc tạo một mode mới (thông tin này hơi đặc thù và có thể liên quan đến loại file hoặc cấu hình repository).
git status
- git status: Hiển thị trạng thái của thư mục làm việc và vùng staging.
- Cho biết:
- File nào đã được stage
- File nào chưa được stage
- File nào chưa được Git theo dõi
Lệnh này giúp người dùng nắm được trạng thái hiện tại của branch, các thay đổi đã stage, chưa stage và các file chưa được theo dõi.
Ví dụ

Thực thi lệnh
Lệnh git status được thực thi trong thư mục:
C:\Newrepo\Johnrepo
Thông tin Branch
- On branch Hello: Cho biết người dùng đang ở branch Hello.
Thông tin Commit
- No commits yet: Chưa có commit nào được tạo trên branch này.
git log
- git log: Hiển thị lịch sử commit của branch hiện tại.
- Cung cấp thông tin như:
- Tác giả
- Ngày giờ commit
- Commit message
Lệnh này dùng để xem lịch sử các commit trong branch hiện tại.
Ví dụ

Thực thi lệnh
Lệnh git log được thực thi trong thư mục:
C:\Newrepo\Johnrepo
Thông tin Commit
- Commit Hash:
7b8bd4fbd531e7a687fda822c5bdd4fbbe4e1486– mã định danh duy nhất của commit. - Branch và HEAD:
(HEAD -> Hello)cho biết commit này là HEAD của branch Hello, tức là commit mới nhất. - Author:
John986-creator <[email protected]>là người tạo commit. - Date:
Fri Jul 5 23:48:19 2024 +0530là thời điểm commit. - Commit Message:
Hello World.
git diff
- git diff: So sánh sự khác biệt giữa:
- Các commit
- Thư mục làm việc
- Vùng staging
Giúp người dùng biết chính xác những thay đổi đã xảy ra trước khi stage hoặc commit.
Cú pháp:
git diff
Ví dụ

Thực thi lệnh
Lệnh git diff được thực thi trong thư mục:
C:\Newrepo\Johnrepo
Kết quả
- Không có sự khác biệt nào được hiển thị → không có thay đổi giữa working directory và staging area hoặc commit gần nhất.
git branch
- git branch: Liệt kê các branch trong repository và cho biết branch hiện tại.
- Có thể dùng để tạo hoặc xóa branch.
Cú pháp:
git branch
git branch <branch-name>
git branch -d <branch-name>
Ví dụ

Danh sách Branch
* Hello: Branch hiện tại.main: Một branch khác trong repository.
Tạo Branch mới
- Lệnh:
git branch Boom
→ Tạo branch mới tên Boom.
Xóa Branch
- Lệnh:
git branch -d Boom
- Kết quả:
Deleted branch Boom (was 7b8bd4f)
→ Xác nhận branch Boom đã bị xóa và hiển thị hash commit cuối cùng của branch đó.
git checkout
- git checkout: Chuyển giữa các branch hoặc khôi phục file trong thư mục làm việc.
Cú pháp:
git checkout <branch-name>
Ví dụ

Chuyển sang Branch
- Lệnh:
git checkout Hello
- Output:
Already on 'Hello'→ Người dùng đã ở branch Hello.
git merge
- git merge: Gộp các thay đổi từ branch này sang branch khác.
- Dùng để kết hợp các dòng phát triển khác nhau.
Cú pháp:
git merge <branch-name>
Ví dụ

Thực thi lệnh
Lệnh git merge rebase.txt được thực thi trong thư mục:
C:\Newrepo\Johnrepo
git pull
- git pull: Lấy thay đổi từ repository remote và merge vào branch hiện tại.
- Kết hợp
git fetchvàgit mergetrong một bước.
Cú pháp:
git pull <remote> <branch>
Ví dụ

Đồng bộ Repository Local
git pullđược dùng để cập nhật repository local với các thay đổi từ remote.
Thực thi lệnh
Lệnh:
git pull origin main
được thực thi trong thư mục:
C:\Newrepo\Johnrepo
Lấy thay đổi (Fetching Changes)
- Git đang lấy thay đổi từ repository remote tại:
https://github.com/John986-creator/Johnrepo branch main -> FETCH_HEAD: Cho biết branch main từ remote đang được fetch.
Trạng thái Merge
Already up to date.→ Branch local đã đồng bộ, không có thay đổi mới.
git push
- git push: Đẩy các commit local lên repository remote để chia sẻ với người khác.
Cú pháp:
git push <remote> <branch>
Ví dụ

Chuỗi hành động trong ví dụ
git add Readme.txt
- Mục đích: Stage file
Readme.txt. - Output: Không có → lệnh chạy thành công.
git commit -m "Add a new Line"
- Mục đích: Commit thay đổi với message Add a new Line.
- Output:
[main 89e6cd0] Add a new Line
→ Commit mới được tạo trên branch main, hash là 89e6cd0.
git add .
- Mục đích: Stage toàn bộ thay đổi.
- Output: Không có.
git commit -m "Hello Friends"
- Mục đích: Commit thay đổi với message Hello Friends.
- Output:
[main f5301c] Hello Friends1 file changed, 1 insertion(+)create mode 100644 rebase.txt
→ Commit mới với hash f5301c, tạo file rebase.txt.
git push origin main
- Mục đích: Đẩy commit local lên branch main của remote.
- Kết quả: Push thành công.
Các commit được push nằm trong khoảng từ ef09396 đến f5301c.
Sử dụng Commit Message
Commit message trong Git và GitHub đóng vai trò cực kỳ quan trọng trong quản lý dự án và cộng tác.
Chúng cung cấp bản tóm tắt ngắn gọn về những thay đổi trong mỗi commit, kèm theo ngữ cảnh và lý do, giúp các thành viên trong nhóm và người đóng góp sau này hiểu rõ mục đích của thay đổi.
Tầm quan trọng của Commit Message
Commit message giúp:
- Ghi lại lịch sử dự án một cách rõ ràng
- Dễ dàng theo dõi khi nào và vì sao thay đổi được thực hiện
- Hỗ trợ debug và truy vết lỗi
- Hiểu được quá trình tiến hóa của codebase
Lợi ích bổ sung
Quản lý dự án hiệu quả
- Tóm tắt thay đổi trong mỗi commit
- Cung cấp ngữ cảnh và lý do cho thay đổi
- Giúp thành viên hiện tại và tương lai hiểu code
Tăng khả năng truy vết
- Ghi lại lịch sử dự án
- Dễ theo dõi các thay đổi cụ thể
- Làm rõ lý do chỉnh sửa
Cộng tác
- Tăng cường giao tiếp trong nhóm
- Hỗ trợ review và merge code hiệu quả
Hỗ trợ giải quyết xung đột và xác định vấn đề
- Commit message giúp hỗ trợ phát hiện xung đột và xác định nguyên nhân vấn đề hiệu quả hơn.
Các thành phần của một Commit Message tốt
Một commit message được viết tốt thường gồm hai phần:
- Dòng tiêu đề ngắn gọn: Tóm tắt thay đổi.
- Phần nội dung chi tiết: Cung cấp ngữ cảnh về điều gì đã thay đổi và vì sao.
Cách tách này giúp:
- Dễ dàng quét nhanh lịch sử commit
- Cung cấp thông tin chi tiết hơn khi cần phân tích sâu
Ví dụ Commit Message tốt và chưa tốt
Commit message tốt
- “Fix typo in the user’s registration form.”
Commit này tốt vì:
- Ngắn gọn, rõ ràng
- Nêu chính xác thay đổi (sửa lỗi chính tả)
- Chỉ rõ vị trí (form đăng ký người dùng)
→ Giúp người khác nhanh chóng hiểu mục đích và tác động của thay đổi.
Commit message chưa tốt
- “Update file.”
Commit này chưa tốt vì:
- Quá chung chung
- Không cho biết file nào được cập nhật
- Không nêu rõ nội dung thay đổi
→ Khiến người khác khó hiểu mục đích và nội dung commit.
Việc phân tích các ví dụ thực tế giúp lập trình viên nhận thức rõ tác động của commit message và hướng tới sự rõ ràng, chính xác.
Công cụ và Hook để áp dụng chuẩn Commit Message
Để áp dụng chuẩn commit message, lập trình viên có thể dùng Git hooks và các công cụ bên thứ ba.
- Git hooks là các script tự động chạy tại các thời điểm nhất định trong workflow Git
- Ví dụ: hook
commit-msgcó thể dùng để kiểm tra commit message theo các quy tắc định sẵn
Sử dụng Git Hooks
Git hooks là các script mà Git thực thi trước hoặc sau các sự kiện như:
- commit
- merge
- push
Chúng rất hữu ích để:
- Áp dụng policy
- Tự động hóa tác vụ trong repository Git
Các bước sử dụng Git Hooks
Bước 1: Di chuyển tới Git Repository
- Mở terminal
- Di chuyển tới thư mục gốc của Git repository

Bước 2: Tạo hoặc xác định thư mục Git Hooks
- Git hooks được lưu trong thư mục:
.git/hooks/
- Mỗi file hook tương ứng với một sự kiện cụ thể trong Git workflow

Bước 3: Chọn Hook cần dùng
Chọn hook phù hợp với thời điểm cần kiểm soát commit message.
Các hook phổ biến:
- commit-msg
- Chạy trước khi commit được tạo
- Cho phép kiểm tra nội dung commit message

- prepare-commit-msg
- Chạy trước khi trình soạn thảo commit message mở
- Hữu ích khi cần chỉnh sửa nội dung message trước khi commit
Ngoài ra, các công cụ như commitlint có thể giúp đảm bảo commit message tuân thủ quy ước.
Chỉnh sửa Commit trong Git (Altering Commits in Git)
Việc chỉnh sửa commit là một công cụ mạnh để:
- Sửa lỗi
- Cập nhật commit message
- Điều chỉnh nội dung của commit trước đó
⚠️ Tuy nhiên, cần cẩn trọng, đặc biệt với các commit đã được chia sẻ với người khác.
Sửa lỗi Commit
- Lỗi chính tả: Commit message có thể chứa lỗi đánh máy
- Thay đổi sai: Commit có thể chứa thay đổi không mong muốn hoặc thiếu thay đổi cần thiết
Cải thiện Commit Message
- Rõ ràng: Commit message rõ ràng giúp hiểu lịch sử dự án tốt hơn
- Nhất quán: Tuân theo format/quy ước (ví dụ: kèm mã task hoặc issue)
Gộp Commit (Combining Commits)
- Squashing commits:
- Gộp nhiều commit nhỏ thành một commit có ý nghĩa
- Giúp lịch sử gọn gàng và dễ đọc hơn
- Giảm nhiễu:
- Gộp các thay đổi nhỏ/lặp lại giúp dễ review và hiểu tiến trình phát triển
Loại bỏ thông tin nhạy cảm
- Bảo mật:
- Commit có thể vô tình chứa password, API key, dữ liệu mật
- Cần chỉnh sửa hoặc xóa để tránh rủi ro
- Tuân thủ:
- Một số tiêu chuẩn pháp lý yêu cầu xóa hoặc làm mờ dữ liệu nhạy cảm
Hoàn tác thay đổi (Reverting Changes)
- Sửa sai:
- Nếu commit gây bug hoặc hành vi không mong muốn, có thể revert hoặc chỉnh sửa commit
- Duy trì ổn định:
- Đảm bảo branch chính (main) ổn định, đặc biệt trong môi trường nhiều người cùng làm
Duy trì lịch sử sạch (Maintaining a Clean History)
- Dễ đọc: Lịch sử commit rõ ràng giúp người mới dễ hiểu dự án
- Debug dễ dàng: Dễ xác định khi nào và vì sao thay đổi xảy ra
Các phương pháp chỉnh sửa Commit trong Git
1. Chỉnh sửa Commit gần nhất
Nếu cần sửa commit mới nhất, dùng tùy chọn --amend.
Thay đổi Commit Message
Cú pháp:
git commit --amend

Lệnh này mở trình soạn thảo mặc định để chỉnh sửa commit message.
Thêm thay đổi vào Commit gần nhất
Nếu quên add file:
- Stage file bằng
git add - Sau đó chạy:
git commit --amend --no-edit

- Tùy chọn
--no-editgiữ nguyên commit message cũ
2. Viết lại lịch sử bằng Interactive Rebase
Interactive rebase cho phép chỉnh sửa một chuỗi commit, phù hợp khi:
- Sửa nhiều commit message
- Gộp nhiều commit thành một
Chỉnh sửa commit trong quá trình rebase
Khi chọn edit commit:
- Git sẽ tạm dừng rebase
- Người dùng chỉnh sửa, stage thay đổi rồi chạy:
git commit --amend

Sau đó tiếp tục rebase:
git rebase --continue

3. Dùng Filter-Branch cho chỉnh sửa lớn
Với chỉnh sửa quy mô lớn (nhiều commit):
Cú pháp:
git filter-branch --tree-filter 'COMMAND' HEAD

- Thay
COMMANDbằng lệnh shell cần chạy cho mỗi commit - Cách này chậm và dễ lỗi → thường khuyến nghị dùng git filter-repo
4. Sử dụng Git Reset
git reset dùng để hoàn tác commit bằng cách di chuyển HEAD về commit trước đó.
Soft Reset
git reset --soft HEAD~1

- HEAD lùi 1 commit
- Giữ nguyên working directory và staging area
Mixed Reset
git reset --mixed HEAD~1

- HEAD lùi 1 commit
- Bỏ stage các thay đổi nhưng vẫn giữ file
Hard Reset
git reset --hard HEAD~1

- HEAD lùi 1 commit
- Xóa toàn bộ thay đổi khỏi working directory và index
Quản lý Branch trong Git (Branch Management in Git)
Branching cho phép tách luồng phát triển khỏi nhánh chính mà không ảnh hưởng đến mã ổn định.
1. Phát triển song song (Parallel Development)
- Cô lập tính năng:
- Làm feature/bugfix/experiment riêng biệt
- Không ảnh hưởng code ổn định
- Đóng góp đồng thời:
- Nhiều dev làm việc song song trên các branch khác nhau
2. Ổn định và tích hợp code
- Main branch ổn định:
- Không commit trực tiếp
- Luôn sẵn sàng production
- Tích hợp an toàn:
- Merge sau khi test và review kỹ
3. Workflow có tổ chức
- Branch theo task:
- Gắn branch với task/feature/bug cụ thể
- Phát triển có cấu trúc:
- Áp dụng chiến lược như Git Flow
4. Cộng tác và Review
- Pull Requests:
- Thảo luận, review trước khi merge
- Nâng cao chất lượng code
- Code Review:
- Phát hiện lỗi sớm
- Đề xuất cải tiến
5. Lịch sử và kiểm soát phiên bản
- Ngữ cảnh lịch sử:
- Biết khi nào, vì sao feature/bug được xử lý
- Xem lại công việc cũ:
- Có thể khôi phục branch đã tạm dừng
6. Thử nghiệm và Prototype
- Thử nghiệm an toàn:
- Xóa branch nếu thử nghiệm thất bại
- Phát triển lặp:
- Thử nghiệm thành công có thể phát triển thành feature hoàn chỉnh
7. CI/CD
- Test tự động:
- Mỗi branch có thể gắn pipeline CI/CD
- Môi trường staging:
- Test trước khi đưa lên production
Hướng dẫn quản lý Branch
- Tạo branch:
git branch <name>
- Chuyển branch:
git checkout <name>
- Merge branch:
git merge <branch>
- Giải quyết conflict:
- Sửa file → stage → commit
- Xóa branch:
- Sau khi merge và không còn cần thiết
Đồng bộ giữa Repository Local và Remote
Việc đồng bộ local và remote là cực kỳ quan trọng trong làm việc nhóm.
- Đảm bảo các thay đổi được chia sẻ, tích hợp và duy trì nhất quán
- Tránh xung đột và sai lệch môi trường
Lý do cần đồng bộ
Cộng tác
- Chia sẻ thay đổi giữa các thành viên
Code mới nhất
- Luôn cập nhật từ remote repository
Sao lưu và Khôi phục (Backup and Recovery)
- Làm việc với mã mới nhất: Giúp đội ngũ luôn làm việc với phiên bản code cập nhật nhất, giảm xung đột và lỗi tích hợp.
- Sao lưu mã nguồn (Code Backup): Đẩy thay đổi lên repository remote tạo ra bản sao lưu của mã. Điều này bảo vệ trước các sự cố máy cục bộ, đảm bảo công việc không bị mất.
- Lịch sử phiên bản (Version History): Repository remote lưu toàn bộ lịch sử commit, cung cấp bản ghi để có thể khôi phục trạng thái trước đó của dự án khi cần.
Tích hợp & Triển khai liên tục (Continuous Integration and Deployment)
- Kiểm thử tự động (Automated Testing): Đồng bộ với repository remote có thể kích hoạt các pipeline CI để tự động kiểm thử thay đổi mới, đảm bảo mỗi commit đều được xác thực bằng test tự động.
- Triển khai (Deployment): Các thay đổi được đẩy lên các branch cụ thể (ví dụ:
mainhoặcdevelop) có thể tự động kích hoạt pipeline triển khai, đảm bảo code mới nhất được triển khai lên môi trường staging hoặc production.
Nhất quán giữa các môi trường (Consistency Across Environments)
- Tính nhất quán trong phát triển (Development Consistency): Đồng bộ giúp tất cả lập trình viên làm việc trên cùng một codebase, giảm sai khác và đảm bảo nhất quán giữa các môi trường phát triển.
- Thiết lập môi trường (Environment Setup): Thành viên mới có thể clone repository và pull các thay đổi mới nhất để thiết lập môi trường phát triển nhanh chóng và đồng nhất.
Giải quyết xung đột (Conflict Resolution)
- Giảm xung đột (Minimize Conflicts): Đồng bộ thường xuyên giúp tích hợp thay đổi liên tục, giảm xung đột và giúp việc xử lý xung đột nhanh, ít tốn thời gian hơn.
- Phát hiện xung đột sớm (Conflict Detection): Pull thay đổi từ remote giúp phát hiện xung đột sớm, cho phép xử lý kịp thời thay vì đến giai đoạn phát triển quan trọng.
Quản lý Branch (Branch Management)
- Cập nhật Branch (Branch Updates): Đồng bộ đảm bảo các branch tính năng được cập nhật thường xuyên từ branch chính, giảm vấn đề tích hợp khi merge.
- Cộng tác trên Branch (Branch Collaboration): Nhiều lập trình viên có thể làm việc trên cùng một branch bằng cách đồng bộ thay đổi, hỗ trợ phát triển cộng tác cho từng tính năng hoặc bản sửa lỗi.
Rà soát và Phê duyệt (Review and Approval)
- Pull Requests: Đồng bộ cho phép sử dụng pull request để review và phê duyệt code.
Quy trình (Processes)
- Quy trình có cấu trúc: Đảm bảo mọi thay đổi đều được review và phê duyệt trước khi merge vào codebase chính.
- Trách nhiệm giải trình (Accountability): Đẩy thay đổi lên repository remote tạo ra bản ghi rõ ràng về ai đã thay đổi gì và khi nào, duy trì khả năng truy vết và trách nhiệm.
Đã nhận đủ ảnh 👍
Dưới đây là bản dịch TIẾP THEO, dịch sát nghĩa – đầy đủ – không rút gọn, theo đúng thứ tự nội dung trong các ảnh bạn gửi.
Các hình minh họa giao diện/lệnh đã được đánh dấu [ảnh minh họa].
(Bảng) Tính năng / Lý do — Mô tả
Sao lưu và Khôi phục (Backup and Recovery)
- Làm việc với mã mới nhất: Giúp đội ngũ luôn làm việc với phiên bản code cập nhật nhất, giảm xung đột và lỗi tích hợp.
- Sao lưu mã nguồn (Code Backup): Đẩy thay đổi lên repository remote tạo ra bản sao lưu của mã. Điều này bảo vệ trước các sự cố máy cục bộ, đảm bảo công việc không bị mất.
- Lịch sử phiên bản (Version History): Repository remote lưu toàn bộ lịch sử commit, cung cấp bản ghi để có thể khôi phục trạng thái trước đó của dự án khi cần.
Tích hợp & Triển khai liên tục (Continuous Integration and Deployment)
- Kiểm thử tự động (Automated Testing): Đồng bộ với repository remote có thể kích hoạt các pipeline CI để tự động kiểm thử thay đổi mới, đảm bảo mỗi commit đều được xác thực bằng test tự động.
- Triển khai (Deployment): Các thay đổi được đẩy lên các branch cụ thể (ví dụ:
mainhoặcdevelop) có thể tự động kích hoạt pipeline triển khai, đảm bảo code mới nhất được triển khai lên môi trường staging hoặc production.
Nhất quán giữa các môi trường (Consistency Across Environments)
- Tính nhất quán trong phát triển (Development Consistency): Đồng bộ giúp tất cả lập trình viên làm việc trên cùng một codebase, giảm sai khác và đảm bảo nhất quán giữa các môi trường phát triển.
- Thiết lập môi trường (Environment Setup): Thành viên mới có thể clone repository và pull các thay đổi mới nhất để thiết lập môi trường phát triển nhanh chóng và đồng nhất.
Giải quyết xung đột (Conflict Resolution)
- Giảm xung đột (Minimize Conflicts): Đồng bộ thường xuyên giúp tích hợp thay đổi liên tục, giảm xung đột và giúp việc xử lý xung đột nhanh, ít tốn thời gian hơn.
- Phát hiện xung đột sớm (Conflict Detection): Pull thay đổi từ remote giúp phát hiện xung đột sớm, cho phép xử lý kịp thời thay vì đến giai đoạn phát triển quan trọng.
Quản lý Branch (Branch Management)
- Cập nhật Branch (Branch Updates): Đồng bộ đảm bảo các branch tính năng được cập nhật thường xuyên từ branch chính, giảm vấn đề tích hợp khi merge.
- Cộng tác trên Branch (Branch Collaboration): Nhiều lập trình viên có thể làm việc trên cùng một branch bằng cách đồng bộ thay đổi, hỗ trợ phát triển cộng tác cho từng tính năng hoặc bản sửa lỗi.
Rà soát và Phê duyệt (Review and Approval)
- Pull Requests: Đồng bộ cho phép sử dụng pull request để review và phê duyệt code.
(Phần mô tả tiếp nối ở bảng sau)
Quy trình (Processes)
- Quy trình có cấu trúc: Đảm bảo mọi thay đổi đều được review và phê duyệt trước khi merge vào codebase chính.
- Trách nhiệm giải trình (Accountability): Đẩy thay đổi lên repository remote tạo ra bản ghi rõ ràng về ai đã thay đổi gì và khi nào, duy trì khả năng truy vết và trách nhiệm.
Sự cần thiết của việc Đồng bộ giữa Repository Local và Remote
Hãy cùng tìm hiểu cách người dùng quản lý việc đồng bộ.
Lấy thay đổi (Fetching Changes)
- git fetch: Lệnh
git fetchlấy các cập nhật từ repository remote mà không merge vào branch local hiện tại.
Cú pháp:
git fetch <remote>
Ví dụ

Pull thay đổi (Pulling Changes)
- git pull: Lệnh
git pulllấy thay đổi từ repository remote và merge chúng vào branch hiện tại của người dùng.
Đẩy thay đổi (Pushing Changes)
- git push: Lệnh
git pushtải các thay đổi local của người dùng lên repository remote.
Theo dõi Branch (Tracking Branches)
Để việc đồng bộ dễ dàng hơn, người dùng có thể thiết lập một branch local để theo dõi một branch remote.
Cú pháp:
git branch --track <branch> <remote>/<branch>
Ví dụ

Thực thi lệnh (Command Execution)
Lệnh:
git branch --track Readme.txt
đã được thực thi.
Kết quả
- Tạo Branch (Branch Creation):
Một branch mới có tênReadme.txtđã được tạo. - Thiết lập theo dõi (Tracking Setup):
Branch mới này được cấu hình để theo dõi branchmain.
Giải quyết sự phân kỳ (Resolving Divergence)
Nếu branch local và branch remote bị phân kỳ, người dùng cần:
- Merge hoặc Rebase các thay đổi từ cả hai branch.
- Rebase sẽ áp các thay đổi của người dùng lên trên các thay đổi mới nhất từ remote.
Cú pháp:
git rebase <remote>/<branch>
Ví dụ

Thực thi lệnh
Lệnh:
git rebase Readme.txt
đã được thực thi.
Kết quả Rebase (Rebase Result)
Kết quả cho biết thao tác rebase đã thành công và branch main đã được cập nhật.



