Sử dụng Git/GitHub từ A đến Z

376

Lý do vì sao lập trình viên sử dụng Git/GitHub?

Sinh viên ngành CNTT thường quản lý project theo nhóm bằng cách nào? Phần lớn các bạn trả lời: “Vào thư viện hoặc hẹn ở chỗ nào đó cùng ghép dự án“.

Hiện nay, kỹ năng sử dụng Git là một kỹ năng bắt buộc mà mọi lập trình viên đều phải biết. Sử dụng Git giúp dễ dàng quản lý mã nguồn, nâng cao khả năng làm việc nhóm và tối ưu trong quá trình phát triển dự án. Git có thể tích hợp vào nhiều IDECode Editor giúp ta dễ dàng sử dụng.

Git/GitHub là gì?

Git là một trong những Hệ thống Quản lý Phiên bản Phân tán, vốn được phát triển nhằm quản lý mã nguồn (source code) của Linux.

Trên Git, ta có thể lưu trạng thái của file dưới dạng lịch sử cập nhật. Vì thế, có thể đưa file đã chỉnh sửa về trạng thái cũ hay đã chỉnhh sửa.

GitHub là máy chủ cung cấp dịch vụ lưu trữ mã nguồn lớn nhất thế giới.

  • Cho phép xây dựng chung mã nguồn với bất kì người nào có tài khoản Github.
  • Các chức năng thêm vào của Github: UI, Document, bug tracking, feature request, pull request… và nhiều hơn!

Tạo tài khoản và setup môi trường

Tạo tài khoản GitHub

Truy cập website: https://github.com để tạo tài khoản.

*Lưu ý: Ghi nhớ username, email mật khẩu để đăng nhập vào Git local trên máy tính.

Cài đặt Git

Truy cập vào website https://git-scm.com/dowload để cài đặt Git.

Chạy lệnh git –v trên cmd, nếu thấy hiện ra như bên hình là đã cài đặt Git hoàn tất.

Đăng nhập vào Git Local

Mở cmd và nhập lần lượt ba lệnh sau để đăng nhập vào Git.

Trong đó :

  • myname là username Github.
  • myemail@example.com là email dùng để đăng ký.
  • mypassword là mật khẩu đăng ký.

Kiểm tra tài khoản

git config –list để xem thông tin tài khoản, nếu thông tin hợp lệ nghĩa là đăng nhập thành công.

Kết quả:

Tạo kho lưu trữ code đồng bộ với máy tính

a. Tạo kho lưu trữ

  • Truy cập http://github.com/new để tạo một kho lưu trữ.
  • Nhập thông tin và click vào Create Reposiory để tạo kho lưu trữ cho code của bạn.

b. Thông tin của lưu trữ

c. Giao diện khi tạo kho lưu trữ thành công

  • Khi đã tạo xong một Repository, ta cần tạo thêm một “bản sao” của Repository trên máy tính (clone reposotory).
  • Bản sao này chúng ta sẽ thực hiện code trực tiếp, khi nào hoàn chỉnh ta sẽ đẩy lên GitHub.
  • Nhiều người có thể tự tạo ra một bản sao tại máy tính của mình và xây dựng các tính năng của mình mà không ảnh hưởng đến những người khác.

d. Clone repository

  • Sao chép đường dẫn của repo vừa tạo.

  • Truy cập vào thư mục muốn clone và gõ lệnh sau đây: git clone <url>

  • Khi thấy hiện ra một thư mục có tên giống như tên của Repository là đã clone thành công.

d. Pull repository

Với trường hợp bạn đã clone repo và muốn cập nhật lại các code trên GitHub bạn có thể dùng lệnh sau:

Các thao tác trên Git

Quy trình đẩy code lên GitHub

  • Khi đã clone xong một Repository, ta có thể code trực tiếp tại thư mục đã clone
  • Khi muốn thực hiện đẩy code lên GitHub ta sẽ thực hiện các lệnh sau:
    • git add . để thêm toàn bộ các file, folder vào git trên local:
      Ta code trực tiếp trong thư mục đã clone về (ở đây là git-workshop trong ví dụ trước). Giả sử ta có cấu trúc của một dự án như sau và muốn đưa lên Git.

      Ta thực hiện lệnh: git add .
    • git commit –m “<mô tả>để thực hiện một thay đổi trên git.

      Sau đó, ta cần phải lưu lại lần chỉnh sửa code của mình, thao tác này được gọi là commit code.
      Ta gõ lệnh sau: git commit –m ”<m>”. Với <m> là thông tin thay đổi để tương lai dễ nhận biết và các thành viên trong team hiểu được việc làm đó là gì.


      Kết quả:

    • git push để đẩy code lên nhánh chính (main hoặc master).
      Sau khi hoàn tất việc lập trình và commit tại local, ta sẽ đẩy code lên GitHub với thao tác push. Ta gõ tiếp lệnh git push: git push.Kết quả:
      Khi thực hiện xong 3 thao tác trên, các thay đổi tại máy của ta sẽ được cập nhật trên GitHub.

Undo khi có commit sai

Ta đã biết làm sao để lưu một lịch sử thay đổi (commit) trong repo.

  • Trên thực tế sẽ có một vài trường hợp ta commit nhầm và muốn trở lại lần commit trước đó.
  • Git hỗ trợ ta 2 lệnh sau để thực hiện thao tác đó: git reset và git reverse.

a. git reset

git reset được dùng để quay về một điểm commit nào đó, đồng thời xóa lịch sử của các commit trước nó. Ví dụ: Ta có 4 lần commit lần lượt là A, B, C, D (các id phía trên) và D là lượt commit hiện tại (HEAD), nhận thấy C và D là một commit sai (lỗi code hoặc bug) và ta muốn quay lại commit B.

Lúc này ta có thể quay về commit B bằng câu lệnh:
Kết quả
Các commit sau B lần lượt là C và D sẽ bị xóa đi và danh sách commit sẽ trở về như lúc vừa commit B.
b. git revert

git revert không làm mất các commit. Thay vào đó sẽ tạo thêm commit mới, có nội dung giống hệt với commit bạn muốn quay trở về. Với ví dụ trên, ta sẽ thực hiện như sau:

Sơ đồ git sau khi Revert sẽ như sau:
Làm việc nhóm với Git

Thêm thành viên vào Repo:

Step 1: Vào Setting à Collaborator à Add people.


Step 2: Nhập username hoặc email:

Step 3: Tiến hành thêm
Step 4: Xác nhận tham gia: Có thể kiểm tra email hoặc truy cập https://github.com/notifications để xác nhận tham gia.
Làm việc với nhánh:

  • Một dự án gồm rất nhiều chức năng, trong thực tế mỗi thành viên sẽ đảm nhận ít nhất một chức năng.
  • Để dễ dàng quản lý mã nguồn Git cung cấp khái niệm về nhánh. Tùy theo mục đích và quy mô dự án ta sẽ phân ra các nhánh thích hợp.
  • Việc chia ra các nhánh giúp ta dễ dàng quản lý, làm việc độc lập không ảnh hưởng đến các thành viên khác.

Tạo nhánh:

  • Bạn có thể tạo một nhánh mới bằng lệnh sau: git branch <tên_nhánh>.
  • Xem danh sách các nhánh bằng lệnh: git branch.

Chuyển qua nhánh khác:

  • Trước khi muốn đẩy code lên GitHub ta checkout qua nhánh muốn lưu trữ code: git checkout <tên_nhánh>.
  • Sau đó, thao tác add, commit để thêm code.
  • Lưu ý: sử dụng lệnh git push origin <tên nhánh> để đẩy lên đúng nhánh.
  • Sơ đồ git sau khi tạo nhánh:

Gộp nhánh:

  • Việc tạo ra nhiều nhánh trong thời gian dài sẽ khó quản lý. Vì vậy, khi hoàn tất một chức năng ta nên có hành động gộp nhánh và xóa đi các nhánh thừa không còn dùng nữa.
  • Đầu tiên ta checkout sang nhánh muốn gộp vào và nhập lệnh: git merge <tên_nhánh_gộp>.

    Với trường hợp trên, ta đang thực hiện gộp nhánh có tên “nhanh-moi” vào trong nhánh main. (main sẽ chứa toàn bộ code của nhanh-moi).

  • Sơ đồ git sau khi gộp nhánh

Xóa nhánh:

  • Sau khi gộp nhánh xong, ta nên xóa nhánh để kho lưu trữ được gọn gàng hơn.
  • Chỉ nên xóa các nhánh không dùng nữa.
  • Dùng lệnh: git branch –d <tên_nhánh>.
  • Với trường hợp trên, ta đang thực hiện gộp nhánh có tên “nhanh-moi” vào trong nhánh main. (main sẽ chứa toàn bộ code của nhanh-moi).

Lưu ý:

  • Thao tác với nhánh cần phải nắm vững các lệnh vì rất dễ xảy ra xung đột (conflict) trong quá trình gộp nhánh.
  • Nếu xảy ra xung đột ta phải xử lý bằng tay (xóa hết các code thừa và gộp lại từ đầu).
  • Tuyệt đối không gộp lung tung, sẽ có thể dẫn đến việc mất hết source code.

Sử dụng GitHub Desktop

GitHub Desktop Là ứng dụng được phát triển bởi GitHub:

  • Cung cấp các UI thuận tiện cho việc sử dụng. (không cần gõ các dòng lệnh trong cmd như trước mà chỉ cần click chuột).
  • GitHub Desktop cung cấp đầy đủ các tính năng của Git.

Cài đặt

Truy cập https://desktop.github.com để tải về GitHub Desktop.
Đăng nhập

Tiến hành đăng nhập bằng cách chọn File -> Options -> Account -> Sign in. Có thể chọn Continue with broswer nếu đã thực hiện đăng nhập tại web hoặc nhập username & password để đăng nhập.

Clone Repo

  • Có thể chọn trực tiếp một repo đã tạo trên GitHub.
  • Hoặc clone với url

Git commit

Đối với GitHub Desktop ta không cần lệnh git add . mà khi có bất kì thay đổi gì Git Desktop sẽ tự động thực hiện lệnh add và ta chỉ cần commit.

Git push

  • Khi commit xong, ta có thể push code trực tiếp bằng cách chọn vào nút push origin trên giao diện.
  • Ngoài ra, ta có thể hủy thao tác bằng cách chọn vào Undo dưới phần commit.

Gộp nhánh

Chọn vào mục current branch và chọn Choose a branch to merge into <nhánh_hiện_tại>.

Xin cảm ơn các bạn, các bạn có thể gửi góp ý để Ad soạn nội dung chất lượng hơn!

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây