Khi bạn tham gia một dự án nào đấy thì việc phải làm việc với nhiều người là điều thường thấy. Kể cả làm việc một mình thì việc quản lý source code là vô cùng quan trọng. Theo như mình biết thì có 2 mô hình quản lý source code: Quản lý tập trung (SVN), Quản lý phân tán (git). Mỗi hình thức đều có ưu và nhược điểm riêng. Bài viết này, mình sẽ hướng dẫn sử dụng Github để quản lý source code cho các bạn, một dịch vụ git rất nổi tiếng của Microsoft.
#Github là gì?
GitHub là một dịch vụ nổi tiếng 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 bổ sung những tính năng về social để các developer tương tác với nhau.
Vài thông tin về Git:
- Là công cụ giúp quản lý source code tổ chức theo dạng dữ liệu phân tán.
- Giúp đồng bộ source code của team lên 1 server.
- Hỗ trợ các thao tác kiểm tra source code trong quá trình làm việc (diff, check modifications, show history, merge source, …).
GitHub có 2 phiên bản: miễn phí và trả phí. Với phiên bản có phí thường được các doanh nghiệp sử dụng để tăng khả năng quản lý team cũng như phân quyền bảo mật dự án. Còn lại thì phần lớn chúng ta đều sử dụng Github với tài khoản miễn phí để lưu trữ source code.
Github cung cấp các tính năng social networking như feeds, followers, và network graph để các developer học hỏi kinh nghiệm của nhau thông qua lịch sử commit.
Nếu một comment để mô tả và giải thích một đoạn code. Thì với Github, commit message chính là phần mô tả hành động mà bạn thực hiện trên source code.
Github trở thành một yếu tố có sức ảnh hưởng lớn trong cộng động nguồn mở. Cùng với Linkedin, Github được coi là một sự thay thế cho CV của bạn. Các nhà tuyển dụng cũng rất hay tham khảo Github profile để hiểu về năng lực coding của ứng viên.
Giờ đây, kỹ năng sử dụng git và Github từ chỗ ưu thích sang bắt buộc phải có đối với các ứng viên đi xin việc.
#Tính năng API Github
Github ngoài những tính năng tuyệt đỉnh, hỗ trợ bạn làm viết với Git cực kỳ mượt. Github còn hỗ trợ nhiều API với những tính năng quan trọng:
- API to Update The Repository via HTTP: Đây là tính đắt khá đắt giá, giúp bạn có thể chỉnh sửa mã nguồn từ trình duyệt thông qua HTTP POST
- API to Access Compare Views: API này cho phép bạn review và diff source của dự án thông quan việc xem commit, comments, các dòng khác nhau giữa 2 version của file code…
- API to Manage Service Hooks: API này hỗ trợ bạn đăng ký một URL cho các repository. Bất cứ khi nào có người push thay đổi lên repository, GitHub sẽ thông báo cho bạn thông qua URL mà bạn đã đăng ký trước đó.
#Tại sao nên lại là Github? Hướng dẫn sử dụng Github
Mặc dù Github có nhiều lợi ích như vậy. Nhưng sẽ có nhiều bạn thắc mắc: Tại sao không sử dụng Dropbox hay các dịch vụ tương tự để quản lý source code? Các dịch vụ đó cũng cho phép đồng bộ source code của các bạn trong team về một server mà?
Để trả lời cho câu hỏi này, mình sẽ lấy một ví dụ: Giả sử dự án của bạn có 2 developer cùng sửa một file, sau đó commit đồng thời lên server. Với Dropbox thì người commit lên trước sẽ được ưu tiên sửa file.
Nhưng với Github, việc commit đồng thời không phải là vấn đề nghiêm trọng. Vì Git sẽ ghi lại lịch sử commit, đảm bảo các commit được tổ chức tốt, tránh sự hỗn loạn giữa các version của file sửa đổi được gửi lên server.
Do đó, việc sử dụng Github sẽ tránh được tất cả sự nhầm lẫn khi commit. Đảm bảo cùng làm việc trên một source code trở lên dễ dàng hơn rất nhiều.
#Cách tạo một GitHub Repository
Repository là một không gian để lưu trữ dự án của bạn. Do tính chất phân tán của Git, nên có thể hiểu repository là nơi lưu trữ mã nguồn ở cả local và server.
Bạn có thể lưu trữ file code, text, hình ảnh hoặc bất kỳ loại tệp nào trong repository.
Để tạo một repository trên Github bạn làm như sau:
- Vào Github, đăng ký một tài khoản bằng cách click vào “Sign up for Github”.
- Sau khi đăng ký và kích hoạt thành công. Bạn bắt đầu tạo mới một project với “Start a new project”.
Bạn có thể xem hình bên dưới cho rõ thêm nhé:
- Nhập tên Repositoty và nhấn nút “Create Repository”. Ngoài ra, bạn cũng có thể thêm mô tả cho repo ( Cái này chỉ là lựa chọn, không bắt buộc phải có).
Trong đó, bạn lưu ý 2 options sau:
- Theo mặc định thì repository để là public. Tức là ai cũng có thể xem được repo này của bạn. Nếu dự án của bạn chưa muốn công khai mà 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 repo kèm với một file .gitignore. Github đã có sẵn template .gitignore cho bạn, cứ chọn một template phù hợp với mã nguồn dự án là được.
Khi tạo xong, repo sẽ như sau:
Khi đã có repository, bạn có thể clone, pull, push… source code của mình lên đó rồi.
Phần tiếp theo của bài viết, chúng ta sẽ tìm hiểu về branch trên Github.
#Tạo branch trên Github
Branch giúp bạn làm việc trên các phiên bản khác nhau của cùng một repository. Mình lấy ví dụ: Bạn muốn phát triển thêm một tính năng mới cho dự án. Nhưng bạn lại phần sửa đổi đó lại ảnh hưởng tới dự án chính. Lúc này branch ra đời.
Branch cho phép bạn chuyển đổi qua lại giữa các trạng thái và phiên bản khác nhau của dự án.
Với kịch bản ví dụ ở trên, bạn có thể tạo mới một branch và phát triển tính năng mới trên đó mà không ảnh hưởng tới master branch. Sau khi đã implement xong, test kỹ càng thì có thể merge vào master branch.
Để tạo một branch trên Github, bạn làm như sau:
- Click vào dropdown branch: Branch: master
- Khi danh sách branch xổ ra, bạn có thể tạo thêm một branch mới tại đây
#Hướng dẫn sử dụng Github chi tiết
Github có đầy đủ những command của git. Nhưng do bài viết này quá dài nên mình sẽ không liệt kê hết tất cả chúng ở đây. Mình sẽ tập trung hướng dẫn những command cơ bản nhất, hay dùng trên Github.
1. Commit Command
Commit command cho phép bạn lưu lại những thay đổi của file. Khi bạn commit, nên viết mô tả rõ ràng trong commit message. Điều này sẽ giúp cho quản lý dự án tốt hơn, có thể theo dõi, review những thay đổi source code sau này.
Để tạo commit, bạn làm như sau:
- Chọn file muốn sửa
- Chọn “Edit” để sửa file.
- Sau khi sửa xong thì điền thông tin message và nhấn Commit.
2. Pull Command
Lệnh PULL request là lệnh quan trọng nhất trên Github. Nó cho biết những thay đổi trong source code, và yêu cầu owner của source code xem xét nó và merge nó vào master branch.
Một khi commit xong, bất kể ai cũng có thể update sự thay đổi và thảo luận về sự thay đổi đó.
Tính năng này rất hay cho các dự án mã nguồn mở. Khi mà bất kì cũng có thể đóng góp công sức cho dự án. Tất nhiên, mọi sự thay đổi đều phải được sự đồng ý của owner dự án.
Ở đây, mình cần làm rõ hơn với các bạn đỡ nhầm lẫn về lệnh Pull:
- Lệnh pull request : Là lệnh yêu cầu chủ owner dự án xem xét một thay đổi nào đó trước khi merge vào master branch.
- Lệnh Pull: đây là lệnh của git, đơn thuần có thể hiểu là lệnh update source code từ server về local. Nếu có bất kì sự xung đột code nào (conflict) thì bạn cần phải resolve nó.
3. Merge command
Lệnh cơ bản cuối cùng mà mình muốn nhắc đến là merge. Lệnh merge này cho phép bạn hợp nhất những thay đổi vào một branch.
- Click vào “Merge pull request” để hợp nhất những thay đổi vào master branch.
- Click vào “Confirm merge”.
Bạn có thể tham khảo hình bên dưới:
#Cloning dự án từ Github
Tiếp tục hướng dẫn sử dụng Github. Đây có lẽ là thao tác bạn hay dùng nhất khi tìm kiếm mã nguồn mở trên mạng. Khi bạn thấy một dự án nào đó hay ho và có thể ứng dụng được cho dự án của mình, bạn muốn download dự án này về máy tính để tham khảo.
Có 2 cách để tải dự án từ Github:
- Một là bạn chọn Zip toàn bộ dự án và tải về
- Hai là bạn có thể clone dự án về bằng lệnh git. Bạn cũng click vào “Clone or Download”. Sau đó copy đường dẫn và gõ trong cửa sổ terminal trên máy tính như sau
- git clone git@github.com:vntalking/demo-create-repro.git
(Nguồn: vntalking.com)
I’ve read a few just right stuff here. Certainly value bookmarking for revisiting. I wonder how much effort you place to create the sort of great informative website.
We are a group of volunteers and opening a new scheme in our community. Your web site offered us with valuable information to work on. You’ve done a formidable job and our whole community will be thankful to you.
Stunning story there. What happened after? Take care!
I am curious to find out what blog system you are utilizing? I’m experiencing some minor security problems with my latest site and I’d like to find something more safe. Do you have any solutions?
Excellent post. I used to be checking constantly this weblog and I am impressed! Very useful information specially the final part 🙂 I maintain such information a lot. I used to be looking for this certain info for a long time. Thanks and best of luck.
I just like the helpful information you supply to your articles. I will bookmark your blog and take a look at once more here regularly. I am fairly sure I’ll learn many new stuff proper here! Good luck for the following!
Today, I went to the beach with my kids. I found a sea shell and gave it to my 4 year old daughter and said “You can hear the ocean if you put this to your ear.” She placed the shell to her ear and screamed. There was a hermit crab inside and it pinched her ear. She never wants to go back! LoL I know this is entirely off topic but I had to tell someone!
You are so cool! I do not believe I’ve read through anything like that before. So nice to find someone with a few unique thoughts on this subject matter. Seriously.. thank you for starting this up. This website is one thing that is needed on the web, someone with some originality!
Hello, of course this post is really good and I have learned lot of things from it regarding blogging. thanks.
Pretty great post. I simply stumbled upon your blog and wished to say that I’ve really enjoyed surfing around your weblog posts. In any case I’ll be subscribing on your rss feed and I’m hoping you write again very soon!
Howdy are using WordPress for your site platform? I’m new to the blog world but I’m trying to get started and create my own. Do you require any coding knowledge to make your own blog? Any help would be really appreciated!
I’m not that much of a internet reader to be honest but your sites really nice, keep it up! I’ll go ahead and bookmark your site to come back down the road. Cheers
It’s very trouble-free to find out any matter on net as compared to textbooks, as I found this post at this site.
I’ve been exploring for a little bit for any high-quality articles or weblog posts on this kind of space . Exploring in Yahoo I at last stumbled upon this web site. Studying this information So i’m satisfied to express that I’ve an incredibly just right uncanny feeling I found out just what I needed. I such a lot surely will make sure to do not fail to remember this site and provides it a glance regularly.
Hi there, just wanted to say, I enjoyed this blog post. It was practical. Keep on posting!
I like the helpful info you provide in your articles. I will bookmark your blog and check again here frequently. I’m quite certain I’ll learn a lot of new stuff right here! Best of luck for the next!
I all the time used to read article in news papers but now as I am a user of net so from now I am using net for articles or reviews, thanks to web.
Link exchange is nothing else except it is only placing the other person’s blog link on your page at proper place and other person will also do same in support of you.
Informative article, exactly what I needed.
I am genuinely thankful to the holder of this website who has shared this enormous article at at this place.