[Học hỏi] HƯỚNG DẪN SỬ DỤNG GITHUB TOÀN TẬP TỪ A-Z

1/4/18
1,235
547
113
25
#1
Sau một thời gian dài làm việc với nhóm trên Github mình đúc kết được rất nhiều kinh nghiệm từ các bạn lập trình viên trong nhóm . Đặc biệt là những lập trình viên, những nhà phát triển nước ngoài . Từ đó tăng khả năng code và tư duy cho một Project của mình được tốt hơn . Nên nay mình xin chia sẻ hướng dẫn sử dụng github căn bản tới đầy đủ nhất.

1546847016171-png.4879


I. Github là gì ?

Github còn được gọi là social network dành cho developer đi vào hoạt động tháng 2 năm 2008, là một dịch vụ sử dụng hệ thống quản lý phân tán GIT giúp người dùng lưu trữ source code cho các dự án. Tính năng của GIT như bài trước mình đã nói, nó có mọi tính năng của một source control như SVN và hơn thế nữa.

Github được viết bằng Ruby on Rails. GitHub cung cấp dịch vụ thương mại và cả tài khoản miễn phí cho các dự án nguồn mở. Theo khảo sát của người sử dụng Git vào năm 2009, Github hiện đang là server Git lưu trữ source code phổ biến nhất hiện nay (Ngoài ra, Gitorious http://gitorious.org cũng là server Git hoạt động giống Github được chú ý đến).

439000 developer tạo hơn 1 triệu 350 ngàn repositories là một con số khá ấn tượng, cùng với một số khách hàng lớn của github như Twitter, Facebook, Yahoo … cho thấy tính phổ biến của Github, cũng như cộng đồng lập trình thế giới tính nhiệm nó như thế nào.

II. Tính năng API của Github:

Ngoài những tính năng tuyệt vời của hệ thống quản lý source phân tán GIT nói chung (Chúng ta sẽ nói ở một bài cụ thể khác), Github còn hỗ trợ người dùng những tính năng quan trọng thông qua API sau:

1) API to Update The Repository via HTTP: GitHub hỗ trợ người dùng có thể edit file source code từ web browser thông qua HTTP – POST

2) API to Access Compare Views (Giới thiệu chức năng Compare Views https://github.com/blog/612-introducing-github-compare-view): Tính năng này hỗ trợ người dùng review và so sánh code của dự án thông qua việc xem các commit, comments, các dòng khác nhau giữa 2 version của file code … Tính năng này cũng thông qua HTTP – POST, người dùng có thể thực hiên trên web browser.

3) API to Manage Service Hooks: GitHub hỗ trợ tính năng mở rộng post-receive hooks http://help.github.com/post-receive-hooks. Tính năng này cho phép người dùng đăng ký 1 URL của mình (như là một web hook) cho các respository. Bất cứ khi nào có người push source code của họ lên repository, GitHub thông báo cho bạn biết bằng cách POST thông tin (dạng JSON) về lần push đó đến URL mà bạn đã đăng ký trước đó. Còn rất nhiều API hữu ích khác, các bạn có thể xem tất cả tại đây http://develop.github.com

III. Cách thức làm việc với GitHub:

Làm việc với GitHub nói riêng hay hệ thống GIT nói chung có 2 workflow chính là local workflow và server workflow.

Bạn có thể làm mọi chuyện thay đổi source code ở local, sau khi đã thay đổi xong, bạn sẽ commit nhưng thay đổi đó lên server và bản lên server phải là bản hoàn chỉnh một tính năng nào đó, hoặc fix bug xong, test xong hoặc ít nhất bản đó phải chạy được. Không được commit code dở dang, chưa qua test lên repository server sẽ làm ảnh hưởng đến các thành viên khác, ngược lại bạn có thể làm điều đó ở repository local (Bạn cũng có thể tạo một branch ở server cho việc commit code dở dang hay tính năng chưa hoàn thành như từng làm với SVN, nó sẽ chiếm space ở server cũng như làm mất thời gian của bạn vào việc tương tác kết nối với server, vậy tại sao không commit nó lên repository local nhỉ, vừa nhanh thao tác lại không mất space của server.)

Mở rộng: từ repository của github ta có thể theo phương thức của Git tạo bản build cho production site (trên đây cũng là một repository server) bằng cách push thay đổi (đã qua test kỹ càng) lên nó. Khi tương tác với repository server (cập nhật hay thay đổi) GITHUB đòi hỏi mã chứng nhận "Bạn là ai" thông qua so sánh SSH key ở local của bạn và SSH key trên server tương ứng với account mà bạn đã đăng ký với GITHUB trước đó.

1) Làm việc với repository ở local: với 2 command thường dùng là git add và git commit

git add: add file đã thay đổi vào stage git commit: commit các file đã add vào stage lên repository ở local Ngoài ra bạn xem một số command khác

2) Làm việc với repository ở server github:

Sau khi đã quậy tè le ở local , cuối cùng khi có một bản ổn định và hoàn tất (có thông qua test) ta sẽ quyết định cập nhật nó lên repository server với: -push: push thay đổi từ repository local lên repository server -fetch: cập nhật thay đổi từ repository server về repository local -pull/rebase: sao chép source code từ server về local workspace (tương đương checkout của SVN)

IV. Hướng dẫn sử dụng GitHub (Trên linux):

1. Cài đặt công cụ

Mở terminal :
Mã:
sudo apt-get install git
1.1 . Tạo một tài khoản github

Lên trang http://github.com để tạo một tài khoản

1546847268765-png.4880

1.2 . Khi đăng kí tài khoản xong ta tiếp tục làm việc với Terminal

Mã:
git config --global user.name "Tên của bạn"
git config --global user.email "[email protected]"
Lưu ý : Mail config phải là mail bạn vừa đăng kí

VI. Các thao tác với Git và Github
0. Repo

Git là một công cụ để quản lý mã nguồn, nhưng tôi không phải là một coder nên tôi sẽ không sử dụng Git theo cách mà các coder hay sử dụng. Tôi sử dụng git và github để lưu trữ các file cấu hình của mình, các script, viết các bài hướng dẫn, các bản nháp,... Các repo là những nơi tôi phân loại, lưu trữ những thứ bên trên và nó được lưu cả ở máy trạm và ở server github. Để làm việc với repo thì bạn phải hiểu về nó. Một số điều bạn cần biết là:

Ba trạng thái của một repo:

687474703a2f2f692e696d6775722e636f6d2f716b6d644a53522e706e67-png.4881

Như hình trên bạn có thể thấy có 3 điểm cần lưu ý:
  • Working dir: đây là nơi bạn thực hiện các thao tác chỉnh sửa với file mã nguồn của mình, nó có thể là eclipse, netbean, notepad++,...
  • Stagging area: những sự thay đổi của bạn với file mã nguồn được lưu lại, giống như bạn ấn Save trong một file notepad.
  • Git directory: nơi lưu trữ mã nguồn của bạn (ở đây là github)
Tương ứng với 3 vị trí này ta có các hành động:
  • Add: lưu file thay đổi (mang tính cục bộ) - tương ứng với câu lệnh git add
  • Commit: Ghi lại trạng thái thay đổi tại máy local (ví dụ như bạn có thể ấn Save nhiều lần với file README.md nhưng chỉ khi commit thì trạng thái của lần ấn Save cuối cùng trước đó mới được lưu lại) - tương ứng với câu lệnh git commit
  • Push: Đẩy những thay đổi từ máy trạm lên server - tương đương lệnh git push
  • Pull: đồng bộ trạng thái từ server về máy trạm - tương đương lệnh git pull
1. Cài đặt
1.1. Linux

Với OS là Ubuntu:

Mã:
apt-get install git
Với OS là Fedora, Centos

Mã:
yum instal git
Các thiết lập ban đầu:
  • Bạn cần thiết lập tên và email của mình để mỗi khi commit lên server sẽ nhận biết được ai commit lên vì một repo có thể có nhiều người tham gia.
Mã:
git config --global user.name "Zentalk"
git config --global user.email [email protected]
  • Lựa chọn trình soạn thảo mặc định, có thể là vi, vim, nano,...
git config --global core.editor vi
  • Liệt kê các thiết lập:
Mã:
git config --list
Liên kết với tài khoản github bằng SSH

Mã:
ssh-keygen -t rsa
Enter file in which to save the key (/root/.ssh/id_rsa): [Press enter]
Enter passphrase (empty for no passphrase): [Press enter]
Enter same passphrase again: [Press enter]
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
Nếu bạn nhập passphrase thì hãy nhớ pass này!

Kết quả:
Mã:
ls ~/.ssh/
id_rsa       id_rsa.pub   known_hosts
ssh-agent -s
ssh-add ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub
copy đoạn mã này

Truy cập đường dẫn sau https://github.com/settings/ssh (đảm bảo bạn đã đăng nhập vào github), chọn Add SSH key, đặt tên cho key này tại Title và paste nội dung vừa copy vào ô Key

687474703a2f2f692e696d6775722e636f6d2f7a757861765a352e706e67-png.4882

Lúc này bạn đã có thể commit lên github tại máy local mà không cần nhập username và password.

1.2. Windows
Download tại địa chỉ: https://windows.github.com/

Cài đặt bình thường, yêu cầu phải có .NET 4.5

Giao diện của chương trình:

687474703a2f2f692e696d6775722e636f6d2f45627836644a442e706e67-png.4883

Thêm tài khoản Github:

  • Click vào tool and options (hình bánh răng cạnh biểu tượng Sync) chọn options, Add account. Khai báo username và password trên github.

  • Tại mục Configure git thêm Tên và email của mình
687474703a2f2f692e696d6775722e636f6d2f44534c503630692e706e67-png.4884

Click Update


2. Thao tác với Repo

2.1. Trên Linux

2.1.1. Tạo mới
Tạo một repo mới trên trang github.com

687474703a2f2f692e696d6775722e636f6d2f616c5246574b6c2e706e67-png.4885


687474703a2f2f692e696d6775722e636f6d2f4d4a5a6a594d6d2e706e67-png.4886

2.1.2. Clone
Clone repo đó về bằng một trong các cách sau:

Linux

SSH: git clone [email protected]:ducnc92/demo1.git

hoặc: git clone [email protected]:ducnc92/demo1.git /opt/demo để clone vào thư mục /opt/demo

đối với phương pháp này các bạn cần nhập passphrase của ~/.ssh/id_rsa (có thể không cần nếu bạn không đặt passphrase)

HTTPS: git clone https://github.com/ducnc92/demo1.git

hoặc: git clone https://github.com/ducnc92/demo1.git /opt/demo để clone vào thư mục /opt/demo

Để lấy các link SSH, HTTPS này ta làm như sau: Click vào các hyperlink HTTPS hoặc SSH rồi click Copy to clipboard.

687474703a2f2f692e696d6775722e636f6d2f31446f7a41567a2e706e67-png.4887

Ở đây tôi sử dụng lệnh git clone [email protected]:ducnc92/demo1.git

Lúc này trong thư mục hiện tại sẽ có thêm thư mục demo1 chứa các file trong repo trên github.

Chuyển vào thư mục này:

Mã:
cd demo1/
ls
Lúc này sẽ thấy trong thư mục này có file README.md. Để sửa file này ta có thể sử dụng bất cứ trình soạn thảo nào, chẳng hạn vi, nano, gedit,...

Mã:
vi README.md
Thêm vào nội dung như sau:

Mã:
Xin chao!
Toi la Zentalk.
Tạo một thư mục mới, chẳng hạn tên là script để chứa các script của tôi.
Mã:
mkdir script
Tạo một script mới trong thư mục đó.
Mã:
vi script/script1.sh
ta sửa code như sau
Mã:
#!/bin/sh
echo "Hello Python Vietnam"
sleep 10
bằng cách tương tự các bạn có thể tạo thêm nhiều thư mục, file hướng dẫn, cấu hình, script,... tùy ý

2.1.3. Add, commit, push
Để thực hiện hành động add ta sử dụng lệnh sau

Mã:
git add README.md để add file README.md

hoặc git add * để add tất cả các file hiện có.
Để thự hiện hành động commit file README.md ta thực hiện lệnh

Mã:
git commit README.md
hoặc git commit * để commit tất cả.
ta nên thêm tham số -m để ghi lại một comment cho hành động đó

Mã:
git commit README.md -m "ducnc sua doi"
Lúc này các thay đổi của bạn đã được lưu lại trên máy cục bộ. Để đồng bộ lên server Github ta thực hiện lệnh:
Mã:
git push origin master
=> nhập passphrase (nếu bạn đặt passphrase ở mục 1.1.) với phương pháp clone ssh hoặc nhập username, password nếu clone bằng https

687474703a2f2f692e696d6775722e636f6d2f564f50537a42542e706e67-png.4888

Lúc này trở lại trang github.com và xem repo script lúc đầu sẽ thấy các commit của ta đã được đẩy lên.

687474703a2f2f692e696d6775722e636f6d2f544e417a79356d2e706e67-png.4889

Một cách khác nếu bạn không muốn thực hiện clone về máy như bước trên thì bạn có thể làm như sau:

  • Tạo một repo mới trên github.com mà không tạo file README.md (giả sử ở đây là repo demo2)
  • Tại máy local tạo một thư mục để chứa repo mới này. Ví dụ:
Mã:
mkdir /opt/demo2
cd /opt/demo2
  • Thực hiện tạo các file, thư mục như ý muốn. Sau đó thực hiện add, commit, push tương tự như trên Nhưng ở đây cần thêm lệnh git remote add origin $git-url trước khi push. Tham khảo ví dụ sau:
Mã:
vi README.md

git add README.md

git commit README.md

hoặc git commit README.md -m noi dung

git remote add origin [email protected]:ducnc92/demo2.git

git push origin master
Sau đó nhập passphrase(nếu cần) hoặc username + password (nếu sử dụng SSH)

2.1.4. Pull
Giả sử trên server github của bạn có những thay đổi mà máy local chưa cập nhật những thay đổi đó. Bạn thực hiện lệnh sau:

Mã:
cd cd /opt/demo1/
git pull
2.2. Trên Windows

2.2.1. Tạo một repo mới
Tạo repo trên github.com tự như mục 2.1.1.
Tạo repo bằng phần mềm Github
  • Click vào dấu cộng, chọn tab Create, đặt tên và chọn đường dẫn cho repo mới
687474703a2f2f692e696d6775722e636f6d2f4d5872705a5a752e706e67-png.4890


  • Tuy nhiên repo mới sinh ra mới chỉ có ở máy trạm, tại mục Other. Chọn chuột phải vào repo đó và chọn Open in Explorer để sửa nội dung của repo này.
687474703a2f2f692e696d6775722e636f6d2f7634446b6469772e706e67-png.4891


  • Sau khi chỉnh sửa xong, để đẩy repo đó lên github.com ta click vào Publish this repository và thực hiện như hình sau. Chú ý cần chọn Organization đặt repo này.
687474703a2f2f692e696d6775722e636f6d2f366b586544664c2e706e67-png.4892

2.2.2. Clone
Click vào dấu cộng, chọn tab Clone, lựa chọn tổ chức mong muốn và chọn repo cần clone

687474703a2f2f692e696d6775722e636f6d2f596c72544f7a512e706e67-png.4893

Để chỉnh sửa nội dung của repo này ta chọn chuột phải vào nó và chọn Open in Explorer .

687474703a2f2f692e696d6775722e636f6d2f5878384a4f52352e706e67-png.4894

Lúc đó chương trình Windows Explorer sẽ mở ra thư mục chứa repo của github, bạn có thể chỉnh sửa các file trong này, tạo xóa thư mục,... một cách bình thường.

2.2.3. Add, commit, push, pull
Trở lại với chương trình Github ta sẽ thấy dòng uncommited changes tại repo ta vừa sửa. Bạn hãy điền vào đó comment và ấn commit to master

687474703a2f2f692e696d6775722e636f6d2f4e57583452494d2e706e67-png.4895

Lúc này sự thay đổi của bạn với mã nguồn đã được ghi lại trên máy local, để đồng bộ nó lên server github bạn hãy ấn vào biểu tượng Sync ở góc trên cùng bên phải.
Sau khi đồng bộ xong, quay trở lại repo trên trang github.com.

687474703a2f2f692e696d6775722e636f6d2f7846636e6d73492e706e67-png.4896

Để đồng bộ những thay đổi trên github.com về máy local (pull) ta cũng click vào biểu tượng Sync như bên trên.

3. Thao tác với tổ chức trong Github
Để tạo một nhóm cho nhiều người cùng làm việc ta làm như sau:
687474703a2f2f692e696d6775722e636f6d2f497648656357652e706e67-png.4897

Tại mục Choose the organization’s plan chọn Open Source để miễn phí, nhưng lúc này các Repo trong tổ chức sẽ là public.
  • Mời các thành viên cho tổ chức
687474703a2f2f692e696d6775722e636f6d2f497648656357652e706e67-png.4898

Tổng kết
Bài viết trên tôi tổng hợp lại những kiến thức thu được khi sử dụng git và github cho công việc của mình , hi vọng nó giúp các bạn một phần nào đó. Chắc chắn bài viết còn có nhiều thiếu sót, mong các bạn thông cảm và gửi feedback cho mình để hoàn thiện thêm.


Đang update
Tham khảo : XDAVN​
 
Last edited:

Facebook Comment