Hướng dẫn tự học Git và Github từ cơ bản đến nâng cao

cách sử dụng Github

Hướng dẫn tự học Git và Github từ cơ bản đến nâng cao

Nếu bạn là người không biết cách sử dụng Github, thì bài viết này là dành cho bạn. Biết và sử dụng Git & GitHub đã dần dần đi từ kỹ năng ưa thích sang “cần phải” được trang bị trong nhiều vai trò công việc. Trong bài viết này, Aptech sẽ đưa bạn qua các chức năng và khả năng khác nhau của GitHub.

Giới thiệu về GitHub

Trong bài trước tôi có nói sơ qua về cách thức tạo tài khoản và kho lưu trữ “Repository” trên GitHub. Bạn có thểm xem giới thiệu về git. Trong bài viết này tôi sẽ nói rõ hơn về nó, GitHub là một dịch vụ chia sẻ file hoặc code để cùng cộng tác làm việc với những người khác nhau.

GitHub là một phần mềm kiểm soát phiên bản “VCS” phổ biến. Nó hữu ích khi dự án có nhiều người cùng làm việc. Ví dụ, nhóm phát triển phần mềm muốn xây dựng trang web và cần cập nhật code đồng thời. GitHub giúp họ tạo kho lưu trữ tập trung, nơi mọi người có thể tải lên, chỉnh sửa và quản lý code của dự án.

Giới thiệu về GitHub

Vì sao nên sử dụng Github?

GitHub có nhiều lợi ích, nhưng nhiều người thắc mắc tại sao không sử dụng Dropbox hay các hệ thống đám mây khác? Hãy tưởng tượng: nếu có hơn hai nhà phát triển phần mềm làm việc trên cùng một tệp và muốn cập nhật đồng thời.

Không may, người lưu tệp đầu tiên sẽ được ưu tiên. Nhưng với GitHub, điều này không xảy ra. GitHub ghi lại các thay đổi và tổ chức chúng để tránh xung đột hay trùng lặp. Sử dụng kho lưu trữ tập trung của GitHub giúp tránh nhầm lẫn và làm việc trên cùng một tệp hoặc dự án trở nên dễ dàng.

Nhìn vào hình ảnh, GitHub là kho lưu trữ trung tâm, còn Git là công cụ cho phép tạo kho lưu trữ cục bộ trên máy tính. Git và GitHub khác nhau: Git là công cụ kiểm soát phiên bản, cho phép bạn lấy và đẩy dữ liệu từ máy chủ trung tâm. GitHub là nền tảng lưu trữ giúp lập trình viên cộng tác và kiểm soát các phiên bản mã code, cho phép bạn lưu trữ kho trên máy chủ từ xa.

Vì sao nên sử dụng Github?

Ưu điểm của Github

Dưới đây là những ưu điểm của cách sử dụng Github làm cho git trở nên đơn giản hơn:

  • GitHub cung cấp cho bạn một giao diện trực quan (nền web) đẹp mắt giúp bạn theo dõi hoặc quản lý các dự án được kiểm soát phiên bản ở local trái ngược so với Git (bạn phải thao tác trên CLI)
  • Khi đăng ký GitHub, bạn sẽ kết nối với các mạng xã hội gồm các tổ chức và cá nhân trong cùng lĩnh vực. Điều này giúp bạn trao đổi và theo dõi thông tin mới nhất về các dự án code bạn quan tâm. Ngoài ra, GitHub còn giúp bạn xây dựng hồ sơ cá nhân mạnh mẽ. Hãy chắc chắn rằng nhà tuyển dụng có thể sẽ kiểm tra hồ sơ của bạn khi phỏng vấn.

Ưu điểm của Github

Tạo kho lưu trữ GitHub – Tạo Repository trên GitHub

Một kho lưu trữ “Repository” là một không gian lưu trữ, nơi mà dự án của bạn sẽ được đẩy lên. Nó có thể là nằm ở local như một thư mục trên máy tính của bạn hoặc nó có thể là một không gian lưu trữ trên GitHub hoặc một máy chủ trực tuyến khác. Bạn có thể lưu trữ các tệp mã, tệp văn bản, hình ảnh hoặc bất kỳ loại tệp nào trong kho lưu trữ. Nếu như bạn cần một kho lưu trữ như GitHub để khi bạn thực hiện một số thay đổi và muốn tải chúng lên kho để lưu trữ và chia sẻ trực tuyến. Kho lưu trữ GitHub này hoạt động như kho lưu trữ từ xa của bạn. Các bước để tạo kho lưu trữ GitHub rất đơn giản, bạn có thể làm theo cách sau:

  • Đầu tiên hãy truy cập liên kết: https://github.com/ . Điền vào biểu mẫu đăng ký và nhấp vào Sign up for Github để tạo cho mình 1 tài khoản Github.
  • Đăng nhập vào tài khoản GitHub của bạn
  • Sử dụng dấu “+” ngoài cùng bên phải để tạo một một Repository
  • Bây giờ, nếu bạn nhận thấy theo mặc định, kho lưu trữ GitHub là công khai “Public”, điều đó có nghĩa là bất kỳ ai cũng có thể xem nội dung của kho lưu trữ này. Còn đối với kho riêng “Private”, bạn phải chỉ định ai thì họ có thể xem nội dung.

Lưu ý: hãy khởi tạo kho lưu trữ của bạn bằng tệp README.md nếu như đây là kho lưu trữ hoàn toàn mới. Tệp này thường được sử dụng để lưu các mô tả về kho của bạn, các thay đổi của kho để giúp người xem có thể nắm được một cách khái quát và nhanh nhất về kho mà bạn chia sẻ. Khi bạn đánh dấu vào tùy chọn Initialize this repository with a README thì file README sẽ là tệp đầu tiên bên trong kho lưu trữ của bạn. Ngoài ra bạn còn 2 tùy chọn thêm file .gitignore và license để thêm vào kho của mình.

Như vậy, tôi đã chuẩn bị sẵn sàng cho mình một kho lưu trữ từ xa trên Github, bây giờ thì tôi có thể thực hiện cách sử dụng Github commit, pull, push và thực hiện tất cả các hoạt động khác với kho này. Bây giờ hãy tiếp tục tìm hiểu phân nhánh trong GitHub.

Tạo kho lưu trữ GitHub - Tạo Repository trên GitHub

Tạo chi nhánh “Branch” trên Github và quản lý các thay đổi trong chi nhánh

Chi nhánh “Branch” trong Github là gì?

Branch trong git và github dịch ra là chi nhánh ^^, nó sẽ giúp bạn làm việc trên các phiên bản khác nhau của kho lưu trữ cùng một lúc. Giả sử bạn muốn thêm một tính năng mới (đang trong giai đoạn phát triển) và bạn lo ngại tính năng mới này chưa được phát triển ổn định, nếu mang nó vào phiên bản đã hoàn thiện chạy ổn định rồi thì nó có thể gây ra lỗi bug không đang có cho dự án của mình. Các Branches của git lúc này là vị cứu tinh tuyệt với 🙂

Chi nhánh cho phép bạn di chuyển qua lại giữa các trạng thái / phiên bản “states/versions” khác nhau của dự án. Để giải quyết vấn đề nêu trên, bạn có thể tạo một nhánh mới và kiểm tra tính năng mới trên đó mà không ảnh hưởng đến nhánh chính. Khi bạn đã thực hiện xong, bạn có thể hợp nhất “merge” các thay đổi từ nhánh mới sang nhánh chính. Ở đây, nhánh chính là nhánh master, có trong kho lưu trữ của bạn theo mặc định.

Như mô tả cách sử dụng Github trên, có một nhánh master và một nhánh mới develop để thử nghiệm. Trong nhánh develop này, hai bộ thay đổi C2,C4 được thực hiện và sau khi hoàn thành, nó được hợp nhất trở lại nhánh chính master tại C5. Đây là cách phân nhánh hoạt động!

Cách tạo nhánh trong Github

Để tạo một nhánh trong GitHub, hãy làm theo các bước dưới đây:

  • Nhấp vào danh sách thả xuống “Branch: master”
  • Ngay khi bạn nhấp vào chi nhánh, bạn có thể tìm thấy một chi nhánh hiện có hoặc bạn có thể tạo một chi nhánh mới. Trong trường hợp của tôi, tôi đang tạo một chi nhánh mới với tên là develop.

Khi bạn đã tạo một nhánh mới, bây giờ bạn có hai nhánh trong kho lưu trữ của mình tức là master (nhánh chính) và develop. Chi nhánh develop mới chỉ là bản sao của chi nhánh master, tại thời điểm bạn vừa tạo mới nếu bạn kiểm tra trên develop bạn sẽ thấy tất cả các file, commit của master. Bây giờ hãy tiếp tục thực hiện một số thay đổi trong nhánh develop mới xem thế nào nhé!

Tạo chi nhánh "Branch" trên Github và quản lý các thay đổi trong chi nhánh

Quản lý các thay đổi trong chi nhánh “Branches”

Lệnh commit

Thao tác này giúp bạn lưu các thông tin về sự thay đổi của tệp chỉ khi bạn thực hiện các thao tác như thêm, xóa, sửa tập tin. Khi bạn commit một thay đổi của tập tin, bạn phải luôn cung cấp một thông điệp “mesage” nó sẽ giúp ghi nhớ những thay đổi do bạn thực hiện. Đại loại như: “Hôm nay, ngày 25/06/2024 lúc 11h30’20s tôi có thêm một dòng trong file index.html” mặc dù thông báo này không bắt buộc nhưng nó luôn được khuyến nghị để nó có thể phân biệt các phiên bản khác nhau.

Mỗi thay đổi trên file sẽ tạo ra một phiên bản mới của file đó được hiểu như ảnh chụp snapshot) hoặc phân biệt các commit bạn đã thực hiện trong kho lưu trữ của mình. Những commit này duy trì lịch sử thay đổi, từ đó giúp những người cộng tác khác hiểu rõ hơn về tệp mà họ cùng đang thao tác trên đó. Bây giờ hãy thực hiện commit đầu tiên của chúng ta, làm theo các bước dưới đây:

  • Nhấp vào branch develop vừa tạo chọn Create New file
  • Sau khi tạo mới một tập tin, ở đây tôi đặt tên cho tập tin là hello.txt kèm theo nội dung nhập ở phần <>Edit new file
  • Viết một commit để ghi lại những thay đổi của bạn với tiêu đề và phần mô tả nội dung commit
  • Nhấp vào Commit new file để tạo mới 1 commit kèm theo .

Lệnh pull

Lệnh kéo “pull” là lệnh quan trọng nhất trong cách sử dụng Github. Nó cho biết những thay đổi được thực hiện trong tệp và yêu cầu những người đóng góp khác xem nó và ra yêu cầu hợp nhất nó với nhánh chính master (Pull request) . Khi commit được thực hiện, bất kỳ ai cũng có thể pull tệp và có thể bắt đầu một cuộc thảo luận về nó. Khi tất cả đã xong, bạn có thể hợp nhất bằng cách merge vào master. Lệnh Pull so sánh các thay đổi được thực hiện trong tệp và nếu có bất kỳ xung đột nào, bạn có thể giải quyết thủ công. Bây giờ chúng ta hãy xem các bước khác nhau liên quan để tạo một Pull Request trong GitHub.

  • Nhấp vào tab ‘Pull Request’.
  • Nhấp vào ‘New pull request’.
  • Khi bạn nhấp vào yêu cầu kéo, chọn Branch và nhấp vào ‘develop ‘ để xem các thay đổi giữa hai tệp có trong kho lưu trữ của chúng ta
  • Nhấp vào Create Pull request sau khi đã kiểm tra và so sánh các thay đổi
  • Nhập bất kỳ tiêu đề, mô tả cho các thay đổi của bạn và nhấp vào Create pull request

Sau khi tạo thành công Pull request, chúng ta hãy tiếp tục hợp nhất yêu cầu này.

Lệnh Merge

Đây là lệnh cuối cùng để hợp nhất các thay đổi trên nhánh Develop vào nhánh chính Master sau khi một Pull request đã được khởi tạo và các cộng tác viên đã xem xét, chấp thuận nội dung. Các bước sau đây để hợp nhất 2 nhánh này.

  • Nhấp vào Merge pull request để tiến hành hợp nhất các thay đổi vào nhánh chính.
  • Nhấp vào Confirm merge để xác nhận hợp nhất, nếu hợp nhất thành công sẽ có thông báo.

Lưu ý: Hợp nhất chỉ diễn ra khi không xảy ra xung đột conflict. Github sẽ kiểm tra conflict, nếu xảy ra xung đột bạn phải giải quyết vấn đề này trước khi lệnh merge được thực hiện.

Sau khi merge thành công vào nhánh master, bạn có thể xóa nhánh develop bằng cách nhấn vào Delete branch

Tiếp theo, chúng ta hãy chuyển sang chủ đề cuối cùng trong ‘cách sử dụng GitHub’, đó là làm thế nào để nhân bản “clone” và “fork” kho lưu trữ GitHub.

Nhân bản Clone và Fork trong Github

Trước khi đi vào từng phần, bạn hãy nhìn qua sơ đồ này để hình dung được cách thức hoạt động của Clone và Fork trên Github. Bạn có thể hiểu là Fork thao tác sao chép các kho lưu trữ “repository” từ tài khoản này đến tài khoản khác trên Github, còn Clone thì giúp chúng ta tải xuống kho lưu trữ về máy tính ở local.

Nhân bản Clone: Trước khi tôi thực sự nói về việc nhân bản một kho lưu trữ GitHub, thì việc đầu tiên bạn cần phải hiểu lý do tại sao chúng ta cần sao chép một kho lưu trữ? Câu trả lời rất đơn giản! Đó là để tái sử dụng code, giả sử bạn muốn sử dụng một số mã code có trong kho lưu trữ công cộng (tài khoản Github khác), bạn có thể sao chép trực tiếp nội dung bằng cách nhân bản hoặc tải xuống xuống máy tính của mình.

Rẽ nhánh kho lưu trữ với Fork: Đầu tiên, chúng ta hãy nói về lý do tại sao chúng ta cần rẽ nhánh. Giả sử, bạn cần một số mã có trong kho lưu trữ công khai, để đẩy nó vào kho lưu trữ và tài khoản GitHub của bạn. Muốn làm điều này chúng ta cần rẽ nhánh “Fork” một kho lưu trữ sang tài khoản của mình đúng không nào?

Nhân bản Clone và Fork trong Github

Nhưng trước khi chúng ta bắt đầu với forking, có một số điểm quan trọng mà bạn nên luôn luôn ghi nhớ.

  • Những thay đổi được thực hiện đối với kho lưu trữ ban đầu sẽ được phản ánh trở lại kho lưu trữ rẽ nhánh.
  • Nếu bạn thực hiện thay đổi trong kho lưu trữ rẽ nhánh, nó sẽ không được phản ánh đến kho lưu trữ ban đầu cho đến khi và trừ khi bạn thực hiện yêu cầu kéo.

Bây giờ hãy xem làm thế nào bạn có thể Fork một kho lưu trữ.

  • Khám phá và tìm kiếm các kho lưu trữ công cộng mà bạn cần Fork. Ví dụ: Tôi sẽ sử dụng kho lưu trữ mã nguồn Laravel để làm.
  • Ngay khi bạn nhấp vào trên Fork, bạn sẽ mất một chút thời gian để phân nhánh kho lưu trữ. Sau khi hoàn thành, bạn sẽ nhận thấy tên kho lưu trữ nằm trong tài khoản của bạn.
  • Kết quả sau khi Fork kho lưu trữ của Laravel về tài khoản Github của tôi. Như bạn thấy đường dẫn đã thay đổi từ laravel/laravel thành aptechbuonmathuot/laravel.

Xin chúc mừng! Bạn đã rẽ nhánh thành công một kho lưu trữ hiện có trong tài khoản của riêng bạn.

Đó là tất cả về cách sử dụng Github mà Aptech Buôn Ma Thuột đã chia sẻ trong bài viết này. Hy vọng bạn thích nó và đã có giải pháp sử dụng Github hiệu quả, áp dụng vào các dự án của mình và đem lại thành công.

Leave a Reply

Your email address will not be published. Required fields are marked *