Hướng dẫn sử dụng Github toàn tập từ A-Z

LinhPhi 22/3/16 1
  1. LinhPhi

    LinhPhi 0974.919.281

    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.

    huong-dan-su-dung-github.png

    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 đâyhttp://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

    github.png

    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 "your_email@youremail.com"
    
    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:

    [​IMG]

    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 "XDAVN"
    git config --global user.email xdavn@gmail.com
    
    • 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

    [​IMG]

    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:

    [​IMG]

    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
    [​IMG]

    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

    [​IMG]

    [​IMG]


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

    Linux

    SSH: git clone git@github.com:ducnc92/demo1.git

    hoặc: git clone git@github.com: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.

    [​IMG]

    Ở đây tôi sử dụng lệnh git clone git@github.com: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 LinhPhi.
    
    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:

    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

    [​IMG]

    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.

    [​IMG]

    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 git@github.com: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
    [​IMG]

    • 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.
    [​IMG]
    • 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.
    [​IMG]

    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
    [​IMG]

    Để 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
    [​IMG]

    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

    [​IMG]

    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.

    [​IMG]

    Để đồ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:
    [​IMG]

    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
    [​IMG]
    Lúc này vào trang cá nhân của bạn sẽ thấy tại mục Organizations có tổ chức mới vừa tạo. Để cấu hình tổ chức này ta click thẳng vào nó.

    Ở đây tôi sẽ tạo một team mới như hình sau:

    [​IMG]

    [​IMG]
    Các member của team này có quyền write với các repo của team.

    Với 3 mức: Read Access, Write Access, Admin Access Github cho phép chúng ta phân quyền tới các thành viên của nhóm.

    Để mời một người dùng khác vào team, ta click vào team đó và search tên của người dùng cần tìm

    [​IMG]

    Sau đó hệ thống sẽ yêu cầu bạn nhập password để xác thực, nếu thành công, một email xác nhận sẽ được gửi đến người được mời và người này sẽ xác nhận có tham gia vào tổ chức hay không.

    Để tạo một repo cho tổ chức, ta chỉ cần click vào tổ chức đó, sau đó chọn Create new Repostory. Các hành động clone, add, commit,... làm như bình thường.

    4. Thao tác với nhánh (branch)
    Sẽ cập nhật và bổ sung sau

    5. Issues
    Giả sử bạn đang theo dõi repo của tôi và thấy có một số chỗ cần sửa đổi, bạn có thể comment ý kiến của mình vào Repo đó. Sau đó người quản trị sẽ xem xét, thay đổi và trả lời bạn.

    Để làm việc này bạn cần vào repo đó, click vào Issue. Ví dụ như hình sau:

    [​IMG]

    Sau đó chọn New issue (màu xanh) để tạo một issue mới.

    [​IMG]
    Lúc này tại Repo của người quản trị sẽ thấy một Issue mới, người quản trị có thể click vào Issue này để xem, sau đó xem xét sửa đổi, comment lại. Khi sửa đổi hoàn tất thì sẽ đóng issue đó lại.

    [​IMG]

    [​IMG]

    Bằng cách tạo issue, bạn có thể đăng các câu hỏi, thắc mắc của mình cho chủ của repo đó.

    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 tôi (sys admin), 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 tôi để hoàn thiện thêm.

    Xin chân thành cảm ơn!
     

    Chào mừng bạn đến với Diễn đàn XDA Việt Nam

    Đăng ký tham gia diễn đàn ngay hôm nay để trải nghiệm đầy đủ các tính năng. Hoàn toàn miễn phí !

    Chỉnh sửa cuối: 18/11/16
    Đang tải...
  2. LinhPhi

    LinhPhi 0974.919.281

    LinhPhi
    V. Ngôn ngữ Markdown
    Ngôn ngữ này khá đơn giản, bạn có thể đọc tại đây để biết cách sử dụng.

    Nhưng với tôi, tôi không dùng hết từng ấy thứ cho nên tôi chỉ nhớ một số cái tôi hay dùng, cách tôi dùng như sau:

    Tạo một file có tên bất kỳ với đuôi .md. Có thể dùng notepad, notepad++, vi, nano,... hay bất cứ thứ gì mà bạn muốn.

    Một số phương pháp tôi hay sử dụng để viết:

    1. Thẻ tiêu đề
    Markdown sử dụng kí tự # để bắt đầu cho các thẻ tiêu đề, có thể dùng từ 1 đến 6 ký tự # liên tiếp. Mức độ riêu đề giảm dần từ 1 đến 6

    Tùy mục đích và ý thích bạn có thể sử dụng cách này để thể hiện các chỉ mục khác nhau.

    Ví dụ:

    #1.Tiêu đề cấp 1

    1.Tiêu đề cấp 1
    ##2.Tiêu đề cấp 2

    2.Tiêu đề cấp 2
    ######6.Tiêu đề cấp 6

    6.Tiêu đề cấp 6

    2. Chèn link, chèn ảnh
    Để chèn hyperlink bạn chỉ cần paste luôn linh đó vào file .md

    https://github.com

    https://github.com

    Hoặc bạn cũng có thể sử dụng cú pháp sau để thu ngắn đường dẫn của link [Github](https://github.com)

    Kết quả là:
    Github

    Để chèn ảnh thì bạn hãy sử dụng cú pháp sau:

    <img src="link_anh_cua_ban">

    Tôi thường sử dụng công cụ Lightshot để chụp ảnh màn hình và up hình đó lên trang http://i.imgur.com/ để lấy đường dẫn ảnh đưa vào Github

    Hai công cụ này khá dễ sử dụng, bạn chỉ cần chụp màn hình bằng Lightshot ấn Ctrl + C để copy và Ctrl + V để paste vào trình duyệt tại trang web http://i.imgur.com/

    3. Ký tự in đậm, in nghiêng
    • Để in đậm một đoạn text bạn chỉ cần làm như sau:
    **từ cần in đậm**

    từ cần in đậm
    • Để in nghiên một đoạn text bạn chỉ cần làm như sau:
    *từ cần in nghiêng*

    từ cần in nghiêng


    4. Trích dẫn, bo chữ
    Để bo một đoạn text thì bạn chỉ cần sử dụng cú pháp sau:

    `đoạn cần bo`

    Kết quả là: đoạn cần bo

    Để làm nổi bật một đoạn, chẳng hạn như một đoạn shell hay file cấu hình bạn có thể sử dụng cú pháp như ví dụ sau:

    ```sh
    auto eth0
    iface eth0 inet static
    ipaddress 10.10.10.10
    netmask 255.255.255.0
    gateway 10.10.10.1
    dns-nameservers 8.8.8.8
    ```

    Kết quả như sau:

    auto eth0
    iface eth0 inet static
    ipaddress 10.10.10.10
    netmask 255.255.255.0
    gateway 10.10.10.1
    dns-nameservers 8.8.8.8

    5. Gạch đầu dòng
    Để sử dụng gạch đầu dòng bạn chỉ cần sử dụng cú pháp sau:

    - Gạch đầu dòng thứ nhất
    <ul>
    <li>Thụt với đầu dòng 1</li>
    <li>Thụt với đầu dòng 1</li>
    </ul>
    - Gạch đầu dòng thứ hai
    <ul>
    <li>Thụt với đầu dòng 2</li>
    <li>Thụt với đầu dòng 2</li>
    </ul>

    • Gạch đầu dòng thứ nhất
      • Thụt với đầu dòng 1
      • Thụt với đầu dòng 1
    • Gạch đầu dòng thứ hai
      • Thụt với đầu dòng 2
      • Thụt với đầu dòng 2
    6. Tạo bảng
    Bạn có thể sử dụng cú pháp sau để tạo bảng:

    | Cột 1 Hàng 1 | Cột 2 | Cột 3| Cột 4 |
    |--------------|-------|------|-------|
    | Hàng 2 | 2 x 1 | 2 x 2 | 2 x 3 | 2 x 4 |
    | Hàng 3 | 3 x 1 | 3 x 2 | 3 x 3 | 3 x 4 |
    | Hàng 4 | 4 x 1 | 4 x 2 | 4 x 3 | 4 x 4 |

    Kết quả:


    Cột 1 Hàng 1
    Cột 2 Cột 3 Cột 4
    Hàng 2 2 x 1 2 x 2 2 x 3
    Hàng 3 3 x 1 3 x 2 3 x 3
    Hàng 4 4 x 1 4 x 2 4 x 3

    Mẹo:
    • Sử dụng trang http://markdownlivepreview.com/ paste vào đó đoạn markdown bạn viết và xem trước để chỉnh sửa cho phù hợp.

    • Bạn cũng có thể sử dụng những đoạn markdown của người khác đã viết trước để tham khảo.
    Như vậy bạn đã có thể trình bày github của mình một cách sáng sủa bằng markdown.