Categories
Git

Git là gì?

Git là gì?

Khi lập trình, sẽ có lúc bạn lỡ tay xoá một đoạn code vì nghĩ rằng đoạn code đó không phù hợp nữa, nhưng sau đó lại phát hiện là đoạn code đó bạn vẫn cần dùng.

Bạn nghĩ mình có thể nhớ lại chính xác  những gì mình đã viết không? Thật sự là rất rất khó. Nhưng nếu bạn có dùng phần mềm quản lý phiên bản mã nguồn thì mọi việc sẽ trở nên đơn giản hơn rất nhiều vì phần mềm quản lý phiên bản mã nguồn sẽ cho phép bạn dễ dàng quay lại một phiên bản trước của tập tin đó.

Có thể nói phần mềm quản lý mã nguồn là công cụ không thể thiếu đối với lập trình viên và một trong những phần mềm hỗ trợ quản lý phiên bản rất phổ biến hiện nay là Git


Git sẽ giúp người dùng lưu lại các phiên bản của những lần thay đổi mã nguồn để dễ dàng khôi phục lại phiên bản cũ mà không cần phải nhớ là mình đã chỉnh ở đâu, tất cả phiên bản bạn cần đều đã được sao lưu. 

Để cài đặt git, vui lòng đọc https://backlog.com/git-tutorial/vn/intro/intro2_1.html

Quy Trình Xử Lý Công Việc Trên Git (Workflow)

Repository

Repository – kho lưu trữ – là nơi Git lưu trữ mọi thông tin của dự án (ảnh, file, folder, …) cũng như lịch sử sửa đổi trong dự án của bạn.

Chúng ta sẽ chia ra thành 2 khu vực:

  1. Local repository: Là kho lưu trữ của Git trên máy tính của bạn.
  2. Remote repository: Là kho lưu trữ của một nhà cung cấp dịch vụ về git (như Github, GitLab, Bitbucket).

Nó tự tự như bạn làm một website cho khách hàng:

  1. Ban đầu, bạn sẽ code trên máy tính (Local Repository)
  2. Sau đó, đẩy code lên một hosting (Remote Repository)

Branch – Nhánh

Nhánh là một khái niệm quan trọng trong Git. Bạn có thể sử dụng nhánh để tách riêng các tính năng trong một dự án, hoặc bạn cũng có thể dùng nhánh để fix một bug …

Ví dụ 1:

Chính phủ có kế hoạch làm đường cao tốc Hà Nội – Lào Cai để giảm thời gian di chuyển cho các phương tiện.

Khi triển khai, không thể làm đường cao tốc ngay trên đường cũ, vì làm như vậy thì mọi người muốn đi từ Hà Nội lên Lào Cai phải đợi đường làm xong mới được đi à :v.

Vậy, chính phủ sẽ phải tạo một nhánh là feature/duong-cao-toc, và toàn bộ quá trình thi công sẽ hoạt động trên nhánh này. Sau khi hoàn thành, chính phủ mới có thể đưa con đường vào sử dụng (trong git gọi là merge code ở nhánh này vào nhánh chính).

Nhờ có nhánh, chúng ta vẫn đảm bảo phương tiện di chuyển từ HN lên LC bằng đường cũ mà không vấn đề gì, đồng thời thi công đường mới ở nhánh feature/duong-cao-toc.

Checkout

Checkout cho phép chúng ta tạo một nhánh mới hoặc nhảy từ nhánh này sang nhánh khác.

Ví dụ:

Kỹ sư A được phân công làm đường cao tốc HN -> LC. Vì nhánh này chưa tồn tại, nên cần ký một quyết định A làm việc tại đường cao tốc HN -> LC.

Để tạo một nhánh mới, chúng ta sẽ sử dụng lệnh:

git checkout -b feature/duong-cao-toc master
  1. feature/duong-cao-toc là tên nhánh mới
  2. master là tên nhánh bạn muốn copy code sang nhánh mới.

Kỹ sư A đang làm việc tại đường cao tốc. Nhưng có việc gấp, nên cần triệu tập về trung ương. Vì nhánh trung ương đã tồn tại (master hoặc main), nên kỹ sư A sẽ lên xe phi về trung ương:

Để nhảy từ nhánh này sang nhánh khác (giả sử bạn đang ở nhánh master), chúng ta sẽ sử dụng lệnh:

git checkout feature/duong-cao-toc

Sau khi hoàn thành việc ở trung ương, A lại lên ô tô phi về cao tốc HN -> LC

git checkout master

Workflow

Working Directory

Như ở ví dụ trên, khi kỹ sư làm việc ở cao tốc HN -> LC thì working directory là feature/duong-cao-toc.

Khi kỹ sư A về trung ương thì working directory là master

Staging area (Khu vực chờ)

Sau khi hoàn thành dự án, kỹ sư A nhận được 100 triệu :v (rẻ vãi).

Kỹ sư A là người tu chí nên a quyết định gửi ngân hàng chứ không đi bay.

Anh lên ngân hàng, gặp giao dịch viên, giao dịch viên mở nhánh feature/ky-su-a-gui-tien đưa cho a tờ giấy gửi tiền.

git checkout -b feature/ky-su-a-gui-tien

Giấy gửi tiền có 3 thông tin:

  1. Họ tên
  2. Tuổi
  3. Và số tiền

Mỗi lần a ghi một thông tin, a gõ git add

git add ho-ten.php
git add tuoi.php
git add so-tien.php

Kỹ sư A cũng có thể viết hết cả 3 thông ti và gõ

git add .

Khi gõ git add, thông tin nộp tiền đang ở Staging area.

Localrepo

Khi hoàn thành toàn bộ thông tin, anh mỉnh cười và ký chữ ký:

git commit -m "Ky su Nguyen Van A"

Lúc này, tờ giấy gửi tiền vẫn ở trong tay anh (Local Repository)

Remote

Sau đó, a đưa giấy gửi tiền cho giao dịch viên cùng 100 triệu.

Em giao dịch viên nhìn thấy a gửi 100 triệu lòng đầy ngưỡng mộ. E cầm giấu đỏ gõ phạch một phát vào tờ giấy:

git push

Sau lệnh git push, thông tin đã được gửi lên Ngân Hàn Trung Ương – Remote Local.

Thực hành

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s