Github và các chức năng chính

Sau khi hoàn thành một số kiến thức, khái niệm cơ bản về git, trong bài này, mình sẽ chuyển đến giới thiệu về github và một số feature chính của github.

1. Github là gì?

GitHub là một dịch vụ lưu trữ trên web dành cho các dự án có sử dụng hệ thống kiểm soát Git revision. Github có đầy đủ những tính năng của Git, ngoài ra nó còn bổ sung những tính năng về social để các developer tương tác với nhau.

Git là một hệ thống quản lý phiên bản phân tán (Distributed Version Control System – DVCS), nó là một trong những hệ thống quản lý phiên bản phân tán phổ biến nhất hiện nay. Git cung cấp cho mỗi lập trình viên kho lưu trữ (repository) riêng chứa toàn bộ lịch sử thay đổi.
Hub là một điểm kết nối chung cho các thiết bị trong mạng và thường được sử dụng để kết nối các phân đoạn của mạng LAN. Khi một gói dữ liệu đến một cổng, nó được sao chép và gửi tới tất cả các cổng khác.

image

GitHub có 2 phiên bản: miễn phí và trả phí. Với phiên bản có phí thường được các doanh nghiệp sử dụng để tăng khả năng quản lý team cũng như phân quyền bảo mật dự án. Còn lại thì phần lớn chúng ta đều sử dụng Github với tài khoản miễn phí để lưu trữ source code.

Các chức năng chính trong github

1. GitHub Repository

Trong GitHub, repository(hay remote reposotory trong các phần trước) là kho lưu trữ, chứa toàn bộ dữ liệu thông tin và các thay đổi trong quá trình thực hiện dự án. Có nhiều hình thức khác nhau để bạn tự tổ chức kho lưu trữ của mình, GitHub sẽ cho phép lập trình viên chọn một trong hai loại kho lưu trữ là Local Repository hoặc Remote Repository.

Repository ở server Github chính là remote repository hay là kho lưu trữ để chia sẻ giữa nhiều người và bố trí trên server chuyên dụng.

Để tạo một repository trên GitHub bạn làm như sau:

  • Trước tiên là bạn cần có 1 tài khoản github để đăng nhập.

  • Sau đó là tạo mới repository với “Start a new project” ngay trên trang chủ.

image

  • Nhập tên Reporitory và nhấn nút “Create Repository”.

Theo mặc định thì repository để là public. Tức là ai cũng có thể xem được repo này. Muốn quản lý nội bộ thì chọn Private.

Bạn có thêm một README.md file để giới thiệu repo kèm với một file .gitignore. Github đã có sẵn template .gitignore cho bạn, cứ chọn một template phù hợp với mã nguồn dự án là được.

  • Khi đã có repository, bạn có thể clone, pull, push… source code của mình.

2. Issues

image

Github issue là 1 cách vô cùng tuyệt vời để theo dõi tasks và bugs của bạn. Chúng khá giống với email ngoại trừ việc có thể chia sẻ và trao đổi với những thành viên còn lại trong repo.


Một ví dụ về github issue.


Với Github issue bạn có thể miêu tả được toàn bộ vấn đề với:

  • Issue title và description mô tả về vấn đề
  • Các labels để đánh nhãn dễ dàng phân loại và lọc
  • Milestone đưa các issue vào 1 phase của project hay 1 sprint
  • Sau đó là assign cho thành viên trong repo
  • Comment cũng như feedback

3. Pull Request

image

Pull request hay gọi tắt là PR có nghĩa là bạn thông báo với những người khác rằng bạn đã đẩy những thay đổi của Branch lên Repository tổng (master respository). Các cộng tác viên của repository này sẽ approved hoặc comment trong PR này.

Các bước để tạo PR trong GitHub là:

  1. Trong GitHub, di chuyển tới repository của bạn
  2. Chọn Pull RequestNew Pull Request trong Repo (hoặc chọn compare & pull request)
  3. Chọn nhánh muốn hợp nhất các thay đổi từ nhánh mình push lên. Ở đây mình muốn hợp nhất code từ branch add_new_file tới nhánh chính master.


4. Thêm tiêu đề và mô tả vào pull request của bạn
5. Nhấn nút Create pull request hoặc Create draft pull request.

Mở rộng: Linking PR to Issue

Là 1 tính năng rất hữu ích cho các bạn luôn sử dụng github. Khi có liên kết, issue sẽ được tự động close khi PR được merged. Bạn có thể tạo 1 liên kết giữa PR và issue một cách thủ công hoặc sử dụng một số keyword trong PR description.
Các keywork đó là:

  • close
  • closes
  • closed
  • fix
  • fixes
  • fixed
  • resolve
  • resolves
  • resolved

Cú pháp của từ khóa close issue phụ thuộc vào việc issue có nẳm trong cùng một Repo với PR hay không.

4. Wiki

Bạn có thể lưu trữ documents cho Repo của mình trong wiki để những người khác có thể sử dụng và đóng góp cho dự án của bạn.

Wiki có sẵn trong các kho công khai với GitHub Miễn phí và GitHub Miễn phí cho các tổ chức, và trong các kho công khai và riêng tư với GitHub Pro, GitHub Team, GitHub Enterprise Cloud và GitHub Enterprise Server. Để biết thêm thông tin, hãy xem "Sản phẩm của GitHub."

image

Các bước để tạo một Wiki trong GitHub là:

  1. Bạn bắt đầu tạo mới một project với “New page”.
  2. Tiếp theo viết tài liệu trên đây với edit Markdown được giới thiệu cụ thể ở phần dưới

5. Project Boards

Các project boards trên GitHub giống như bảng kanban, giúp bạn sắp xếp và sắp xếp thứ tự ưu tiên cho công việc. Bạn có thể tạo project boards cho các feature, roadmpas, checklist. Với bảng dự án, bạn có thể linh hoạt tạo workflow phù hợp với mong muốn của mình.

Project boards bao gồm Issue, Pull Request, note và được lưu trữ thành cards phân loại theo categories đặt trong các columns với mục đích tương ứng.

Project board cards - các thẻ trong project boards chứa các thông tin cho issue, PR, label, người được giao, trạng thái của cards. Bạn có thể thực hiện các thay đổi cho cards bằng một cái click hay kéo thả cho cards.
Hình dưới là một ví dụ về project boards.

6. Markdown

Markdown là ngôn ngữ đánh dấu văn bản được tạo ra bởi John Gruber, sử dụng cú pháp khá đơn giản và dễ hiểu, dễ nhớ. Nếu nắm vững các cú pháp của Markdown bạn có thể trình bày bài viết của mình một cách mạch lạc, ấn tượng mà không mất nhiều thời gian. Trên github, markdown được dùng ở rất nhiều chức năng như issue, PR, Wiki... tương ứng với thanh công cụ Markdown:

image
Trong thanh công cụ Markdown của github được tích hợp sẵn các markdown thường sử dụng, chỉ với 1 click, bạn đã có thể sử dụng markdown vô cùng tiện lợi.

Tại sao markdown quan trọng:
Markdown rất phổ biến trong dự án, từ file README.md đến các file hướng dẫn cài đặt, đến các phần wiki và github cũng support với file markdown để view trực tiếp trên github.

Các Markdown thường được sử dụng trên github:

1. Heading
Bạn có thể viết các lớp tiêu đề h1, h2, h3 cho đến h6 bằng cách thêm số lượng ký tự # tương ứng vào đầu dòng.

# h1
## h2
### h3
#### h4
##### h5
###### h6

2. Highlight
Bạn có thể kẹp một từ ở đầu và cuối bằng 1 ký tự * để in nghiêng, 2 ký tự ** để bôi đậm và chuỗi ký tự **_ để vừa in nghiêng vừa bôi đậm.

*in nghiêng*
**bôi đậm**
**_vừa in nghiêng vừa bôi đậm_**

3. Link, image
Markdown cũng hỗ trợ cho các link và image.

Để chèn link vào bài viết, bạn dùng cú pháp sau:

[title](http://~)

Cú pháp chèn hình ảnh như sau:

 ![alt](http://~)

Mẹo nhỏ: để sử dụng cú pháp markdown cho image, bạn cần có link của ảnh http://~ , có thể copy từ internet hoặc upload lên. Để upload lên, bạn kéo thả ảnh vào ngay khung markdown của github.

Khi upload xong, lúc này ta có một link image đã upload (như trong ảnh là: https://user-images.githubusercontent.com/14874349/124220719-2b933180-dab3-11eb-9d9d-bdf40045e8d8.png). Sau đó các bạn có thể sử dụng thẻ img vừa upload mà không cần đổi sang markdown hoặc có thể lấy link ở trên chuyển sang mã markdown để sử dụng ở các chức năng khác của github.

4. List item
List dạng gạch đầu dòng.

Để sử dụng list item, bạn dùng cú pháp:

* item
hoặc
- item

List dạng số

1. item

5. Horizonal Rules
Để có được horizonal rules bạn chỉ cần viết cú pháp:

***
horizonal rules

6. Blockquotes
Cú pháp blockquotes là:

> text

7. Insert Code
Cú pháp được sử dụng:

    ```
    // Insert code here 1
    // Insert code here 2
    // Insert code here 3
    ```

sử dụng khi cần thêm 1 block code. Nếu thêm inline code thì các bạn dùng:

   `Inline code`

8. Task list
Bạn có thể tạo một checklist ngay trên markdown với cú pháp.

- [ ] Task list name

8. Static Web trên Github

Github static page là một tính năng của github giúp bạn có thể xem được nội dung trang web của bạn. Mình đã tạo trước một video hướng dẫn giúp các bạn deploy static page trên github.
Deploy Static Web dùng Github Page

IMAGE ALT TEXT HERE

Bài tập: để làm quen với các cú pháp markdown

các bạn hãy thử tạo lại 1 văn bản bằng markdown trên github wiki của mình
(có thể tham khảo link này) và sau đó có thể khoe ảnh chụp kết quả bằng cách comment tại bài này nhé.

Trên đây, mình vừa giới thiệu nội dung về Github và các chức năng chính. Trong bài tiếp theo mình sẽ giới thiệu về một workflow cơ bản tại Haposoft khi làm việc với git/github.
(Link bài tiếp theo của series tại đây)

Ngoài ra, các bạn có thể xem lại bài trước của series này, Giới thiệu các khái niệm cơ bản của git để củng cố thêm kiến thức về git nhé.
(Link bài trước của series tại đây)