Giới thiệu của nhà phát triển về GitHub

GitHub là một trang web nơi hàng triệu nhà phát triển tập hợp mỗi ngày để cộng tác trên phần mềm nguồn mở. Đây cũng là nơi lưu trữ hàng tỷ dòng mã và cũng là nơi người dùng phần mềm báo cáo các vấn đề mà họ có thể gặp phải. Tìm hiểu tất cả các phần quan trọng nhất của GitHub mà bạn nên biết với tư cách là nhà phát triển

Giới thiệu về GitHub

GitHub là một trang web nơi hàng triệu nhà phát triển tập hợp mỗi ngày để cộng tác trên phần mềm nguồn mở. Đây cũng là nơi lưu trữ hàng tỷ dòng mã và cũng là nơi người dùng phần mềm báo cáo các vấn đề mà họ có thể gặp phải.

Nói tóm lại, nó là một nền tảng dành cho các nhà phát triển phần mềm và nó được xây dựng dựa trên Git.

MẸO: Nếu bạn chưa biết về Git, hãy xemHướng dẫn Git.

Là một nhà phát triểnbạn không thể tránh sử dụng GitHub hàng ngày, hoặc để lưu trữ mã của bạn hoặc để sử dụng mã của người khác. Bài đăng này giải thích cho bạn một số khái niệm chính về GitHub và cách sử dụng một số tính năng của nó để cải thiện quy trình làm việc của bạn và cách tích hợp các ứng dụng khác vào quy trình của bạn.

Tại sao GitHub?

Bây giờ bạn đã biết GitHub là gì, bạn có thể hỏitại saobạn nên sử dụng nó.

Rốt cuộc, GitHub được quản lý bởi một công ty tư nhân, thu lợi nhuận từ việc lưu trữ mã của mọi người. Vậy tại sao bạn nên sử dụng nó thay vì các nền tảng tương tự như BitBucket hoặc GitLab, những nền tảng rất giống nhau?

Bên cạnh sở thích cá nhân và lý do kỹ thuật, có một lý do lớn: mọi người đều sử dụng GitHub, vì vậy hiệu ứng mạng là rất lớn.

Các cơ sở mã chính đã được chuyển sang Git từ các hệ thống kiểm soát phiên bản khác theo thời gian, vì sự tiện lợi của nó và GitHub trong lịch sử đã có vị trí tốt trong (và đã nỗ lực rất nhiều để “giành chiến thắng”) cộng đồng Nguồn mở.

Vì vậy, ngày nay bất cứ khi nào bạn tra cứu thư viện nào đó, 99% bạn sẽ tìm thấy nó trên GitHub.

Ngoài mã Nguồn mở, nhiều nhà phát triển cũng lưu trữ các kho lưu trữ riêng trên GitHub vì sự tiện lợi của một nền tảng độc đáo.

Sự cố GitHub

Các vấn đề về GitHub là một trong những trình theo dõi lỗi phổ biến nhất trên thế giới.

Nó cung cấp cho chủ sở hữu của một kho lưu trữ khả năng tổ chức, gắn thẻ và gán cho các vấn đề quan trọng.

Nếu bạn mở một vấn đề trên một dự án do người khác quản lý, nó sẽ vẫn mở cho đến khi bạn đóng nó (ví dụ: nếu bạn tìm ra vấn đề mình gặp phải) hoặc nếu chủ sở hữu repo đóng nó.

Đôi khi bạn sẽ nhận được câu trả lời dứt khoát, những lần khác vấn đề sẽ được bỏ ngỏ và được gắn thẻ với một số thông tin phân loại vấn đề và nhà phát triển có thể quay lại vấn đề đó để khắc phục sự cố hoặc cải thiện cơ sở mã với phản hồi của bạn.

Hầu hết các nhà phát triển không được trả tiền để hỗ trợ mã của họ được phát hành trên GitHub, vì vậy bạn không thể mong đợi trả lời nhanh chóng, nhưng những lần khác, kho Mã nguồn mở được xuất bản bởi các công ty cung cấp dịch vụ xung quanh mã đó hoặc cung cấp dịch vụ thương mại cho các phiên bản có nhiều tính năng hơn hoặc kiến trúc dựa trên plugin, trong trường hợp đó, họ có thể đang làm việc trên phần mềm nguồn mở với tư cách là nhà phát triển trả phí.

Mã hóa xã hội

Vài năm trước, logo GitHub bao gồm khẩu hiệu “mã hóa xã hội”.

Điều này có nghĩa là gì, và điều đó có còn phù hợp không? Nó chắc chắn là như vậy.

Theo

Với GitHubbạn có thể theo dõi các nhà phát triển, bằng cách truy cập hồ sơ của họ và nhấp vào "theo dõi".

Bạn cũng có thể theo dõi một kho lưu trữ, bằng cách nhấp vào nút “đồng hồ đeo tay”Trên một repo.

Trong cả hai trường hợp, hoạt động sẽ hiển thị trong trang tổng quan của bạn. Bạn không theo dõi như trên Twitter, nơi bạn thấy những gì mọi người nói, nhưngbạn thấy những gì mọi người làm.

Các ngôi sao

Một thành tích lớn của GitHub là khả năngđánh dấu sao một kho lưu trữ. Hành động này sẽ đưa nó vào danh sách "kho lưu trữ có gắn dấu sao", cho phép bạn tìm thấy những thứ bạn thấy thú vị trước đây và nó cũng là một trong những cơ chế xếp hạng quan trọng nhất, vì repo càng có nhiều sao thì điều đó càng quan trọng và nó càng hiển thị trong kết quả tìm kiếm.

Các dự án lớn có thể có từ 70.000 sao trở lên.

GitHub cũng có mộttrang thịnh hànhnơi nó có các kho lưu trữ nhận được nhiều sao nhất trong một khoảng thời gian xác định, ví dụ như hôm nay hoặc tuần này hoặc tháng.

Việc lọt vào các danh sách thịnh hành đó có thể gây ra các hiệu ứng mạng khác như được giới thiệu trên các trang web khác, chỉ vì bạn có nhiều khả năng hiển thị hơn.

Cái nĩa

Chỉ số mạng quan trọng cuối cùng của một dự án là số lượng nhánh.

Đây là chìa khóa cho cách hoạt động của GitHub, vì fork là cơ sở của Yêu cầu kéo (PR), một đề xuất thay đổi. Bắt đầu từ kho lưu trữ của bạn, một người phân tách nó, thực hiện một số thay đổi, sau đó tạo PR để yêu cầu bạn hợp nhất những thay đổi đó.

Đôi khi, người mà fork không bao giờ yêu cầu bạn hợp nhất bất cứ thứ gì, chỉ vì họ thích mã của bạn và quyết định thêm thứ gì đó lên trên nó hoặc họ đã sửa một số lỗi mà họ đang gặp phải.

Một nhánh sao chép các tệp của một dự án GitHub, nhưng không sao chép bất kỳ dấu sao hoặc vấn đề nào của dự án gốc.

Nhìn chung, đó là tất cả các chỉ số chính về mức độ phổ biến của một dự án, và nói chung cùng với ngày cam kết mới nhất và sự tham gia của tác giả trong trình theo dõi vấn đề, là một dấu hiệu hữu ích về việc bạn có nên dựa vào một thư viện hoặc phần mềm.

Yêu cầu kéo

Trước khi tôi giới thiệu Yêu cầu kéo (PR) là gì

Bắt đầu từ kho lưu trữ của bạn, một người phân tách nó, thực hiện một số thay đổi, sau đó tạo PR để yêu cầu bạn hợp nhất những thay đổi đó.

Một dự án có thể có hàng trăm PR, nói chung, một dự án càng phổ biến thì càng có nhiều PR, như dự án React:

React Pull Requests

Khi một người gửi PR, một quy trình dễ dàng sử dụng giao diện GitHub, nó cần được những người duy trì cốt lõi của dự án xem xét.

Tùy thuộc vàophạm viPR của bạn (số lượng thay đổi hoặc số thứ bị ảnh hưởng bởi sự thay đổi của bạn, hoặc độ phức tạp của mã được chạm vào) người bảo trì có thể cần nhiều hơn hoặc ít thời gian hơn để đảm bảo các thay đổi của bạn tương thích với dự án.

Một dự án có thể có một lịch trình thay đổi rõ ràng mà họ muốn giới thiệu. Người bảo trì có thể muốn giữ mọi thứ đơn giản trong khi bạn đang giới thiệu một kiến trúc phức tạp trong một bài PR.

Điều này để nói rằngkhông phải lúc nào PR cũng được chấp nhận nhanh chóng, và cảkhông có gì đảm bảo rằng PR thậm chí sẽ được chấp nhận.

Trong ví dụ tôi đã đăng ở trên, có một bài PR trong repo có từ 1,5 năm trước. Và điều này xảy ra trongtất cảcác dự án.

Quản lý dự án

Cùng với các vấn đề, là nơi mà các nhà phát triển nhận được phản hồi từ người dùng, giao diện GitHub cung cấp các tính năng khác nhằm giúp quản lý dự án.

Một trong số đó làDự án. Nó rất mới trong hệ sinh thái và rất hiếm khi được sử dụng, nhưng nó là mộtbảng kanbangiúp sắp xếp các vấn đề và công việc cần phải thực hiện.

CácWikinhằm mục đích sử dụng làm tài liệu cho người dùng. Một trong những cách sử dụng Wiki ấn tượng nhất mà tôi thấy cho đến nay làĐi tới Wiki ngôn ngữ lập trình GitHub.

Một hỗ trợ quản lý dự án phổ biến khác làcột mốc quan trọng. Một phần của trang vấn đề, bạn có thể gán vấn đề cho các mốc cụ thể, có thể là mục tiêu phát hành.

Nói về các bản phát hành, GitHub nâng caoThẻ Gitchức năng bằng cách giới thiệuphát hành.

Thẻ Git là một con trỏ đến một cam kết cụ thể và nếu được thực hiện nhất quán, sẽ giúp bạn quay trở lại phiên bản mã trước đó của mình mà không cần tham chiếu đến các cam kết cụ thể.

Bản phát hành GitHub được xây dựng dựa trên các thẻ Git và đại diện cho bản phát hành mã hoàn chỉnh của bạn, cùng với các tệp zip, ghi chú phát hành và nội dung nhị phân có thể đại diện cho phiên bản hoạt động đầy đủ của sản phẩm cuối mã của bạn.

Mặc dù thẻ Git có thể được tạo theo chương trình (ví dụ: sử dụng Dòng lệnhgitchương trình), tạo bản phát hành GitHub là một quy trình thủ công diễn ra thông qua giao diện người dùng GitHub. Về cơ bản, bạn yêu cầu GitHub tạo một bản phát hành mới và cho họ biết bạn muốn áp dụng bản phát hành đó vào thẻ nào.

So sánh cam kết

GitHub cung cấp nhiều công cụ để làm việc với mã của bạn.

Một trong những điều quan trọng nhất bạn có thể muốn làm là so sánh một nhánh này với một nhánh khác. Hoặc so sánh bản cam kết mới nhất với phiên bản bạn hiện đang sử dụng để xem những thay đổi nào đã được thực hiện theo thời gian.

GitHub cho phép bạn làm điều này vớiso sánh xem, chỉ cần thêm/compaređến tên repo, ví dụ:https://github.com/facebook/react/compare

Compare View

Ví dụ ở đây tôi chọn để so sánhReact v15.xmới nhấtv16.0.0-rcphiên bản có sẵn tại thời điểm viết bài, để kiểm tra những gì đã thay đổi:

Compare React Versions

Quan điểm cho thấy bạnnhững cam kết đã thực hiệngiữa hai bản phát hành (hoặc thẻ hoặc tham chiếu cam kết) vàsự khác biệt thực tế,nếu số lượng thay đổi thấp hơn số tiền hợp lý.

Webhooks và dịch vụ

GitHub cung cấp nhiều tính năng trợ giúp quy trình làm việc của nhà phát triển. Một trong số đó là webhook, cái còn lại là dịch vụ.

Webhooks

Webhook cho phép các dịch vụ bên ngoài được ping khi một số sự kiện nhất định xảy ra trong kho lưu trữ, chẳng hạn như khi mã được đẩy, thực hiện fork, thẻ được tạo hoặc xóa.

Khi một sự kiện xảy ra, GitHub sẽ gửi một yêu cầu ĐĂNG đến URL mà chúng tôi đã yêu cầu nó sử dụng.

Cách sử dụng phổ biến của tính năng này là ping một máy chủ từ xa để tìm nạp mã mới nhất từ GitHub khi chúng tôi đẩy bản cập nhật từ máy tính cục bộ của mình.

Chúng tôi đẩy lên GitHub, GitHub cho máy chủ chúng tôi đã đẩy, máy chủ kéo từ GitHub.

Dịch vụ

Các dịch vụ GitHub và các ứng dụng GitHub mới, là những tích hợp của bên thứ 3 nhằm cải thiện trải nghiệm của nhà phát triển hoặc cung cấp dịch vụ cho bạn.

Ví dụ: bạn có thể thiết lập trình chạy thử nghiệm để chạy thử nghiệm tự động mỗi khi bạn đẩy một số cam kết mới, bằng cách sử dụngTravisCI.

Bạn có thể thiết lập Tích hợp liên tục bằng cách sử dụngCircleCI.

Bạn có thể tạo mộtCodeclimatetích hợp phân tích mã và cung cấp báo cáo nợ kỹ thuật và phạm vi kiểm tra.

Từ cuối cùng

GitHub là một công cụ và dịch vụ tuyệt vời để tận dụng, một viên ngọc quý thực sự trong bộ công cụ dành cho nhà phát triển ngày nay. Hướng dẫn này sẽ giúp bạn bắt đầu, nhưng trải nghiệm thực tế khi làm việc trên GitHub trên các dự án mã nguồn mở (hoặc mã nguồn đóng) là điều không thể bỏ qua.


Thêm hướng dẫn git: