Nếu bạn là một lập trình viên sẽ không thể bỏ qua Github. Đây là lựa chọn hoàn hảo để quản lý source code khi bạn tham gia vào một dự án. Trong quá trình quản lý, kho lưu trữ dữ liệu có một thuật ngữ được gọi là Repository. Vậy Repository là gì? Bài viết hôm nay sẽ giới thiệu đến các bạn về Github, Repository và các khái niệm liên quan.
Github là gì?
Github là sự kết hợp giữa hai từ Git và Hub. Trong đó:
- Git là một hệ quản trị phiên bản được phát triển bởi Linus Torvalds – cha đẻ của hệ điều hành Linux. Git được xem là hệ thống quản lý dự án và phiên bản code.
- Hub là nơi biến những dòng lệnh trên Git thành mạng xã hội khổng lồ cho lập trình viên.
Như vậy, GitHub là một dịch vụ cung cấp kho lưu trữ mã nguồn Git cho các dự án phần mềm. Github có đầy đủ những tính năng của Git, ngoài ra nó còn hoạt động như một mạng xã hội cho phép các lập trình viên tương tác với nhau.
Đối với những dự án có nhiều người tham gia, Github đóng vai trò quản lý và giám sát những thay đổi của dự án đó, đồng thời cho phép khôi phục code khi cần thiết.
Github ra đời khi nào?
GitHub được viết bằng Ruby on Rails và Erlang do các lập trình viên Tom Preston-Werner, Chris Wanstrath và PJ Hyett cùng nhau phát triển và chính thức ra mắt vào tháng 4 năm 2008.
Tính đến tháng 3 năm 2018, Github đang là dịch vụ máy chủ lưu trữ các mã nguồn lập trình lớn nhất thế giới với hơn 25 triệu người dùng cùng với 80 triệu mã nguồn dự án. Hiện nay, Github trở thành một yếu tố có sức ảnh hưởng lớn trong cộng động mã nguồn mở.
Cùng với Linkedin, Github có thể được dùng để thay thế cho CV của bạn.
Repository và các khái niệm liên quan đến Github
Repository là gì?
Repository được hiểu là một kho lưu trữ nơi chứa các files của dự án. Các file đó có thể là code, hình ảnh, âm thanh hoặc mọi thứ liên quan đến dự án. Bạn có thể tổ chức kho lưu trữ của mình dưới nhiều hình thức khác nhau, hai loại kho lưu trữ trong Github là Local Repository và Remote Repository.
- Local Repository: là một lại repository nằm trên máy tính của bạn, repository này có nhiêm vụ đồng bộ hóa với remote repository bằng các lệnh của git.
- Remote Repository: là một loại repository được cài đặt trên server chuyên dụng. Ví dụ như: GitHub, GitLab, Bitbucket,…
Hướng dẫn cách tạo một GitHub Repository
Bước 1: Vào Github tại đây, sau đó đăng ký một tài khoản bằng cách click vào “Sign up for Github”.
Sau khi hoàn tất đăng ký và kích hoạt. Bạn hãy tạo một project mới bằng cách nhấp vào “Start a new project”.
Bước 2: Nhập tên Repository và nhấn nút “Create Repository”. Ngoài ra, bạn cũng có thể thêm mô tả cho Repository (lựa chọn này không bắt buộc).
Trong đó, bạn cần lưu ý:
- Repository mặc định là công khai. Nếu dự án của bạn chỉ muốn quản lý nội bộ thì chọn “Private“.
- Bạn có thêm một “README file” để giới thiệu Repository kèm với một file .gitignore. Github đã cho bạn sẵn template .gitignore, nên bạn chỉ cần chọn một template phù hợp với mã nguồn dự án là được.
Nếu thành công, bạn sẽ thấy Repository giống như hình dưới đây:
Như vậy là bạn đã có thể tạo Github Repository rồi đấy!
Branch
Branch được dùng để phân nhánh và ghi luồng của lịch sử. Bạn có thể dùng Branch để triển khai dự án theo hướng cô lập để không ảnh hưởng đến dự án chính. Tại đây cho phép bạn thử nghiệm các tính năng mới hoặc điều chỉnh, sửa lỗi project.
Khi khởi tạo kho lưu trữ hoặc Clone, các thành viên sẽ được tạo lập một branch dùng riêng cho công việc của mình từ branch chính để không làm ảnh hưởng đến công việc của những thành viên khác. Branch riêng này sẽ chứa toàn bộ mã nguồn trong kho.
Sau khi công việc đã hoàn thành, bạn có thể nhập branch vừa tạo vào những branch khác khoặc repository chính bằng cách dùng lệnh Pull Request.
Pull Request
Pull Request là lệnh được dùng để thông báo với mọi người rằng bạn đã đẩy những thay đổi của Branch lên Repository tổng . Khi đó, các thành viên khác có thể chấp nhận hoặc từ chối Request này. Khi lệnh này được mở, bạn và các thành viên có thể xem lại công việc và thảo luận với nhau.
Để tạo Pull Request, bạn hãy thực hiện theo các bước sau:
- Chuyển tới repository và tìm menu branch
- Trong branch menu, chọn branch bạn vừa thay đổi.
- Nhấn vào nút New pull request bên cạnh menu branch
- Thêm tiêu đề và mô tả vào Pull Request của bạn
- Nhấn nút Create Pull Request
Fork Repository
Khái niệm này được hiểu là hành động tạo một dự án mới dựa trên dự án đã có sẵn. Cho phép bạn sao chép hoàn toàn một repository cũ, sau đó thay đổi hoặc chỉnh sửa một vài thứ cần thiết và lưu phiên bản mới này dưới dạng một repository độc lập hoàn toàn mới và gọi nó là dự án của riêng bạn.
Đây là tính năng giúp bạn đẩy nhanh tiến độ của dự án. Vì là một dự án mới nên repository cũ không ảnh hưởng. Khi repository tổng được cập nhật, bạn cũng có thể áp dụng các cập nhật đó lên bản fork của bạn.
Cách tạo fork repository rất đơn giản:
- Tìm repository bạn muốn fork
- Nhấn vào nút Fork
Clone
Với tính năng gần giống như Fork, Clone cho phép tạo ra bản sao dữ liệu hoàn chỉnh của kho đang được lưu chứa trên máy chủ và tất cả lịch sử trên kho. Với Clone, bạn có thể phục hồi bất kỳ bước nào dù đã commit. Đặc biệt, dù ổ cứng máy chủ có bị hư hỏng và không sử dụng được, bạn vẫn có thể sử dụng Clone của máy khách bất kỳ để khôi phục lại dữ liệu máy chủ.
Commit
Commit là thao tác có chức năng ghi lại những thay đổi file hay thư mục vào kho lưu trữ, những thay đổi này sẽ được lưu vào thư mục commit trong kho và được sắp xếp theo thứ tự thời gian chỉnh. Do đó khi nhìn vào thư mục commit bạn sẽ biết lịch sử chỉnh sửa/thay đổi các file hoặc thư mục. Mỗi commit đều cần phải có commit message với nhiệm vụ ghi nhận sự thay đổi theo tiến trình update của lập trình viên.
Để tạo commit, bạn hãy làm theo những bước sau:
- Chọn file muốn sửa
- Chọn “Edit” để sửa file.
- Sau khi sửa xong, bạn hãy điền thông tin message và nhấn Commit.
Snapshot
Snapshot là ảnh chụp các bước commit của bạn tại kho lưu trữ nhằm lưu lại nội dung tập tin hoặc thư mục dùng để tham chiếu. Do Git lưu trữ dưới dạng hình ảnh nên sẽ giúp người dùng tiết kiệm khá nhiều không gian và tài nguyên.
Push
Push là lệnh đưa nội dung mà bạn đã commit từ kho lưu trữ ở local đến kho lưu trữ server.
Fetch
Fetch là lệnh giúp bạn di chuyển toàn bộ dữ liệu trên kho lưu trữ server về máy tính để tích hợp dữ liệu vào branch.
Bài viết khái quát những gì cơ bản nhất về Github cùng những thuật ngữ liên quan như Repository, Branch, Pull Request,..Hy vọng, công cụ này sẽ giúp cho công việc lập trình của bạn hiệu quả hơn.
FAQs về Repository và Github
Fork Repository và Clone khác nhau như thế nào?
Việc fork một repository cho phép bạn dễ dàng chỉnh sửa, thay đổi source code mà không ảnh hưởng tới source gốc. Còn với clone, đây là một bản remote local copy của một số kho lưu trữ. Khi bạn sao chép, bạn đang sao chép toàn bộ repo, bao gồm tất cả lịch sử và các nhánh.
Repository và Project trên Github khác nhau như thế nào?
Để hỗ trợ việc quản lý, đa số dịch vụ hỗ trợ Github cung cấp hai lựa chọn khác nhau khi tạo dự án là repository và project. Repository thường được sử dụng để lưu trữ những tập tin cho một dự án nhất định với nhiều chức năng kèm theo như commit, clone hay chức năng so sánh giữa các phiên bản. Mắc khác, Project được dùng để quản lý các repositories thay vì quản lý các tập tin chi tiết như Repository.
Có phải Github chỉ dành cho lập trình viên hay không?
GitHub là một nền tảng tuyệt vời đã thay đổi cách hoạt động của lập trình viên. Tuy nhiên, bất kỳ ai muốn quản lý dự án hữu hiệu cũng có thể tham gia vào GitHub và hợp tác làm chung dự án để đạt hiệu quả cao nhất. Nếu bạn đang tham gia một dự án cần được thay đổi và cập nhật liên tục, Github sẽ là lựa chọn tuyệt vời.
Ngoài Repository Github, còn dịch vụ repository miễn phí trên Git không?
Ngoài Github vẫn còn một số dịch vụ khác trên Git mà bạn có thể tạo repository như:
- Bitbucket: Nếu bạn cần server Git dành cho một nhóm ít hơn 5 người làm việc với nhau thì bạn có thể dùng Bitbucket. Tại đây, bạn sẽ được quyền tạo private repository không giới hạn nhưng chỉ có 5 thành viên được quyền truy cập vào private repository.
- Assembla: Trong khi Github và Bitbucket sẽ miễn phí không giới hạn repository tạo ra, Assembla lại bị giới hạn 2 repository ở tài khoản miễn phí. Tuy nhiên, nếu bạn cần lựa chọn thêm giao thức FTP/sFTP để gửi dữ liệu lên repository thì Assembla là lựa chọn tốt nhất. Đồng thời, tất cả repository tạo ra từ Assembla đều là private.