Hướng dẫn đóng góp lên project tại Github

Rate this post

Đóng góp (Contribute) là hình thức bạn tham gia đóng góp bằng cách code thêm tính năng, sửa lỗi hay làm các hoạt động liên quan tới một project cụ thể. Code Tốt sẽ hướng dẫn bạn cách đóng góp lên một dự án trên Github.

Github và các mã nguồn mở

Github là một công ty cung cấp dịch vụ lưu trữ code theo các phiên bản (version control) được giới lập trình viên ưa thích. Bạn có thể đăng ký miễn phí, tập làm quen với công cụ Git và nhiều hơn nữa trên Github.

Github có lịch sử gắn liền với cộng đồng mã nguồn mở (tức các mã nguồn với các giấy phép cho người dùng thoải mái chỉnh sửa và phân phối lại nó).

Tại sao nên đóng góp cho một dự án mã nguồn mở?

Khác với các phần mềm như Microsoft hay nhiều công ty phát hành, cộng đồng mã nguồn mở hoạt động và tồn tại bởi chính đóng góp của người dùng – là lập trình viên, kĩ sư máy tính, thậm chí người dùng bình thường nhưng quan tâm và đóng góp.

Hoạt động đóng góp thường bao gồm nhiều hình thức. Bạn có thể:

  • Thông báo lỗi, đề nghị tính năng mới, đóng góp đánh giá qua issues.
  • Sửa code và đẩy lên (pull request – contribute)

Với các hoạt động này, cộng đồng mã nguồn mở đã có nhiều bước phát triển, phải kể đến sự ra đời của WordPress với hơn 30% website được làm bằng mã nguồn này trên mạng Internet toàn cầu.

Việc đóng góp cũng mang lại lợi ích cho cả hai phía:

  • Người đóng góp đồng thời cũng là người hưởng lợi bởi được sử dụng project, tham gia phát triển các tính năng mới phù hợp nhu cầu cá nhân hoặc tổ chức.
  • Project càng được nhiều người quan tâm và đóng góp thì mức độ ổn định, an toàn và phát triển càng cao.

Bởi vậy, đóng góp vào một dự án mã nguồn mở không khác gì một hoạt động xã hội giúp ích cho rất nhiều người, chỉ có khác là thay vì gặp mặt trực tiếp thì bạn đang sử dụng bàn phím mà thôi.

Hướng dẫn cách đóng góp bằng code trên Github

Bước 1: Tạo tài khoản trên Github

Đầu tiên, bạn cần có một tài khoản trên Github. Nó cũng đăng ký dễ dàng và hoàn toàn miễn phí tại đây.

Bước 2: Fork project đã có sẵn trên Github

Tiếp đến, bạn truy cập vào project bạn muốn đóng góp, ví dụ project Oak WordPress Theme do mình đã tạo. Bạn nhấp vào nút “Fork” ở trên cùng. Thao tác này sẽ tạo ra một bản sao của project nhưng trên tài khoản của bạn.

Fork project trên Github

Bước 3: Lấy code về máy tính

Sau khi bạn đã fork thành công, ta sẽ cần clone project về máy tính. Bạn có thể sử dụng HTTPS hoặc SSH (riêng SSH thì yêu cầu bạn tạo key Github đồng bộ nữa) như trong hình:

Clone project trên Github

Ta truy cập vào thư mục htdocs hoặc www trên máy tính và chạy lệnh bên dưới, thay thế bằng path clone của bạn trên project tương ứng:

git clone [email protected]:khoipro/oak-wordpress-theme

Hoặc

git clone https://github.com/khoipro/oak-wordpress-theme.git

Sau đó bạn truy cập vào thư mục vừa clone, ví dụ ở đây là vào thư mục /htdocs/oak-wordpress-theme chẳng hạn.

Bước 4: Tạo branch riêng

Tuỳ theo project mà tạo branch từ nhánh master hay nhánh develop. Thông thường các tính năng mới sẽ nằm trên nhánh develop, còn nhánh `master chỉ chứa các bản hotfix các lỗi.

Việc tạo branch thông thường cần theo quy ước của project đó. Bạn đọc file CONTRIBUTING.md ở ngay trong project để nắm được. Nhiều bên thường áp dụng Git Flow như thế này, kết hợp với các phiên bản Code Versioning.

Chẳng hạn, bạn có thể tạo các branch ví dụ như sau:

  • feature/homepage từ branch develop để cập nhật các tính năng hoặc module mới cho trang chủ.
  • hotfix/homepage từ branch master để sửa các lỗi đã có trên trang chủ.

Đó là hai ví dụ phổ biến khi bạn tạo branch. Việc này khá quan trọng vì khi hiển thị lên trên project và tạo pull request, thông thường chủ project cần biết ta làm gì trên project của họ.

Bước 5: Thêm upstream

Bạn cần thêm upstream để nó có thể kết nối tới project mình đã fork. Cú pháp ví dụ như sau:

git remote add upstream https://github.com/khoipro/oak-wordpress-theme.git

Bước 6: Sửa code và đẩy code lên

Giờ, sau khi bạn đã add xong upstream, checkout branch riêng, hãy sửa code và commit lên như bình thường. Lưu ý quan trọng là cách bạn đặt tên phải đảm bảo theo hướng dẫn tại CONTRIBUTING.md hoặc nên theo quy ước đặt tên commit mà Code Tốt đã chia sẻ.

Lấy ví dụ tôi có module carousel định thêm vào trang templates Homepage, ta sẽ làm như sau:

git add template-parts/carousel.php src/scss/modules/carousel.scss/ templates/homepage.php
git commit -m "Add module Carousel on Homepage"
git push -u origin master

Bước 7: Tạo pull request trên project gốc

Sau khi bạn đã chắc chắn mình push code lên thành công, hãy truy cập vào project ban đầu (không phải trong tài khoản của bạn), bạn sẽ thấy hiện lên:

Tạo pull request trong Github

Bạn nhấp chuột vào nút “Compare & pull request” để tiến hành tạo pull request. Sẽ có một mục nhập hiện ra, bạn chủ yếu mô tả những gì mình làm và lý do cần làm:

Tạo pull request mới trong Github

Cuối cùng, nhấp chuột vào nút “Create pull request“. Vậy là bạn đã hoàn tất phần việc của mình.

Tiếp theo, bạn cần chờ sự phản hồi từ người chủ project, tham gia hỗ trợ, giải thích để đảm bảo khi merge thì nó sẽ hoạt động. Nếu mọi chuyện suôn sẻ, xin chúc mừng, bạn đã sẵn sàng tham gia đóng góp vào cộng đồng mã nguồn mở Github!

Cách làm này cũng gần tương tự trên GitLab.

Viết một bình luận


Chuyên gia về Web
Bạn muốn làm việc với dịch vụ website do chúng tôi triển khai?
Gọi tư vấn 0982.90.4343
Chuyên gia về Web
Bài viết liên quan

07/04/2024

PHP: Format date dd/mm/yyyy và so sánh với Date hiện tại
Một vấn đề hay gặp trong quá trình xử lý PHP datetime là tình huống format date từ định dạng...

02/01/2024

Fix lỗi npm không thể cài các package devDependencies
Khi cài đặt dự án,  có lúc bạn sẽ cài mãi cũng không đủ các package npm, đặc biệt là...
Gọi file PHP trong WordPress

19/09/2023

Cài đặt và sử dụng WP-CLI trên môi trường Linux
Trên một số môi trường Hosting có thể cung cấp SSH hoặc Terminal access, song không có sẵn WP-CLI để...
Import database MySQL lớn trên môi trường Docker

06/08/2023

Import database MySQL lớn trên môi trường Docker
Mình sử dụng EasyPanel để quản lý các Docker và build môi trường app. Nay gặp tình huống phải import...