Quay lại Khóa học
AI016 Professional

Hướng dẫn Git của Ry

Hướng dẫn toàn diện về kiểm soát phiên bản Git, từ các quy trình cơ bản như chuẩn bị và ghi lại thay đổi đến các chủ đề nâng cao như tái cấu trúc tương tác, hợp tác từ xa và nội bộ cơ chế lưu trữ dữ liệu của Git.

4.9
39.0h
983 học viên
0 lượt thích
Trí tuệ nhân tạo
Bắt đầu học

Tổng quan khóa học

📚 Tóm tắt Nội dung

Hướng dẫn toàn diện về kiểm soát phiên bản Git, từ các quy trình cơ bản như chuẩn bị và ghi lại thay đổi đến các chủ đề nâng cao như tái định hướng tương tác, cộng tác từ xa và cấu trúc nội bộ của cơ sở dữ liệu đối tượng Git.

Thành thạo hệ thống kiểm soát phiên bản phổ biến nhất thế giới, từ lệnh đến các thành phần cốt lõi.

Tác giả: Ryan Hodson

Lời cảm ơn: Không có lời cảm ơn nào được nêu rõ trong phần mở đầu.

🎯 Mục tiêu Học tập

  1. So sánh và đối chiếu các Hệ thống Kiểm soát Phiên bản (VCS) cục bộ, tập trung và phân tán.
  2. Nhận diện các động lực lịch sử đằng sau việc tạo ra Git cho hạt nhân Linux.
  3. Thực hiện cài đặt Git cơ bản, bao gồm xác minh cài đặt, khởi tạo kho lưu trữ và theo dõi tệp tin.
  4. Khởi tạo một kho Git và xác định vai trò của thư mục .git.
  5. Cấu hình thông tin người dùng toàn cục và theo dõi tệp dự án bằng khu vực chuẩn bị (staging area).
  6. Thực hiện các thao tác commit để tạo bản sao lưu trạng thái dự án và xem lại chúng qua lịch sử kho.
  7. Di chuyển đến các lần commit cụ thể trong quá khứ bằng ID và quay trở lại trạng thái hiện tại của dự án.
  8. Tạo và quản lý các thẻ có chú thích để xác định các phiên bản phát hành ổn định.
  9. Áp dụng git revert để hoàn tác những thay đổi đã commit mà vẫn giữ được lịch sử minh bạch.
  10. Xác định, tạo và chuyển đổi giữa các nhánh sử dụng dòng lệnh Git.

🔹 Bài học 1: Lịch sử và Cơ bản về Kiểm soát Phiên bản

Tổng quan: Bài học này truy vết sự phát triển của kiểm soát phiên bản từ việc quản lý tệp thủ công đến các hệ thống phân tán phức tạp. Nó chi tiết hóa sự khác biệt kiến trúc giữa các Hệ thống Kiểm soát Phiên bản (VCS) cục bộ, tập trung và phân tán, đồng thời giải thích bối cảnh lịch sử cụ thể dẫn đến việc tạo ra Git. Học viên cũng sẽ học các bước nền tảng để cài đặt Git và khởi tạo kho lưu trữ đầu tiên.

Kết quả học tập:

  • So sánh và đối chiếu các Hệ thống Kiểm soát Phiên bản (VCS) cục bộ, tập trung và phân tán.
  • Nhận diện các động lực lịch sử đằng sau việc tạo ra Git cho hạt nhân Linux.
  • Thực hiện cài đặt Git cơ bản, bao gồm xác minh cài đặt, khởi tạo kho lưu trữ và theo dõi tệp tin.

🔹 Bài học 2: Thành thạo Cơ bản: Chuẩn bị và Ghi lại

Tổng quan: Bài học này đề cập đến chu trình sống cơ bản của một kho Git, từ một thư mục dự án thông thường đến môi trường được kiểm soát phiên bản. Học viên sẽ học cách khởi tạo kho, cấu hình danh tính người dùng, theo dõi tệp mới và quản lý quá trình chuyển đổi thay đổi qua khu vực chuẩn bị (staging area) vào lịch sử đã commit vĩnh viễn.

Kết quả học tập:

  • Khởi tạo một kho Git và xác định vai trò của thư mục .git.
  • Cấu hình thông tin người dùng toàn cục và theo dõi tệp dự án bằng khu vực chuẩn bị.
  • Thực hiện commit để tạo bản sao lưu trạng thái dự án và xem lại chúng bằng lịch sử kho.

🔹 Bài học 3: Hủy thay đổi và Điều hướng Lịch sử

Tổng quan: Bài học này đề cập đến các kỹ thuật quan trọng của Git để "du hành thời gian" trong kho lưu trữ, cho phép nhà phát triển kiểm tra các trạng thái quá khứ, đánh dấu các mốc quan trọng và hủy bỏ lỗi một cách an toàn. Người học sẽ nắm vững khả năng xem các phiên bản cũ mà không làm thay đổi vĩnh viễn, sử dụng thẻ có chú thích để đánh dấu các phiên bản phát hành, và phân biệt rõ ràng giữa việc hủy lịch sử đã commit và dọn dẹp công việc thử nghiệm chưa commit.

Kết quả học tập:

  • Di chuyển đến các lần commit cụ thể trong quá khứ bằng ID và quay trở lại trạng thái hiện tại của dự án.
  • Tạo và quản lý thẻ có chú thích để xác định các phiên bản phát hành ổn định.
  • Áp dụng git revert để hoàn tác các thay đổi đã commit cụ thể mà vẫn duy trì lịch sử minh bạch.

🔹 Bài học 4: Nhánh cơ bản và Gộp cơ bản

Tổng quan: Bài học này khám phá chu trình sống cơ bản của nhánh Git, từ việc tưởng tượng các nhánh là những dòng phát triển độc lập đến thực thi thực tế. Học viên sẽ học cách tạo, di chuyển và trực quan hóa lịch sử dự án bị chia tách, kết thúc bằng việc tích hợp công việc thông qua các gộp nhanh (fast-forward) và gộp ba phía (3-way merge), cùng với việc dọn dẹp các nhánh tạm thời.

Kết quả học tập:

  • Xác định, tạo và chuyển đổi giữa các nhánh bằng dòng lệnh Git.
  • Hiểu sơ đồ lịch sử dự án bị chia tách để nắm rõ mối quan hệ giữa nhánh master và các nhánh tính năng.
  • Thực hiện và phân biệt giữa các kiểu gộp "Fast-forward" và "3-way".

🔹 Bài học 5: Nhánh nâng cao và Giải quyết Xung đột

Tổng quan: Bài học này khám phá các thao tác Git nâng cao cần thiết khi lịch sử dự án bị phân nhánh. Nó đề cập đến cơ chế lý thuyết của gộp ba phía, cách sử dụng cờ -a để đơn giản hóa việc commit, và quản lý các nhánh tính năng kéo dài. Học viên sẽ học cách xử lý các tương tác nhánh phức tạp, giải quyết xung đột gộp thủ công và duy trì vệ sinh kho bằng cách dọn dẹp nhánh đúng cách.

Kết quả học tập:

  • Giải thích sự khác biệt cấu trúc giữa gộp nhanh (fast-forward merge) và gộp ba phía (3-way merge).
  • Sử dụng cờ -a để kết hợp chuẩn bị và commit cho các tệp đã theo dõi.
  • Xác định và giải quyết xung đột gộp bằng cách đọc các dấu hiệu xung đột Git.

🔹 Bài học 6: Tái định hướng để Có Lịch sử Dự án Trực tiếp

Tổng quan: Bài học này trình bày các kỹ thuật để duy trì lịch sử dự án sạch và tuyến tính bằng cách di chuyển và thu gọn các commit. Người học sẽ thành thạo việc chuyển đổi từ các nhánh phân nhánh sang một dòng thời gian thống nhất bằng cách sử dụng tái định hướng chuẩn, tái định hướng tương tác (squashing) và khả năng sửa đổi các commit cụ thể trong quá trình. Sau bài học này, học viên sẽ hiểu cách loại bỏ các commit gộp không cần thiết và trình bày một nhật ký commit chuyên nghiệp, gọn gàng.

Kết quả học tập:

  • Dịch chuyển gốc của một nhánh tính năng đến đỉnh của nhánh khác để cho phép gộp nhanh.
  • Sử dụng tái định hướng tương tác để thu gọn nhiều commit nhỏ thành một bản sao có ý nghĩa duy nhất.
  • Sửa đổi các commit hiện có trong quá trình rebase bằng chức năng edit--amend.

🔹 Bài học 7: Viết lại Lịch sử và An toàn từ Reflog

Tổng quan: Bài học này khám phá các kỹ thuật Git nâng cao để duy trì lịch sử dự án sạch và chuyên nghiệp. Người học sẽ thành thạo "Tái định hướng Tương tác" để sửa đổi các commit quá khứ, học quy trình chính xác để tách một commit chung thành nhiều cập nhật nhỏ, và tận dụng "Reflog" như một lớp bảo vệ mạnh mẽ để khôi phục dữ liệu tưởng chừng mất đi.

Kết quả học tập:

  • Thực hiện tái định hướng tương tác để chỉnh sửa, thay đổi hoặc tách các commit quá khứ.
  • Phân tách một commit chung thành nhiều commit độc lập, có ý nghĩa bằng cách dùng git reset --mixed.
  • Duyệt qua Reflog Git để tìm và khôi phục các commit "treo" không còn gắn với nhánh nào.

🔹 Bài học 8: Cộng tác qua Push và Fetch

Tổng quan: Bài học này khám phá các quy trình cơ bản cho cộng tác đa người dùng trong Git. Bạn sẽ học cách tạo các bản sao độc lập của kho lưu trữ, cấu hình danh tính cục bộ để mô phỏng nhiều người dùng khác nhau, và thiết lập kết nối "remote" để trao đổi mã nguồn. Bài học tập trung vào cơ chế lấy dữ liệu (fetch) và gửi dữ liệu (push) giữa các kho để đồng bộ hóa nỗ lực phát triển.

Kết quả học tập:

  • Sao chép và Cấu hình: Sao chép thành công một kho lưu trữ và thiết lập cấu hình người dùng ở cấp độ cục bộ.
  • Đồng bộ Remote: Thêm các biểu tượng remote và sử dụng fetchmerge để tích hợp thay đổi từ các nhà phát triển khác.
  • Quản lý Trạng thái Remote: Duyệt qua các nhánh remote và hiểu trạng thái "HEAD rời rạc" khi kiểm tra mã nguồn không phải cục bộ.

🔹 Bài học 9: Mô hình Kho Lưu trữ Chia sẻ Tập trung

Tổng quan: Bài học này đề cập đến sự chuyển đổi từ việc chia sẻ kho lưu trữ ngang hàng sang mô hình làm việc tập trung. Học viên sẽ học cách tạo một kho "trống" (bare repository) để hoạt động như một điểm trung tâm giao tiếp, điều chỉnh lại các kết nối remote cho môi trường nhóm, và quản lý việc đồng bộ hóa thay đổi (push và pull) giữa nhiều nhà phát triển để duy trì lịch sử dự án nhất quán.

Kết quả học tập:

  • Khởi tạo và cấu hình một kho trống để làm máy chủ trung tâm.
  • Quản lý các kết nối remote để định hướng quy trình làm việc cục bộ về một trung tâm tập trung.
  • Thực hiện quy trình chuẩn để cập nhật nội dung chung và giải quyết lịch sử phân nhánh bằng cách dùng fetch, rebase và merge.

🔹 Bài học 10: Mô hình Người tích hợp Phân tán

Tổng quan: Bài học này khám phá sự chuyển đổi từ kiểm soát phiên bản tập trung sang Mô hình Người tích hợp Phân tán sử dụng Bitbucket như nhà cung cấp lưu trữ. Người học sẽ tiến từ việc thiết lập kho công khai đến quản lý một quy trình phức tạp nơi "Người tích hợp" xem xét và gộp các đóng góp từ các kho công khai của các nhà phát triển ngang hàng vào phiên bản chính thức của dự án.

Kết quả học tập:

  • Cấu hình tài khoản Bitbucket và thiết lập một kho remote công khai cho cộng tác phân tán.
  • Thực hiện "Quy trình Người tích hợp" bằng cách quản lý nhiều remote để lấy, xem xét và gộp các đóng góp bên ngoài.
  • Duy trì sự đồng bộ giữa các môi trường cục bộ riêng tư và các kho công khai giữa một nhóm nhà phát triển.

🔹 Bài học 11: Giao tiếp và Quy trình Dựa trên Patch

Tổng quan: Bài học này đề cập đến chu trình sống của cộng tác dựa trên patch trong Git – một phương pháp chia sẻ từng commit riêng lẻ giữa các nhà phát triển mà không cần quyền truy cập chung vào một kho lưu trữ trung tâm. Học viên sẽ học cách tạo tệp patch từ các commit cục bộ, phân phối chúng qua email, và tích hợp các patch nhận được vào nhánh chính của dự án.

Kết quả học tập:

  • Tạo tệp patch riêng lẻ từ các commit hoặc nhánh cụ thể bằng lệnh git format-patch.
  • Áp dụng các tệp patch bên ngoài vào kho cục bộ bằng lệnh git am và chuyển hướng đầu vào chuẩn.
  • Thực hiện toàn bộ quy trình tích hợp, bao gồm kiểm thử patch trên nhánh tạm thời và gộp chúng vào nhánh master.

🔹 Bài học 12: Công cụ Git, Hook và So sánh Nâng cao

Tổng quan: Bài học này đề cập đến các lệnh công cụ Git thiết yếu và kỹ thuật tùy chỉnh cho quản lý kho nâng cao. Học viên sẽ học cách xuất và chia sẻ kho thông qua nén và gói, duy trì môi trường làm việc sạch nhờ .gitignore và stash, tự động hóa quy trình bằng Git hook, và tối ưu trải nghiệm dòng lệnh bằng so sánh diff nâng cao và các biệt danh cá nhân hóa.

Kết quả học tập:

  • Phân biệt và thực hiện xuất kho bằng cách nén (không có lịch sử) và gói (có đầy đủ lịch sử).
  • Cấu hình mẫu loại trừ tệp và quản lý các thay đổi đang xử lý tạm thời.
  • Triển khai các kịch bản tự động hóa trong hệ thống hook nội bộ của Git và rút ngắn quy trình bằng các biệt danh cấu hình.

🔹 Bài học 13: Git Plumbing: Cơ sở Dữ liệu Đối tượng Nội bộ

Tổng quan: Bài học này đào sâu dưới các lệnh thân thiện với người dùng ("porcelain") của Git để khám phá phần "plumbing" – cơ sở dữ liệu đối tượng cấp thấp. Bạn sẽ học cách Git sử dụng bốn loại đối tượng khác nhau (Blobs, Trees, Commits, Tags) và mã kiểm tra SHA-1 để ghi lại lịch sử dự án. Sau bài học này, bạn sẽ hiểu cách thao tác thủ công chỉ mục và cơ sở dữ liệu đối tượng để tạo commit mà không cần giao diện cao cấp chuẩn.

Kết quả học tập:

  • Định nghĩa và phân biệt bốn loại đối tượng Git: Blobs, Trees, Commits và Tags.
  • Giải thích vai trò của HEAD và các tham chiếu nhánh trong việc trỏ đến các đối tượng commit cụ thể.
  • Minh họa quy trình "plumbing": chuẩn bị tệp thủ công, viết cây (tree) và tạo đối tượng commit.