Đây là một phiên bản cũ của tài liệu!
Mục lục
Hướng dẫn làm việc với kho code Git của NukeViet trên Github
Git là gì?
Git là một phần mềm VCS dùng để quản lý và kiểm tra các phiên bản mã nguồn khác nhau trong quá trình phát triển mã nguồn. Git là thế hệ mới nhất của các phần mềm này. Từ phiên bản NukeViet 3.5, nhóm phát triển NukeViet sẽ sử dụng git thay thế cho Subversion (SVN) đang được sử dụng để quản lý code của NukeViet trên Google code trước đây. Mặc dù Google code cũng đã hỗ trợ Git từ tháng 7 năm 2011, tuy nhiên chúng ta sẽ lựa chọn Github làm nơi lưu trữ code mới cho NukeViet vì tính chuyên nghiệp của Github đối với Git.
Tại sao sử dụng Git?
Git có nhiều ưu điểm, đặc biệt nó đã thay đổi cách các lập trình viên chia tách và nhập các nhánh phần mềm. Trong khi với svn, việc này luôn là ác mộng vì các xung đột trong quá trình tách/nhập, còn với Git việc này quá dễ dàng.
Bài viết này sẽ giải thích đầy đủ tại sao chúng ta sử dụng Git: http://nukeviet.vn/vi/news/nhom-phat-trien/NukeViet-da-hoan-tat-ke-hoach-chuyen-doi-kho-code-sang-Github-118/
Đặc tính phi tập trung nhưng mang tính tập trung của Git
Trong khi mỗi lập trình viên đều sở hữu một kho code đầy đủ thì Git cho thiết lập một kho trung tâm thực sự, tất cả các lập trình viên đều có thể kéo (pull) các thay đổi từ đó về kho của mình và đẩy (push) các thay đổi về kho trung tâm. Tuy nhiên, bên cạnh những mối quan hệ push-pull tập trung, mỗi nhà phát triển cũng có thể kéo (pull) thay đổi từ các đồng nghiệp khác để tạo thành các nhóm nhỏ hơn.
Hình dưới đây cho thấy một dự án với 1 kho code trung tâm và 4 người, họ hình thành 3 nhóm nhỏ hơn là nhóm của Anh A - Anh B, Anh A - Chị C, Anh B - Cô D. Mỗi nhóm nhỏ này có thể phụ trách phát triển một tính năng thuộc hệ thống rồi sau đó mới đẩy về kho trung tâm. Như vậy mô hình này rất hiệu quả cho các dự án lớn.
Làm việc với Git trên Github
Nguyên tắc quản lý kho code NukeViet trên Github
Xem chi tiết trong bài Nguyên tắc quản lý kho code NukeViet trên Github
Tương tác với Git thông qua Github
Git là hệ thống được sinh ra là “để dành cho linux”, do đó sử dụng git trên các hệ điều hành họ Linux (Ubuntu, Fedora…) mạnh hơn rất nhiều so với các hệ điều hành khác. Nếu bạn sử dụng các hệ điều hành họ linux, bạn sẽ dễ dàng tìm thấy các tài liệu hướng dẫn cài đặt và sử dụng git, việc tương tác với Github cũng không có gì khác biệt so với các kho code git khác.
Với các hệ điều hành khác dòng Linux, để tương tác với kho code của NukeViet trên Github, chúng ta phải thông qua một phần mềm trung gian (gọi là chương trình phía client (khách) của Git). Github cũng phát hành một số phần mềm client dành cho git để làm việc riêng với Github. Gồm có:
- GitHub for Mac http://mac.github.com/
- GitHub for Windows http://windows.github.com/
- GitHub for Eclipse http://eclipse.github.com/
- GitHub Mobile Apps http://mobile.github.com/
Ngoài ra nhiều ứng dụng lập trình như Aptana Studio 3, Zend Studio 9, … cũng hỗ trợ việc kết nối trực tiếp tới kho code sử dụng Git.
Tương tác với Git trên Eclipse
Xem chi tiết tại: http://wiki.eclipse.org/EGit/User_Guide
Hướng dẫn cài đặt và sử dụng Aptana tương tác với Github trên Ubuntu
Hướng dẫn cài đặt
Bước 1. Bạn có thể download tại đây : http://www.aptana.com/products/studio3/download. Chọn “Standalone Version” rồi click Download
Bước 2. Phải cài đặt các gói cần thiết trước, mở Terminal bằng cách nhấn tổ hợp 3 phím : Ctrl + Alt + T, nhập :
sudo apt-get install openjdk-7-jre libwebkitgtk-1.0-0 git-core
Bước 3. Chuyển đến thư mục chứa file cài đặt rồi tiến hành cài đặt Aptana vào thư mục /opt, ví dụ tên file cài đặt mặc định khi download về là 'Aptana_Studio_3_Setup_Linux_x86_3.4.1.zip' và thư mục chứa file là Desktop, nhập :
cd ~/Desktop sudo unzip Aptana_Studio_3_Setup_Linux_x86_3.4.1.zip -d /opt
Bước 4. Thêm vào menu shortcut, nhập :
wget http://www.samclarke.com/wp-content/uploads/2012/04/AptanaStudio3.desktop sudo mv AptanaStudio3.desktop /usr/share/applications/AptanaStudio3.desktop
Hướng dẫn sử dụng
Bước 1. Khởi động : Để khởi động Aptana Studio 3 có 2 cách : * Cách 1 : Nhấn nút super (nút windows) để mở của sổ tìm kiếm. Gõ từ khóa 'aptana studio 3' rồi chọn shortcut của aptana studio để khởi động * Cách 2 : Mở Terminal (CTRL+ALT+T) , nhập :
cd /opt/Aptana_Studio_3 sudo bash AptanaStudio3.sh
Bước 2. Xuất hiện 1 hộp thoại để chọn thư mục làm việc, thư mục mặc định sẽ là '/root/Documents/Aptana Studio 3 Workspace' , xong nhấp OK sẽ xuất hiện giao diện chương trình Aptana Studio 3 :
Tick vào ô 'Use this as the default and do not ask again' thì những lần khởi động sau, hộp thoại này sẽ không xuất hiện vì bạn đã chọn đường dẫn của phiên làm việc lần trước làm mặc định. Tránh những lần khởi động lần sau, chương trình sẽ hiện hộp thoại này để hỏi thư mục làm việc gây phiền toái, mất thời gian.
Bước 3. Thoát khỏi chương trình :
- Bạn nhấn tổ hợp 2 phím : Alt + F4
- Click vào dấu x góc trái trên cùng của chương trình
- Trên thanh menu của chương trình chọn File → Exit
Tham khảo thêm tại : Lập trình NukeViet nhanh hơn với Aptana Studio 3
Hướng dẫn cài đặt eGit vào Aptana
Bước 1. Khởi động Aptana Studio 3. Trên thanh menu của chương trình nhấp chọn : Help → Install New Software…
Bước 2. Xuất hiện hộp thoại Install, Click vào nút 'Add' và nhập 2 thông tin sau :
- Trong ô 'Name' : eGit
- Trong ô 'Location' : http://download.eclipse.org/egit/updates-2.3
Bước 3. Sau khi nhấn OK ở 'Bước 2' ,bạn sẽ trở lại hộp thoại 'Install',đợi chút xíu rồi tick vào ô 'Eclipse Egit' và nhấn Next
Bước 4. Xuất hiện 1 hộp thoại và chọn Next
Bước 5. Tiếp tục xuất hiện 1 hộp thoại, tick vào ô 'I accept the terms of the license agreements' và nhấn Finish
Bước 6. Đợi chương trình tải dữ liệu về và hoàn tất cài đặt Egit vào Aptana Studio 3
Thực hiện 1 project sử dụng Git trong Aptana Studio 3
Bước 1. Tạo kho mã nguồn cho dự án trên github.com .Ví dụ bạn làm việc với kho mã nguồn có địa chỉ https://github.com/quanglapcongtu/MHST2-13-25 với branch (nhánh làm việc) là master, trong kho mã nguồn đã có sẵn 1 file README.md
Bước 2. Khởi động Aptana Studio 3, xuất hiện giao diện chương trình, nhấn vào thẻ Terminal và bạn sẽ tương tác với Github thông qua giao diện dòng lệnh này.
Bước 3. Tạo SSH Key - Nếu bạn đã quyết định không sử dụng phương thức HTTPS (đề nghị), chúng ta có thể sử dụng các khóa SSH để thiết lập một kết nối an toàn giữa máy tính và GitHub của bạn.
- SSH Key là một mã chứng nhận để bạn có quyền thao tác trên repository (kho) của GitHub, SSH Key sẽ mang tất cả thông tin về account của bạn. SSH Key này được tạo ra trên local máy của bạn và được chính bạn add vào GitHub. Khi bạn push source code của mình lên repository server, GitHub sẽ kiểm tra SSH key ở local của bạn và SSH key trên server của nó (mà bạn đã add trước đó) có giống nhau không. Nếu giống nhau nó xác nhận bạn có quyền thao tác trên repository server. Một account GitHub có thể có nhiều SSH Key trên server.
- Các bước dưới đây sẽ hướng dẫn bạn qua việc tạo một khóa SSH và sau đó thêm các khóa công khai vào tài khoản của bạn GitHub : 4 step + Step 1: Kiểm tra xem SSH key đã tồn tại trên máy tính của mình chưa, nhập :
cd ~/.ssh (Enter) ls
Nếu danh sách tệp tin trống thì SSH Key chưa tồn tại thì chuyển sang Bước 2, nếu trong danh sách có file id_rsa.pub hoặc id_dsa.pub thì SSH Key đã tồn tại trên máy tính, ta chuyển sang Bước 3
+ Step 2 : Tạo 1 SSH Key mới, trong cửa sổ Terminal nhập :
ssh-keygen -t rsa -C " your_email@example.com"
'your_email@example.com' là email trong tài khoản của bạn trên github.com, ở đây email là 'lapnqhpu@gmail.com' Nhập mật khẩu và nhập lại mật khẩu lần 2 sẽ tạo được SSH Key
+ Step 3 : Thêm SSH Key vào tài khoản github.com: - Copy SSH Key vào clipboard, nhập:
sudo apt-get install xclip xclip -sel clip < ~/.ssh/id_rsa.pub
- Đăng nhập tài khoản github.com và đi đến phần Account Settings. Trong menu bên trái chọn SSH Keys → Add SSH key. Điền đầy đủ thông tin vào ô 'Title' và 'Key' và nhấn nút Add
- Xuất hiện 1 hộp thoại yêu cầu xác nhận mật khẩu tài khoản github.com của bạn, nhập và nhấn Confirm password. Như vậy SSH Key đã được thêm vào tài khoản github.com của bạn
+ Step 4 : Kiểm tra lại quyền thao tác trên tài khoản GitHub trong Aptana Studio 3, trong cửa sổ Terminal nhập :
ssh -T git@github.com (Enter)
Xuất hiện 1 câu hỏi kết nối, nhập :
yes
Nếu có thông báo : 'Hi quanglapcongtu! You've successfully authenticated, but GitHub does not provide shell access' thì bạn đã có quyền thao tác trên repository của mình trên Github.com
Bước 4. Di chuyển đến thư mục /opt/lampp/htdocs của Xampp để lập trình, nhập :
cd /opt/lampp/htdocs
Bước 5. Thay đổi quyền thực thi cho thư mục htdocs, nhập :
sudo chmod -R 777 /opt/lampp/htdocs
Bước 6. Nhân bản (clone) : Tạo bảo sao của kho Github về máy tính ta sẽ được thư mục MHST2013-25 nằm trong thư mục /opt/htdocs , nhập :
git clone git@github.com:quanglapcongtu/MHST2013-25.git
Bước 7. Thêm kho xa 'khoxa_nukeviet' tại địa chỉ : git@github.com:nukeviet/nukeviet.git , nhập :
git remote add nukeviet git@github.com:nukeviet/nukeviet.git git remote
Bước 8. Kéo dữ liệu từ kho xa về dự án, nhập :
git pull khoxa_nukeviet
Bước 9. Tiến hành trộn (merge) dữ liệu từ kho xa vào dự án, có thể commit (xác nhận) sự thay đổi trước khi trộn, nhập :
git commit -m "Pull project nukeviet source code" git add README.md git merge khoxa_nukeviet/develop ls git commit -m "Update project nukeviet source code"
Bước 10. Thêm kho xa 'MHST2013-25' tại địa chỉ : git@github.com:quanglapcongtu/MHST2013-25, nhập :
git remote add MHST2013-25 git@github.com:quanglapcongtu/MHST2013-25
Bước 11. Sau khi thực hiện một số thay đổi cho dự án, xác nhận thay đổi bằng lệnh git commit, bạn có thể chia sẻ thay đổi này với mọi người bằng cách đẩy cách kết quả lênh nhánh thuộc kho xa (master, develop, …) trên Github, nhập :
git push MHST2013-25 master
Tham khảo chi tiết sử dụng Git tại :
- Tham khảo về Git - Tài liệu tham khảo trực tuyến cho Git được viết bởi đội phát triển GitHub. Bản gốc tiếng Anh có tại địa chỉ gitref.org. Bản tiếng Việt có ở địa chỉ gitref.dragula.org
Hướng dẫn cài đặt và sử dụng Aptana tương tác với Github trên Windows
1) Download và cài đặt Aptana tại địa chỉ http://www.aptana.com/products/studio3/download
2) Cài đặt Aptana theo hướng dẫn Video Dưới (Video hướng dẫn được thực hiện trên Aptana Studio 3.2.2 Microsoft Windows Standalone Version) JLyzjdS3Svc
Trong qua trình cài đặt bạn nên thay đổi thư mục cài đặt Aptana về thư mục D:\Aptana Studio 3
Khi chạy Aptana lần đầu tiên chương trình sẽ hỏi thư mục lưu trữ Workspace, Bạn nên di chuyển về thư mục D:\Aptana Studio 3\Workspace
3) Sau khi cài đặt xong bạn sửa file D:\Aptana Studio 3\Workspace\.metadata\.plugins\com.aptana.portablegit.win32\etc\gitconfig
Thêm đoạn sau vào cuối file
[user] name = Tên của bạn email = email của bạn
Chỉnh lại giá trị autocrlf nếu muốn git lấy về định dạng Unix
autocrlf = input
4) Thực hiện việc thêm 1 Project theo video hướng dẫn.
Hướng dẫn cài đặt và sử dụng Git Bash trên window
Cài đặt Git trên window
Chú ý: các hướng dẫn này dành cho phiên bản Git-1.8.0, các phiên bản khác có thể có một số khác biệt.
Download git tại địa chỉ http://git-scm.com/download/win . Sau khi download thành công ta sẽ được file Git-1.8.0-preview20121022.exe (tên file có thể khác tùy theo phiên bản).
Để tiến hành cài đặt, nhấp đôi file Git-1.8.0-preview20121022.exe, tại giao diện thứ nhất của chương trình nhấp “Next”, tại giao diện thứ hai nhấp “Next”; tiếp theo, chọn thư mục sẽ cài đặt phần mềm vào hoặc để mặc định và nhấp “Next” … tại các giao diện tiếp theo nếu không có tùy chọn khác hãy nhấp “Next” cho đến khi cài đặt hoàn tất.
Sau khi cài đặt thành công, trên màn hình nền sẽ có thêm biểu tượng Git Bash, nếu không có, có thể tìm nó trong danh mục chương trình, công cụ tìm kiếm.
Làm việc với Git Bash
Trước khi làm việc với Git cần cấu hình trước một số thông số ví dụ như tên, email. Đầu tiên nhấp đôi biểu tượng Git Bash để khởi chạy Git Bash, giao diện ban đầu có dạng
Cấu hình thông của bạn:
Hai thông tin bắt buộc mà bạn luôn luôn phải khai báo đó là tên và địa chỉ email. Mỗi commit của bạn đều sẽ sử dụng thông tin này. Để cấu hình, nhập:
$ git config --global user.name "Phan Tan Dung" $ git config --global user.email phantandung92@gmail.com
Tùy chon –global sửa dụng để xác định giá trị toàn cục, có nghĩa mọi dự án đều sử dụng thông tin đó, đối với một dự án cụ thể, nếu muốn thay đổi thông tin đó ta chỉ cần nhập lại mà không sử dụng –global. Ví dụ:
$ git config user.name "Phan Tan Dung" $ git config user.email example@gmail.com
Xem lại danh sách các cấu hình
Để xem lại tất cả các cấu hình hiện tại, nhập:
$ git config --list
Đối với người quản lý
Hướng dẫn merge và xử lý lỗi conflic Pull Request trên Git
Giả sử chúng ta chưa có gì bây giờ muốn merge các pull request từ các lập trình viên. Hãy tạo một thư mục nào đó và click chuột phải vào thư mục đó chọn Git Bash. Tiếp theo đánh lệnh:
$ git init $ git clone https://github.com/nukeviet/nukeviet.git
Hai lệnh trên để thiết lập một kho mới và tải kho nukeviet về thư mục vừa tạo. Khi clone xong mặc định sẽ chọn nhánh master, tuy nhiên ta cần làm việc trên nhánh develop Tiếp theo để checkout nhánh develop về ta phải trỏ vào thư mục chính của kho code. Dùng lệnh sau:
$ cd nukeviet
Sau đó:
$ git checkout develop
Bây giờ ta tiếp tục nhập lệnh sau:
$ git remote add vuthao https://github.com/vuthao/nukeviet.git $ git fetch vuthao $ git merge vuthao/develop
3 lệnh đó sẽ thực hiện việc tạo một nhánh ảo từ thành viên vuthao trên github sau đó lấy toàn bộ pull request của thành viên đó, nhập nhánh develop của vuthao vào nhánh đang làm việc của kho code hiện tại (tức nhánh develop của nukeviet).
Nếu quá trình merge tự động diễn ra thành công ta chỉ cần thực hiện lệnh
$ git push origin develop
Để hoàn tất việc merge pull request
Nếu merge bị conflic thì ta phải xử lý các file conflic trước, sau đó đưa vào index, commit rồi mới push lên kho code. Thứ tự thực hiện như sau.
Để xem thử conflic chỗ nào ta đánh
$ git diff
Khi đó các file bị conflic sẽ hiển thị đoạn code lỗi. Ta chỉ cần mở các file đó lên, chỉnh sửa đoạn code đó. Sau khi chỉnh sửa xong ta add file đó vào index bằng cách dùng lệnh
$ git add [file]
trong đó [file] là đường dẫn đến file ví dụ
$ git add modules/news/admin/content.php
Để xem trạng thái các file, thư mục … dùng lệnh
$ git status
Để hiển thị status gọn hơn ta dùng option -s
$ git status -s
Sau khi đã hoàn tất xử lý conflic … ta commit các chỉnh sửa vừa rồi:
$ git commit -m "Message"
Trong đó message là nội dung commit. Cuối cùng là push lên kho code.
$ git push origin develop
Một số lệnh git khác
Để tạm thời bỏ qua những thay đổi trong một tập tin nhất định, không muốn tập tin đó hiển thị trong các file thay đổi sử dụng lệnh:
git update-index --assume-unchanged path_file
Sau đó, khi muốn tập tin đó hiển thị trong các file thay đổi:
git update-index --no-assume-unchanged path_file
Thay đổi commit message cuối
git commit -a --amend -m "My new commit message"
Reset project về ID trước đó
git reset --hard idcommit
Sau đó dùng lệnh sau để cập nhật lên kho git
fix commit: git push -f
fix merge conflicts in Git?
git mergetool
Liệt kê tất cả các file thay đổi từ id 3bf2d29 đến id b2d0398
git diff-tree -r --name-only 3bf2d29 b2d0398
Liệt kê tất cả các file đã xóa từ id 3bf2d29 đến id b2d0398
git diff-tree -r --name-only --diff-filter=D 3bf2d29 b2d0398
Zip lại các file thay đổi từ id 3bf2d29 đến id b2d0398 (không có file đã xóa)
git archive -o update1.zip HEAD $(git diff-tree -r --name-only --diff-filter=ACMRT 3bf2d29 b2d0398)
Ghi chú: Các option của diff-filter –diff-filter=[ACDMRTUXB*]
A Added C Copied D Deleted M Modified R Renamed T have their type (mode) changed U Unmerged X Unknown B have had their pairing Broken * All-or-none
Nguồn tham khảo
Về Git:
- Git SRM - Ebook tiếng Anh về Git: http://git-scm.com/book/en/Getting-Started-About-Version-Control
- Tài liệu tham khảo về Git (Tài liệu chính thức của nhà cung cấp phần mềm): http://git-scm.com/docs
- Git Magic (Git - Công cụ quản lý mã nguồn vạn năng, ebook tiếng Việt về Git): http://www-cs-students.stanford.edu/~blynn/gitmagic/intl/vi/
- A successful Git branching model - Mô hình phân nhánh Git: http://nvie.com/posts/a-successful-git-branching-model/
Về Github:
- Tham khảo về Git - Bản dịch tiếng Việt - Tài liệu tham khảo trực tuyến cho Git được viết bởi đội phát triển GitHub. Bản gốc tiếng Anh có tại địa chỉ gitref.org.
- GitHub - Mạng xã hội dành cho lập trình viên (Bài viết trên Blog cộng đồng về Công nghệ thông tin): http://cntt.tv/nodes/show/501
- Loạt bài viết về Git trên dotnetviet:
- Phần 2: Hướng dẫn sử dụng GitHub
- Phần 3: Tại sao nên sử dụng Git