GIT dành cho Tester
Chắc hẳn khi làm việc trong đội dự án cùng với các developer, các tester chúng ta vẫn thường hay nghe đến một từ rất quen thuộc là GIT, như "commit lên GIT chưa", "merge cho em pull request lên GIT", lâu dần chúng ta sẽ bị thấm dần từ GIT và sẽ thắc mắc không hiểu GIT là gì, tại sao developer nào ...
Chắc hẳn khi làm việc trong đội dự án cùng với các developer, các tester chúng ta vẫn thường hay nghe đến một từ rất quen thuộc là GIT, như "commit lên GIT chưa", "merge cho em pull request lên GIT", lâu dần chúng ta sẽ bị thấm dần từ GIT và sẽ thắc mắc không hiểu GIT là gì, tại sao developer nào cũng nhắc đến nó, liệu tester như mình có sử dụng được nó không? Câu trả lời là bạn hoàn toàn có thể sử dụng hiệu quả GIT, chẳng hạn khi dự án yêu cầu các tester chủ động lấy code của dev về để tự build sản phẩm và kiểm thử, hay khi bạn tham gia một dự án automation testing chẳng hạn, hay khi bạn viết tài liệu giao cho khách hàng. Tất cả bạn đều có thể sử dụng GIT như một công cụ lưu trữ hiệu quả các code của developer, các script cho dự án automation hay các tài liệu cần thiết.
GIT & GITHUB được sử dụng khá phổ biến bởi lập trình viên, chắc hẳn bạn sẽ thấy nhiều đường kho mã nguồn có link từ Github.com. Nó rất tiện lợi và an toàn, đáp ứng tốt các nhu cầu làm việc nhóm. Để sử dụng GIT & GITHUB, bạn cần có những kiến thức cơ bản dòng lệnh trên Linux (vì cơ bản Git được xây dựng trên Linux).
Cụ thể:
- GIT là một hệ thống quản lý phiên bản phân tán (Distributed Version Control System – DVCS). Chẳng hạn như, một đội dự án có 2 developer, mỗi người sẽ code một phần, và khi xong một task, họ thường dùng GIT để đẩy (commit) phần code đã hoàn thành của mình lên một kho mã nguồn chung (repository). Từ kho mã nguồn chung này, các developer có thể tải về phần làm việc của đối phương về máy tính cá nhân của mình để làm chung cũng như update hàng ngày cho code trên local của mình luôn mới so với kho mã nguồn chung của toàn dự án. Hệ thống này lưu lại mỗi lần thay đổi thành những phiên bản khác nhau để quản lý và tiện cho việc người dùng muốn khôi phục lại.
- Còn Github là một hệ thống máy chủ dành riêng để chứa các kho mã nguồn chung của toàn dự án, các repository trên Github được gọi là remote repository.
- Như vậy, sự khác nhau rõ ràng giữa GIT và GITHUB chính là: GIT là một mô hình hệ thống còn GITHUB là hệ thống máy chủ.
- Nếu chưa có tài khoản sử dụng GIT, trước tiên hãy truy cập https://github.com/ và đăng ký tài khoản sử dụng.
1. Cài đặt
Để chuẩn bị làm việc với GIT, bước tiếp theo, bạn cần tải bản GIT dành cho hệ điều hành của máy bạn (https://git-scm.com/downloads) và bắt đầu cài đặt. Việc cài đặt khá đơn giản. Sau khi cài xong, mở cửa sổ lệnh và dùng các lệnh sau để cấu hình cơ bản cho GIT:
git config –global user.name “your_name” git config –global user.email “your_email@youremail.com”
2. Tạo Repository
Bước 1. Tạo Remote Repository trên GITHUB
- Đăng nhập vào GITHUB trên trình duyệt, nhấp vào + -> New repository.
- Điền các thông tin cần thiết cho Remote Repository và nhấp Create Repository . Kết quả, bạn sẽ thu về một link của remote repository vừa tạo, dưới dạng https://github.com/user-name/repository-name.
Bước 2. Tạo LOCAL REPOSITORY
Mặc dù đã tạo ra một remote repository trên GITHUB, nhưng phần lớn công việc bạn đều làm trên máy của mình, do đó cần phải tạo một local repository và sau đó kết nối chúng lại với nhau. Ở cửa sổ lệnh, đi đến thư mục bạn muốn khởi tạo một repository trong thư đó và dùng lệnh: git init để khởi tạo. Lúc này một thư mục Git đã được tạo ra với một thông báo Initialized empty Git repository in /.git/ nhưng nó là thư mục ẩn nên bạn không thể nhìn thấy được.
Bước 3. Kết nối LOCAL REPOSITORY và REMOTE REPOSITORY trên GITHUB
Repository trên Github được coi là remote repository và để kết nối với Local Repository, dùng lệnh:
git remote add origin https://github.com/user-name/repository-name.git
Để kiểm tra lại remote repository bạn đã add, dùng lệnh git remote -v. Bạn sẽ nhìn thấy các dòng kết quả như bên dưới:
origin https://github.com/user-name/Git.git (fetch) origin https://github.com/user-name/Git.git (push)
Trong đó, origin là tên của remote repository được đặt mặc định, bạn có thể đổi tên này bằng lệnh $ git remote rename origin new_name. Việc này có ích nếu như bạn có nhiều remote repository trong dự án.
3. Chuyển File vào Repository
Local Repository:
Quy trình người dùng chuyển file vào Local Repository được thực hiện cụ thể như sau:
- Các file dự án của bạn nằm trong một thư mục Local Repository, tuy nhiên chúng vẫn chưa được track, vì thế để chuyển chúng sang trạng thái track, dùng lệnh git add $file_name (hoặc git add * cho toàn bộ các file trong thư mục). Như vậy, các file sẽ ở trạng thái đã tracked và sẵn sàng để commit. Sau khi add file, chúng ta thường dùng lệnh git status để kiểm tra trạng thái của các file. Chẳng hạn, sau khi làm việc trên 1 file demogit.xml trong thư mục Local Repository, bạn sẽ cần:
git add demogit.xml git status On branch master Initial commit Changes to be committed: (use “git rm –cached <file>…” to unstage) new file: demogit.xml
- Commit nhằm chụp lại (snapshot) các file trong staging area và sự thay đổi với phiên bản trước đó nếu có, thông tin được lưu lại kèm theo tên email của người commit. Để commit, dùng lệnh git commit -m “$Message”. $$essage đi kèm lệnh commit nhằm giúp người dùng có thể dễ dàng nhận biết các lần commit, sao cho dễ nhớ vì thế message ở đây thường gắn với thông tin liên quan đến task bạn thực hiện. Chẳng hạn:
$ git commit -m “Demo file for GIT” [master 2a6786a] Add demogit.xml 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 demogit.xml
Sau đây là một số lưu ý bạn cần nhớ:
- Sau khi dùng lệnh git add bạn lại cần sửa đổi nội dung của file, nên nhớ file này vẫn ở trang thái tracked nhưng sẽ chuyển sang dạng modified và bạn không thể commit. Để commit, cần lặp lại lệnh git add một lần nữa. Tuy nhiên, bạn có thể dùng lệnh git commit -a -m “message” để commit trực tiếp luôn.
- Để đưa một tập tin ra khỏi staging area, dùng lệnh git reset HEAD $file_name.
- Để xóa file, dùng lệnh rm file_name (tuy nhiên chưa xóa hẳn khỏi ổ cứng) và để xóa vĩnh viễn, dùng lệnh rm -f $file_name.
- Để xem chi tiết lịch sử các lần commit, dùng lệnh git log.
Remote Repository trên Github: Dùng lệnh git push -u origin master để đưa toàn bộ các file đã được commit lên GITHUB (master là một khái niệm branch mà chúng ta sẽ tìm hiểu ở đoạn sau). Thường bạn sẽ được yêu cầu đăng nhập vào tài khoản GITHUB của mình. Dùng option -u nhằm ghi nhớ lại các thông tin truyền vào để lần kế tiếp bạn chỉ cần dùng lệnh git push là Git sẽ tự động hiểu cần làm gì.
git push -u origin master Counting objects: 1, done. Writing objects: 100% (3/3), 207 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To https://github.com/user_name/Git.git * [new branch] master -> master Branch master set up to track remote branch master from origin.
Sau khi thông báo đã hoàn tất, bạn có thể kiểm tra bằng cách vào Remote Repository của mình để xem các file mình vừa đẩy lên Remote.
Làm chung trên một Remote Repository: Khi nhiều người làm chung một dự án, họ sẽ cùng đẩy dữ liệu lên một Remote Repository trên GITHUB. Và khi có người push dữ liệu của họ lên và bạn muốn lấy về máy mình, dùng lệnh git pull origin master.
git pull origin master From https://github.com/user_name/Git * branch master -> FETCH_HEAD Already up-to-date.
Lệnh Pull giúp lấy toàn bộ dữ liệu trên Remote Repository về và gộp vào brand hiện tại trên Local Repository của bạn. Ngoài cách lấy dữ liệu với Pull, bạn còn có lệnh Clone và Fetch, cụ thể như sau:
- Lệnh git clone $remote_repository giúp sao chép toàn bộ dữ liệu và các thiết lập trên một Remote Repository và tự động tạo ra một master branch trên máy của bạn. Lệnh này chỉ nên sử dụng khi bạn cần tạo mới một local repository mới trên máy với toàn bộ dữ liệu và thiết lập của Remote Repository.
- Lệnh git fetch remote_repository lấy toàn bộ dữ liệu từ Remote Repository nhưng sẽ cho phép bạn thêm thủ công vào một branch nào đó.
4. Phân nhánh Branch
Phân nhánh Branch là một khái niệm rất quen thuộc khi sử dụng GIT. Khi tạo ra một repository, mặc định bạn sẽ có một branch tên là master, kỹ thuật phân nhánh branch giúp tạo ra một hoặc nhiều nhánh (branch) mới, mã nguồn từ branch master sẽ được clone sang các branch phụ mới tạo ra, và các thay đổi trên các branch phụ không làm ảnh hưởng đến branch chính. Phân nhánh branch cực hữu ích khi bạn muốn phát triển thêm tính năng hay một task, để tránh xung đột bạn sẽ clone từ branch chính về và tạo branch mới cho riêng mình. Nếu thay đổi trên branch của bạn bị xung đột, bạn có thể xóa nó đi mà không làm ảnh hưởng cả dự án, và nếu Ok, bạn có thể merge chung vào branch chính của dự án.
- Để xem các branch hiện có, dùng lệnh git branch.
- Để tạo một branch, dùng lệnh git branch $branch_name
- Để chuyển sang branch nào đó, dùng lệnh git checkout $branch_name. Lúc này, bạn có thể bắt đầu làm việc trên branch này và các lệnh như add, commit, push, sẽ được thực hiện trên branch bạn đang checkout và không ảnh hưởng tới các branch khác. Nếu bạn muốn merge các thay đổi trên branch mình vừa làm việc vào branch chính, bạn cần quay trở lại branch chính cũng bằng lệnh git checkout master và dùng lệnh git merge $branch_name để merge từ branch của bạn và branch chính.
Hi vọng với 2 phần tổng hợp trên, bạn có thể nắm bắt cơ bản về GIT, và có thể bắt đầu sử dụng và khám phá GIT và GITHUB.
Nguồn dữ liệu sử dụng làm ví dụ trong bài viết:
- https://git-scm.com/book/en/v2/Getting-Started-Git-Basics
- http://backlogtool.com/git-guide/en/