Lập trình "an tâm" cùng anh GitHub Nếu bạn là dân lập trình, có lẽ bạn đã từng (hoặc sẽ) xoá một đoạn code vì nghĩ rằng đoạn code đó không cần dùng nữa, nhưng sau đó lại phát hiện là vẫn cần dùng đến nó. Khi đó, nếu bạn vẫn nhớ đoạn code đó thì chẳng có vấn đề gì, nhưng thường thì bạn sẽ khó mà nhớ rõ ràng từng dòng code được. Lúc này, nếu bạn có dùng một trình quản lý phiên bản mã nguồn thì mọi việc không dở khóc dở cười như vậy nữa. Một trình quản lý phiên bản mã nguồn (code version control) sẽ cho phép bạn lưu trữ lại các phiên bản khác nhau theo thời gian của các tập tin mã nguồn và cho phép bạn có thể quay lại một phiên bản cũ của tập tin đó khi cần thiết. GitHub là nền tảng hỗ trợ quản lý phiên bản như vậy. Quản lý phiên bản không chỉ được dùng cho lập trình. Bạn có thể gặp nó ở bộ ứng dụng văn phòng MS Office với tính năng Auto Recover, tính năng quản lý phiên bản của Google Drive, hay ứng dụng Time Machine của hệ điều hành macOS. Do đó, bạn có thể sử dụng GitHub để quản lý phiên bản cho bất cứ thứ gì trong máy tính của bạn. Bài viết này sẽ giới thiệu với các bạn nền tảng GitHub và tập trung vào quy trình làm việc với GitHub thông qua ví dụ cụ thể để bạn có thể nhanh chóng nắm bắt và sử dụng được GitHub cho công việc, học tập của bạn. Bài viết gồm những nội dung sau: Giới thiệu GitHubNhư đã nói ở trên, GitHub là nền tảng lưu trữ mã nguồn miễn phí (đối với các dự án mở). Anh ấy được xây dựng dựa trên hệ thống quản lý mã nguồn phân tán Git, nên anh ấy thừa hưởng được tất cả các tính năng nổi bật của công nghệ quản lý mã nguồn này. Dựa trên đó, anh ấy cung cấp một quy trình làm việc đơn giản và hỗ trợ lập trình cộng tác một cách hiệu quả. Hiện nay, GitHub là dịch vụ lưu trữ mã nguồn được sử dụng phổ biến nhất, thu hút không chỉ những lập trình viên, mà còn cả các nhóm, tổ chức, công ty nổi tiếng sử dụng để lưu trữ, quản lý mã nguồn. Do đó, GitHub cũng là nơi giúp bạn tiếp cận vô vàn kinh nghiệm lập trình. Dự án mở là dự án cho phép mọi lập trình viên khác có thể xem, sửa đổi, sử dụng mã nguồn trong dự án đó. Git là hệ thống quản lý mã nguồn phân tán. Nó cung cấp những lợi ích sau:
Cách quản lý phiên bản của GitHubGitHub sử dụng kỹ thuật quản lý phiên bản của Git. Do đó, nó coi dữ liệu của nó giống như một tập hợp các ảnh (snapshot) của một hệ thống tập tin nhỏ. Mỗi lần bạn thực hiện lưu trạng thái (commit), GitHub sẽ chụp một bức ảnh (snapshot) ghi lại nội dung của tất cả các tập tin tại thời điểm đó và tạo ra một tham chiếu tới ảnh đó. Để hiệu quả hơn, nếu như tập tin không có sự thay đổi nào, GitHub không lưu trữ tập tin đó lại một lần nữa mà chỉ tạo một liên kết tới tập tin gốc đã tồn tại trước đó. GitHub thao tác với dữ liệu như hình minh hoạ dưới đây. Cách thức quản lý này cũng giống như một hệ thống quản lý tập tin thu nhỏ. Do đó, GitHub có thể cung cấp nhiều tính năng, công cụ vô cùng mạnh mẽ. Tạo tài khoảnĐể bạn có thể lưu trữ mã nguồn và sử dụng các dịch vụ của GitHub, trước tiên, bạn phải tạo một tài khoản của GitHub. Để tạo tài khoản, đơn giản, trên trang web chính của GitHub, bạn bấm nút Sign up hoặc Sign up for GitHub. Tiếp theo, tại bước 1, bạn điền username, email và password (Ví dụ xem hình bên dưới). Password của bạn nên có ít nhất một ký tự in thường, một chữ số và gồm ít nhất 7 ký tự. Bấm Create an account để sang bước 2. Tại bước 2, bạn sẽ lựa chọn loại tài khoản. Hiện tại, GitHub cung cấp hai loại tài khoản là: miễn phí cho việc lưu trữ các dự án mở (chọn Unlimited public repertoires for free) và có phí (7 đô/tháng) cho lưu trữ các dự án đóng (chọn Unlimited private repertoires for $7/month). Bấm Continue để sang bước 3. GitHub sẽ gởi cho bạn một email vào địa chỉ mail của bạn đã cung cấp cho GitHub để xác thực. Trong email đó, bạn bấm đường link Verify email address để xác thực. Lúc này, GitHub sẽ gởi email chúc mừng và cho phép bạn tạo repertoire (kho) đầu tiên trên GitHub. Bạn bấm Read the guide để vào xem các hướng dẫn sử dụng của GitHub. Chọn Start a project để bắt đầu tạo một repertoire đầu tiên trên GitHub. Tuy nhiên, trước tiên, tôi muốn giới thiệu trang web của bạn trên GitHub. Để mở trang web của bạn, bạn bấm vào nút avatar phía trên bên phải, rồi chọn Your profile như hình dưới đây. Trang của bạn trên GitHubĐây chính là trang web mà người dùng khác trên GitHub có thể xem thông tin và các dự án mở của bạn, cũng như là nơi bạn quản lý các dự án của bạn và xem các vấn đề, trao đổi, đóng góp cho các dự án của người dùng khác. Trang web của bạn (ngoài cách ở ngay phía trên) có thể truy cập thông qua địa chỉ http://github.com/<username> (với <username> thay bằng username khi bạn tạo tài khoản, ví dụ: với tài khoản vừa rồi tôi tạo thì địa chỉ sẽ là http://github.com/lvman). Khi truy cập vào lần đầu, trang web sẽ có dạng như sau: Cột bên trái, sẽ có ảnh avatar, username, thông tin mô tả, ngày tạo tài khoản,... Tất cả những thông tin này có thể được chỉnh sửa bằng cách bấm vào nút Edit profile (phía trên bên phải của trang web trên). Phần chính của giao diện này là 3 tab: Overview, Repositories và Public activity. Tab Overview chứa thông tin tóm tắt về dự án bạn đang làm việc, một lược đồ cho thấy quá trình đóng góp của bạn và những hoạt động gần đây của bạn. Tab Repositories cho bạn quản lý tất cả các dự án bạn đang làm việc. Còn tab Public activity cho bạn xem các đóng góp gần đây của bạn trên các dự án. Dưới đây là một ví dụ tab Repositories của tôi: GitHub Desktop và GitHub Extension for Visual StudioBên cạnh việc dùng web để quản lý các dự án, bạn có thể sử dụng phần mềm GitHub Desktop để đồng bộ với các dự án trên GitHub về máy của mình. Ứng dụng này hỗ trợ đầy đủ quy trình làm việc, quản lý dự án với GitHub. Còn nếu bạn sử dụng Visual Studio 2015 trở lên, bạn có thể tải về GitHub Extension for Visual Studio. Ứng dụng này tích hợp trực tiếp vào giao diện Visual Studio và cũng hỗ trợ đầy đủ quy trình làm việc, quản lý dự án với GitHub ngay trên giao diện của Visual Studio. Trong bài viết này, tôi chỉ hướng dẫn sử dụng GitHub Desktop. Một điểm cần lưu ý khi làm việc với GitHub Desktop và GitHub Extension (cũng như Git) đó là khi bạn sao chép (clone) một kho (repository) với GitHub thì kho đó sẽ được sao chép một bản về trên máy của bạn và bản đó tồn tại độc lập với bản ở trên GitHub (xem hình ở dưới). Thao tác này khác với tính năng đồng bộ thông thường mà chúng ta hay thấy. Do đó, mọi thao tác sửa đổi, lưu trạng thái (commit - sẽ nói rõ ở phần sau) sẽ chỉ được thực hiện ở máy của bạn. Chỉ đến khi bạn đồng bộ (publish hoặc sync) với máy chủ GitHub thì những sửa đổi và lần lưu trạng thái đó mới được chuyển lên GitHub. Đến lúc này, bạn bắt đầu bước vào quy trình làm việc với GitHub. Quy trình làm việc với GitHubQuy trình làm việc với GitHub bao gồm các bước như sau:
Để minh hoạ cho quy trình làm việc với GitHub trên, chúng ta sẽ cùng đi qua quá trình làm dự án Sổ danh bạ (Contatcts). Đây là ứng dụng đơn giản, chỉ để minh hoạ. Do đó, chỉ có 2 lớp: lớp Contact và lớp Program. Lớp Contact dùng để mô hình hoá một thông tin liên lạc của một người nào đó. Lớp Pogram thì chứa chương trình chính của ứng dụng. Trong lớp Program, chúng ta sẽ tổ chức một danh sách các đối tượng Contact (List<Contact>). Ứng dụng này chỉ có tính năng đơn giản là nhập dữ liệu danh bạ vào đến khi nào không còn muốn nhập nữa, rồi in ra danh sách tất cả các danh bạ đã nhập. Để thấy rõ được quy trình, các bước làm việc cộng tác, phần minh hoạ sẽ có sự tham gia của hai lập trình viên: anh A (tài khoản tên lvman) và anh B (tài khoản tên manleviet). Ngoài ra, các thuật ngữ cũng sẽ được giải thích bên trong các bước của quy trình. Ngày thứ nhấtTrong ngày đầu tiên của dự án, anh A khởi tạo dự án sẽ tiến hành những công việc sau:
Tạo một kho (repository)Kho thường được dùng để tổ chức một dự án (project), nó có thể chứa các thư mục, tập tin, ảnh, video, bảng biểu và dữ liệu - tất cả những gì mà dự án của bạn cần. Khi tạo một kho, bạn nên thêm một tập tin README hoặc một tập tin thông tin giới thiệu về dự án của bạn, hoặc một tập tin chứa thông tin license. Một kho (repository) có thể lưu trữ nhiều dự án. Điều này tuỳ vào sự quản lý của bạn. Trong lập trình C# với Visual Studio, bạn có thể lưu trữ một solution trong một kho, solution đó có thể chứa nhiều project; hay thậm chí một kho có thể chứa nhiều solution.
Để tạo một kho, bạn có lựa chọn:
Tạo kho sử dụng trang web GitHubTrên trang web GitHub, sau khi đăng nhập, bạn nháy chuột vào nút dấu + (bên cạnh avatar của bạn ở góc trên bên phải) và chọn mục New repository. Giao diện trang web để tạo kho sẽ xuất hiện ra như sau: Bạn điền tên của kho vào ô Repository name, điền mô tả của dự án vào ô Description, chọn Public cho loại kho và chọn mục Initialize this repository with a README trước khi bấm nút Create repository để tạo. Khi đó, giao diện của trang web sẽ chuyển vào trang nội dung của kho mới được tạo. Bởi vì, chúng ta chọn mục Initialize this repository with a README, nên GitHub sẽ tự động tạo tập tin README.md với nội dung được lấy từ ô Description. Bạn có thể bấm vào nút Clone or download (màu xanh lá cây) để thực hiện sao chép (clone) dự án về máy sử dụng GitHub Desktop. Giao diện trang web của một khoGiao diện trang web của một kho (như hình ngay trên) sẽ bao gồm 7 tab:
Tạo kho sử dụng GitHub DesktopĐể tạo một kho sử dụng GitHub Desktop, bạn bấm vào nút dấu + (phía trên bên trái của cửa sổ GitHub Desktop), chọn tab Create, nhập tên của kho muốn tạo, chọn đường dẫn để lưu kho (đương nhiên là trong máy của bạn), rồi bấm Create repository như hình dưới đây. Lúc này, GitHub Desktop sẽ tạo cho bạn một kho tại vị trí bạn đã chọn. Kho này chỉ tồn tại trong máy tính của bạn. Bạn phải bấm nút Publish (ở trên bên phải của GitHub Desktop) để đẩy nó lên GitHub. Tuy nhiên, hiện tại, bạn hãy khoan bấm vội bởi vì kho hiện tại vẫn chưa có gì cả. Chúng ta sẽ lập trình các lớp đầu tiên xong rồi hẳn Publish. Khi tạo kho bằng cách này, bạn sẽ không có sẵn tập tin README.md, mà phải tự tạo nếu muốn. Giao diện của GitHub DesktopGiao diện của GitHub Desktop được chia ra làm 2 phần. Phần ngoài cùng bên trái liệt kê tất cả các kho đang nằm trên máy của bạn. Bạn có thể bấm phải chuột vào tên các kho, rồi bấm Open in Explorer để duyệt qua thư mục chứa nội dung của kho sử dụng Windows Explorer. Phần chính của ứng dụng lại chia thành hai tab: Changes và History. Tab Changes để thể hiện những thay đổi trên các tập tin trong kho. Tab History ghi nhận lịch sử các lần lưu trạng thái (commit), cập nhật (publish/sync). Phía dưới 2 tab là phần thể hiện cho các nhánh làm việc (branch) (nhánh là gì sẽ được nói rõ ở phần sau). Như trong hình, ta có nhánh master, là nhánh gốc của bất kỳ một kho nào. Trên nhánh master, hiện có 2 vòng tròn. Vòng tròn màu xanh thể hiện điểm mốc tạo ra kho và vòng tròn màu trắng đứt nét thể hiện phiên bản làm việc đang ở trên nhánh master. Phần còn lại của giao diện GitHub Desktop được chia ra 2 ngăn, 1 ngăn để thể hiện danh sách các tập tin được thay đổi, 1 ngăn thể hiện nội dung thay đổi. Như vậy, anh A đã tạo được kho contactsapp trên máy tính sử dụng GitHub Desktop. Tiếp theo, anh A mở Visual Studio để lập trình dự án. Đoạn mã đầu tiên cho ứng dụng ContactsTạo project trong Visual StudioSau khi mở ứng dụng Visual Studio, anh A tạo ứng dụng loại Console Application và trong ô Location, anh A chọn đến thư mục đã tạo khi tạo kho bằng GitHub Desktop (xem hình dưới). Sau khi bấm OK, Visual Studio sẽ tạo cho một dự án mới và tập tin Program.cs được mở ra sẵn. Mã nguồn lớp ContactTiếp theo, anh A tạo một Class mới có tên là Contact với mã nguồn như sau: Trong đoạn mã nguồn trên, lớp Contact có 4 biến thành phần ho, ten, diachi và sdt để lưu họ tên, địa chỉ và số điện thoại của một người nào đó; 8 hàm get, set thực hiện chức năng lấy thông tin ra và gán thông tin vào các biến thành phần trên; 1 hàm cấu tử để khởi tạo giá trị cho các biến thành phần. Mã nguồn lớp ProgramTương tự, anh A tiếp tục viết mã nguồn của lớp Program như dưới đây: Như vậy, anh A đã hoàn thành mã nguồn của ngày đầu tiên. Anh A chạy và kiểm tra chương trình có đúng như mong muốn hay không. Mọi việc đều ổn. Anh A quay lại với ứng dụng GitHub Desktop để thực hiện lưu trạng thái (commit) và đẩy kho lên web GitHub (publish). Giao diện tab Changes trên GitHub DesktopLúc này, trong GitHub Desktop, anh A bấm vào tab Changes để xem những thay đổi trong kho contactsapp được GitHub Desktop ghi nhận như thế nào. Ở ngăn nhỏ, bạn sẽ thấy danh sách tất cả các tập tin có sự thay đổi (tạo mới hay sửa nội dung). Còn ở ngăn lớn, là nội dung một tập tin đang được chọn xem (trong hình là tập tin Contact.cs). Các dòng màu xanh lá cây với dấu cộng ở đầu dòng thể hiện là các dòng mới được thêm vào, màu đỏ với dấu trừ ở trước thể hiện dòng bị xoá. Ở bên dưới ngăn nhỏ, bạn có 2 ô Summary, Description và 1 nút Commit to master được dùng để chấp thuận chuyển giao những thay đổi này. Lưu trạng thái và đẩy kho lên web GitHubThực hiện lưu trạng tháiĐến đây, anh A điền mô tả ngắn cho những thay đổi vào ô Summary, điền mô tả chi tiết của những thay đổi vào ô Description, rồi bấm nút Commit to master. Những thay đổi đã được lưu lại. Lúc này, nhánh master sẽ có thêm một vòng tròn liền nét màu trắng để thể hiện cho lần lưu trạng thái vừa rồi (Xem hình dưới). Đẩy kho lên web GitHubĐến đây, anh A bấm nút Publish để đẩy kho lên web GitHub. Trong khung mới hiện ra, bạn điền mô tả cho dự án vào ô Description và bấm nút Publish contactsapp. Sau khi chờ đợi một đoạn thời gian để GitHub Desktop sao chép các tập tin trong kho lên web GitHub, nạn có thể truy cập web GitHub để kiểm tra kho của bạn đã được đẩy lên hay chưa (như hình dưới đây). Kết luận của ngày thứ nhấtĐể tạo một kho bạn có hai cách là sử dụng trang web của GitHub hoặc sử dụng ứng dụng GitHub Desktop. Nếu sử dụng trang web GitHub thì sau khi tạo xong, bạn phải sao chép (clone) kho đó về máy để làm việc, rồi đồng bộ (sync) lên web GitHub sau mỗi lần lưu trạng thái (commit). Còn nếu bạn sử dụng ứng dụng GitHub Desktop để tạo thì bạn phải đẩy kho đó lên GitHub (publish) sau lần lưu trạng thái (commit) đầu tiên. Ngày thứ haiTrong ngày tiếp theo này, anh B sẽ tham gia vào dự án và cùng làm việc. Những công việc anh A và anh B đã thực hiện trong ngày này như sau: Ở các mục tiếp theo, mục nào màu xanh là công việc anh A làm, mục nào màu cam là công việc của anh B làm, mục nào màu đen là cả hai cùng làm.
Mời người khác tham gia cùng dự ánĐể mời người khác (đã có tài khoản của GitHub), trong trang web của kho, bạn chuyển đến tab Settings, chọn Collaborator, gõ tên hoặc địa chỉ email của người bạn muốn mời vào ô Search by username, fullname or email address. Ví dụ hình bên dưới, anh A gõ tên anh B vào và GitHub tự động tìm kiếm và đề xuất ra những tài khoản có cùng tên hoặc tên gần giống như vậy. Sau khi chọn tài khoản người muốn mời xong bạn bấm nút Add collaborator. Chấp nhận lời mời và sao chép (clone) kho về máy để xem mã nguồnLúc này, anh B sẽ nhận được một thư mời. Anh B vào trang web GitHub và bấm vào nút Notifications (nút hình quả chuông, bên cạnh avatar) để xem thư mời. Anh B sẽ dùng trình duyệt Firefox để phân biệt với trình duyệt Safari của anh A. Sau khi bấm Accept để chấp nhận lời mời, giao diện của trang web GitHub sẽ như sau: Lúc này, anh B có thể bấm Clone or download để sao chép mã nguồn của anh A về máy để ngâm cứu. Trao đổi, bình luận trên các lần lưu trạng thái (commit)Lúc này, anh B mở Visual Studio để xem phần mã nguồn của anh A và lên web GitHub để viết các nhận xét trong lần lưu trạng thái gần nhất (có tên là Mã nguồn của ngày đầu tiên - Bấm nút commit trong tab Code). Anh B và anh A trao đổi với nhau tại lần lưu trạng thái đó và chỉ ra những tính năng cần làm (xem ví dụ ở hình bên dưới). Như vậy, anh A và anh B xác định sẽ cùng nhau phát triển thêm 2 tính năng mới:
Để xem các thông báo của các trao đổi này, bạn phải chuyển ra trang chủ của GitHub (www.github.com). Quản lý dự án với tab ProjectsAnh A vào tab Projects (như hình bên dưới) trong kho contactsapp, bấm nút Create a project để bắt đầu tạo một trang quản lý dự án mới theo kiểu kanban. Lúc này, GitHub sẽ hiển thị form (như hình bên dưới) cho phép bạn điền tên (Name) và mô tả (Description) cho dự án. Rồi bạn bấm Save project để lưu lại. GitHub sẽ tạo cho bạn một dự án mới (theo ví dụ hình trên thì dự án này có tên là Contacts), trong đó, bạn có thể tạo các cột tương ứng với tình trạng của các nhiệm vụ (task). Mỗi cột sẽ chứa nhiều nhiệm vụ. Bạn có thể kéo thả các nhiệm vụ qua lại giữa các cột để chuyển trạng thái cho các nhiệm vụ. Ví dụ, với dự án Contacst hiện tại, anh A sẽ tạo 3 cột TODO, In Progress và Done (tức là: cần làm, đang làm và đã xong) và có 2 nhiệm vụ đang cần làm ở cột TODO (như hình bên dưới). Quản lý các vấn đề (issue)Sau khi tạo xong danh sách các công việc cần làm, anh A chuyển sang tab Issues (xem hình bên dưới) để tạo các vấn đề (issue). Các vấn đề này được dùng để các lập trình viên thông báo cho nhau biết các lỗi hay các vấn đề cần giải quyết trong các lần lưu trạng thái (commit). Mỗi vấn đề sẽ có một mã số (ghi sau dấu #), có tên và mô tả. Bạn còn có thể gán nhãn, gán điểm mốc, gán người phụ trách giải quyết vấn đề. Bạn có thể trao đổi ý kiến trên các vấn đề và đóng (close) vấn đề lại nếu đã giải quyết xong. Tạo vấn đề (issue) ngay trong tab IssuesĐể tạo một vấn đề mới, chúng ta bấm nút New issue. Trong trang web mới (như hình bên dưới), bạn điền tên của vấn đề, viết mô tả nội dung vấn đề. Bạn cũng có thể gán nhãn (label), thiết lập mốc (milestone) và chỉ định người đảm trách việc xử lý vấn đề (assignees). Sau khi làm xong, bạn bấm Submit new issue để hoàn tất. Đúng vậy, bạn có thể tạo một vấn đề từ các nhiệm vụ trong tab Projects. Để làm việc đó, bạn bấm nút mũi tên hướng xuống bên phải các nhiệm vụ, rồi chọn Convert to issue (như hình dưới đây). Sau khi thực hiện xong, GitHub sẽ chuyển nhiệm vụ đó thành một vấn đề và có liên kết để bạn bấm vào xem và sửa đổi nội dung của nó (xem hình bên dưới). Cũng giống như tạo vấn đề trong tab Issues, bạn bấm vào liên kết đó để viết mô tả (phần chính của giao diện trang web), gán nhãn, gán mốc, gán người thực hiện (ngăn bên phải của trang web) (xem hình bên dưới). Với anh B, mỗi khi có một vấn đề (issue) mới được tạo ra hay thay đổi, thì GitHub đều báo về cho anh B. Anh B có thể xem, bình luận và có thể thao tác trên dự án Contacts trong tab Projects vừa được tạo (các hình bên dưới). Trên hình trên, anh B đã kéo nhiệm vụ Thuộc tính sang cột In Progress để bắt đầu giải quyết nhiệm vụ này. Phân tiếp theo dưới đây sẽ được thể hiện trong hai cột để thể hiện các công việc này cùng đồng thời diễn ra. Cách đọc tốt nhất của phần này là đọc từng cột một. Nếu trang web hiển thị mất cột, bạn vui lòng giảm kích cỡ chữ sẽ thầy trọn cả hai cột. Quản lý và thảo luận trên các yêu cầu gộpAnh A nhận được email thông báo có yêu cầu gộp #5 từ nhánh master của anh B vào nhánh master của anh A. Anh B nhận được email thông báo có yêu cầu gộp #4 từ nhánh fileio vào nhánh master của anh A. Vì cả hai yêu cầu gộp này đều là vào nhánh master của A, cho nên chỉ có thể xem nó trên kho của anh A. Tất các yêu cầu gộp trên đều được thông báo qua mail hoặc xem tại trang chủ của GitHub (khi đã đăng nhập). Anh A và B truy cập vào kho của anh A trên GitHub, giao diện trang tab Pull requests như sau: Anh A vào xem yêu cầu gộp có tên Sử dụng thuộc tính (của anh B), giao diện trang web như sau: Trong trang web cho từng yêu cầu gộp, chúng ta có thể xem thông tin của lần lưu trạng thái muốn được gộp, cụ thể những thay đổi trên các tập tin, viết bình luận và thực hiện gộp (Merge pull request). So sánh mã nguồn ngay trên GitHubGitHub hỗ trợ công cụ cho phép so sánh mã nguồn giữa các lần lưu trạng thái. Để xem phần so sánh này, bạn vào lớp Files changed. Ví dụ dưới đây là trang xem các tập tin có thay đổi theo kiểu tách biệt (Split). Nếu muốn xem mã nguồn ngay trên máy, ví dụ anh B muốn xem mã nguồn của anh A. Trên GitHub Desktop, đầu tiên, anh B thực hiện đồng bộ (sync). Lúc này, tất cả các nhánh trong kho anh A cũng được cập nhật về máy anh B và có thể thấy được trên khung thể hiện các nhánh của GitHub Desktop (xem hình dưới đây). Anh B có thể chuyển sang làm việc trên một nhánh nào đó trong kho của anh A. Ví dụ, với hình trên, anh B đã chuyển sang làm việc trên nhánh fileio của anh A để xem mã nguồn anh A đã viết. Xét duyệt các thay đổi (Review changes)Ngay trên trang web cho các yêu cầu gộp, bạn bấm nút Add your review. Lúc đó, giao diện trang web sẽ chuyển sang trang so sánh mã nguồn và nút Review changes (màu xanh lá) sẽ mở ra một hộp thoại. Trên đó, bạn nhập thảo luận vào ô Review summary, chọn một trong ba tuỳ chọn: Comment, Approve hoặc Request changes. Trong đó, Approve có nghĩa là chấp thuận cho gộp và Request changes là yêu cầu chỉnh sửa. Như vậy, anh A đã không đồng ý cho anh B gộp mã nguồn với lý do là anh B chưa có phần kiểm tra độ dài của các chuỗi được gán vào. Sau khi anh A bấm Submit review một thông báo sẽ gởi đến cho anh B. Đồng thời, anh A cũng bấm nút Close Pull Request để đóng yêu cầu gộp này lại. Chỉnh sửa, lưu trạng thái (commit) và yêu cầu gộp (pull request) mớiAnh B xem thông báo và bấm vào liên kết sẽ mở ra trang web như sau: Như vậy, anh B thấy được yêu cầu mà mình đã bỏ sót. Để bổ sung tính năng bị thiếu, anh B bấm vào đường liên kết open this in GitHub Desktop (bên cạnh nút Merge pull request). GitHub sẽ tự động lấy kho của anh A về, tự động tạo một nhánh mới (ví dụ hình dưới, nhánh này tên là pr/5) để anh B làm việc trên đó. Anh B mở Visual Studio và bổ sung đoạn mã nguồn kiểm tra độ dài chuỗi ký tự nhập vào. Sau khi xong thì thực hiện lưu trạng thái cho các đoạn mã nguồn mới, rồi thực hiện yêu cầu gộp mới. Lúc này, trong kho của anh A sẽ có thêm một yêu cầu gộp mới tên là Pr 5. Thực hiện gộp (Merge pull request)Anh A vào kiểm tra và phê duyệt cho yêu cầu gộp mới. Sau khi bấm Submit review, giao diện trang web sẽ như sau: Lúc này, anh A có thể bấm nút Merge pull request để thực hiện gộp. Sau khi gộp xong, bạn có thể xoá nhánh nếu muốn. Đóng một vấn đềNhư vậy, một vấn đề đã được hoàn thành. Anh A vào tab Issues, chọn vấn đề đã hoàn thành, bấm Mark as và chọn Closed để đóng vấn đề đó. Tiếp đến, anh A vào tab Projects để kéo nhiệm vụ tương ứng vào cột Done. Kết luận ngày thứ 2Anh A và B đã kết thúc một cách xuất sắc công việc của ngày thứ 2. Công việc của ngày này khá rắc rối. Tuy nhiên, nó lại thể hiện được hầu hết một quy trình công việc mỗi ngày để làm việc cộng tác. Quy trình công việc này sẽ được kết luận lại trong mục Ngày thứ i của dự án dưới đây. Ngày thứ i của dự ánTại một ngày thứ i nào đó của dự án, cả hai anh A và B ngồi vào máy tính của mình rồi thực hiện:
HẾTTài liệu tham khảo
2. Sách Pro Git được viết bởi Scott Chacon và Ben Straub
|