Một nhà phát triển giới thiệu về GitHub

Quan tâm đến việc học JavaScript? Nhận ebook miễn phí của tôi tại jshandbook.com

GitHub là một trang web lưu trữ hàng tỷ dòng mã và nó là nơi mà hàng triệu nhà phát triển tập hợp mỗi ngày để hợp tác và báo cáo các vấn đề với phần mềm nguồn mở.

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 xung quanh Git.

MIPO: Nếu bạn chưa biết về Git, hãy xem hướng dẫn về Git của tôi.

Là một nhà phát triển, bạn có thể tránh sử dụng GitHub hoặc một công cụ dựa trên Git khác hàng ngày như một phần công việc của bạn. Nó được sử dụng để lưu trữ mã của bạn hoặc để cộng tác trên những người khác mã của Google. Bài viết này giải thích 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.

Tại sao lại là GitHub?

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

GitHub, sau tất cả, đượ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ã người. Vậy tại sao bạn nên sử dụng điều đó thay vì các nền tảng tương tự như BitBucket hoặc GitLab?

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ã hóa chính đã di chuyển theo thời gian từ các hệ thống kiểm soát phiên bản khác sang Git vì sự tiện lợi của nó và GitHub đã được định vị tốt trong lịch sử và nỗ lực rất nhiều để phục vụ nhu cầu của cộng đồng Nguồn mở.

Vì vậy, ngày nay, bất cứ khi nào bạn tìm kiếm một thư viện nào đó, bạn sẽ 99% thời gian 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 riêng trên GitHub vì sự tiện lợi của nền tảng.

Bây giờ hãy bắt đầu với các khái niệm cụ thể về Git mà nhà phát triển cần biết.

Vấn đề GitHub

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

Họ 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à liên kết các vấn đề với các mốc 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ẽ mở cho đến khi bạn đóng nó (ví dụ nếu bạn tìm ra vấn đề bạn gặp phải) hoặc chủ sở hữu repo đóng nó.

Đôi khi, bạn sẽ nhận được câu trả lời dứt khoát và đôi khi vấn đề sẽ bị bỏ ngỏ và được gắn thẻ với một số thông tin phân loại nó. Sau đó, nhà phát triển có thể quay lại để 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 có thể mong đợi các câu trả lời nhanh chóng. Nhưng một số kho lưu trữ nguồn mở được xuất bản bởi các công ty cung cấp dịch vụ xung quanh mã đó, có các 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 sử dụng kiến ​​trúc dựa trên plugin. Và vì vậy họ đã trả tiền cho các nhà phát triển làm việc trong dự án nguồn mở.

Mã hóa xã hội

Tín dụng hình ảnh: https://octodex.github.com

Một vài năm trước, logo GitHub bao gồm khẩu hiệu mã hóa xã hội trên mạng xã hội.

Điều này có nghĩa là gì, và nó vẫn còn liên quan? Nó chắc chắn là như vậy.

Theo

Với GitHub, bạn có thể theo dõi nhà phát triển hoặc kho lưu trữ bằng cách truy cập vào hồ sơ người dùng và nhấp vào theo dõi, theo dõi hoặc bằng cách nhấp vào nút xem trên đồng hồ trên một repo.

Trong cả hai trường hợp, hoạt động sẽ hiển thị trong bảng điều khiển của bạn. Theo dõi người dùng hoặc kho lưu trữ không giống như Twitter, nơi bạn thấy những gì mọi người nói - thay vào đó bạn thấy những gì mọi người làm.

Sao

Một tính năng lớn của GitHub là khả năng gắn dấu sao cho kho lưu trữ. Hành động này sẽ bao gồm nó trong danh sách kho lưu trữ được gắn dấu sao của bạn, cho phép bạn theo dõi các dự án bạn thấy thú vị và khám phá các dự án tương tự.

Nó cũng là một trong những cơ chế xếp hạng quan trọng nhất, vì càng nhiều ngôi sao repo, nó càng phổ biến và quan trọng hơn. Kết quả này cho thấy nó hiển thị nổi bật hơn trong kết quả tìm kiếm.

Các dự án lớn có thể có hàng chục ngàn ngôi sao.

GitHub cũng có một trang xu hướng trong đó có các kho lưu trữ có nhiều sao nhất trong một khoảng thời gian xác định (ví dụ: hôm nay hoặc tuần này hoặc tháng này).

Tham gia vào các danh sách xu hướng đó có thể gây ra các hiệu ứng mạng khác như được hiển thị 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 dĩa.

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

Đôi khi người giả mạo một kho lưu trữ có thể không bao giờ yêu cầu bạn hợp nhất bất cứ thứ gì. Họ có thể rẽ nhánh kho lưu trữ của bạn chỉ vì họ thích mã của bạn và quyết định thêm một cái gì đó lên trên đó mà họ không muốn sáp nhập lại vào kho lưu trữ ban đầu. Một người dùng cũng có thể sửa một lỗi mà họ gặp phải, đó là lỗi cụ thể đối với họ.

Phổ biến = tốt hơn

Nói chung, đó là tất cả các chỉ số chính về mức độ phổ biến của một dự án. Ngoài các chỉ số trên, 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à những dấu hiệu hữu ích về việc bạn có nên dựa vào thư viện hoặc phần mềm hay không.

Yêu cầu kéo

Trong phần trước tôi đã giới thiệu về Pull Request (PR) là gì. Để nhắc lại, một người có thể chia rẽ kho lưu trữ của bạn, thực hiện một số thay đổi và sau đó tạo yêu cầu kéo để 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, và nói chung là trường hợp dự án càng phổ biến thì càng có nhiều PR, như dự án React:

Khi một người gửi yêu cầu kéo, nó cần được xem xét bởi những người duy trì cốt lõi của dự án.

Tùy thuộc vào phạm vi yêu cầu kéo của bạn (số lượng thay đổi, số lượng điều bị ảnh hưởng bởi thay đổi của bạn hoặc mức độ phức tạp của mã được chạm vào), người bảo trì có thể cần nhiều thời gian hơn hoặc ít 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 dòng thời gian rõ ràng về những thay đổi 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 yêu cầu kéo.

Điều này có nghĩa là yêu cầu kéo không phải lúc nào cũng được chấp nhận nhanh chóng và không có gì đảm bảo rằng yêu cầu kéo sẽ không bao giờ được chấp nhận.

Trong ví dụ tôi đã đăng ở trên, có một yêu cầu kéo trong repo có từ 1,5 năm trước. Và điều này xảy ra trong tất cả các dự án - nó khá bình thường và có thể là do những lý do tôi đã đề cập ở trên.

Quản lý dự án

Cùng với các vấn đề, đó là nơi 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 cung cấp một vài tính năng 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ột bảng Kanban giúp tổ chức các vấn đề và công việc cần phải hoàn thành.

Wiki dự định sẽ được sử dụng làm tài liệu cho người dùng. Một trong những ứng dụng ấn tượng nhất của Wiki mà tôi đã thấy cho đến nay là Ngôn ngữ lập trình Go GitHub Wiki.

Một hỗ trợ quản lý dự án phổ biến là cột mốc. Nó là một phần của trang vấn đề và bạn có thể chỉ định các 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 đã tăng cường chức năng thẻ Git bằng cách giới thiệu các bản phát hành.

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

Bản phát hành GitHub xây dựng trên đầu thẻ Git và thể hiện bản phát hành hoàn chỉnh mã của bạn, cùng với tệp Zip, ghi chú phát hành và tài sản nhị phân có thể đại diện cho phiên bản hoạt động hoàn toàn 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 chương trình git dòng lệnh), tạo bản phát hành GitHub là một quy trình thủ công xảy ra thông qua Giao diện người dùng GitHub. Về cơ bản, bạn nói với GitHub để tạo một bản phát hành mới và cho họ biết thẻ nào bạn muốn áp dụng bản phát hành đó.

So sánh các 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 với một nhánh khác. Hoặc bạn có thể muốn so sánh 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ới chế độ xem so sánh: chỉ cần thêm / so sánh với phần cuối của tên repo.

Ví dụ: https://github.com/facebook/react/compare

Trong hình bên dưới, tôi so sánh React v15.x mới nhất với phiên bản v16.0.0-rc mới nhất có sẵn tại thời điểm viết bài này để xem những gì mà Thay đổi.

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

Webhooks và Dịch vụ

GitHub cung cấp nhiều tính năng giúp cho quy trình làm việc của nhà phát triển, chẳng hạn như webhooks và dịch vụ.

Webhooks

Webhooks 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ữ, ví dụ như khi mã được đẩy, một ngã ba được tạo ra hoặc một 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 POST đến URL mà chúng tôi bảo nó sẽ sử dụng.

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

Chúng tôi đẩy đến GitHub, GitHub nói với máy chủ mà chúng tôi đã đẩy và máy chủ lấy từ GitHub.

Dịch vụ

Các dịch vụ GitHub và các ứng dụng GitHub mới là các 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ử để chạy thử nghiệm tự động mỗi khi bạn đẩy một số cam kết mới, sử dụng TravisCI.

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

Bạn có thể tạo một tích hợp Codeclimate để phân tích mã và cung cấp một báo cáo về Nợ kỹ thuật của 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 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 với các dự án nguồn mở (hoặc nguồn đóng) GitHub là điều không thể bỏ qua.

Quan tâm đến việc học JavaScript? Nhận ebook miễn phí của tôi tại jshandbook.com