Hướng dẫn sử dụng Git và Github cơ bản¶
26/08/2016`*KHÔNG CÓ PHẢN HỒI* <https://lucngoc.com/hoc-tap/huong-dan-su-dung-git-va-github/#respond>`__
Git và Github được sử dụng khá phổ biến trong giớ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 và 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).
GIT LÀ GÌ?
Git là một hệ thống quản lý phiên bản phân tán (Distributed Version Control System – DVCS). Bạn có thể hình dung như thế này, có hai anh A và anh B cùng làm việc chung một dự án, mỗi người code một phần, hàng ngày họ dùng Git để đẩy (commit) phần việc đã hoàn thành của mình lên một kho mã nguồn chung (repository), từ kho chung này, họ 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. 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.
GITHUB LÀ GÌ?
Trong phần giới thiệu về Git, mình có nhắc đến các kho mã nguồn repository, Github là một hệ thống máy chủ dành riêng để chứa các kho này, các repository trên Github được gọi là remote repository. Như vậy, bạn có thể thấy rất rõ ràng sự khác nhau Git là một mô hình hệ thống còn Github là hệ thống máy chủ. Tất nhiên có nhiều dịch vụ giống như Github, nhưng trong khuôn khổ bài viết này, chúng ta sẽ chỉ làm việc với Github mà thôi.
Truy cập **https://github.com/join** để tạo tài khoản nếu bạn chưa có.
BẮT ĐẦU LÀM VIỆC
Trong bài viết này, mình xin hướng demo sử dụng Git và Github trên máy tính chạy Windows 10. Để chuẩn bị làm việc bạn cầtải Git về máy và cài đặt, link tải **https://git-scm.com/downloads**, việc cài đặt không có gì lưu ý đặc biệt, bạn cứ để các tùy chọn mặc định và tiền hành cài đặt bình thường.
Cấu hình Git cơ bản sau khi cài đặt, mở Git Bash và gõ.
Nhớ thay tên và email của bạn vào nhé, Git sẽ sử dụng các thông tin này khi bạn tham gia vào các dự án.
TẠO REPOSITORY REMOTE TRÊN GITHUB
Đăng nhập vào Github trên trình duyệt, nhấn vào dấu + và chọn New repository
Điền các thông tin cần thiết và nhấn Create Repository để tạo một repository mới:
Bạn sẽ thu được link của remote repository vừa tạo, link này có dạng https://github.com/user-name/repository-name, trong demo của mình là https://github.com/lucngoc/Git.git.
TẠO LOCAL REPOSITORY
Chúng ta đã tạo ra một repository trên Github, nhưng phần lớn công việc bạn đều làm trên máy tính của mình, do đó bạn cần phải tạo một local repository và kết nối chúng lại với nhau.
Dùng Windows Explorer mở thư mục chứa dự án bạn đang code trên máy, nhấn chuột trái vào vùng trống và chọn Git Bash Here.
Gõ lệnh $ git init để khởi tạo một repository trong thư mục đó (init là viết tắt của initialize). Lúc này một thư mục Git đã được tạo ra nhưng nó là thư mục ẩn nên bạn không thể nhìn thấy được.
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 bạn 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, gõ lệnh $ git remote -v
Trong dòng kết quả, 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.
ĐƯA FILE VÀO REPOSITORY
Quy trình người dùng đưa tập tin vào Repository.
Giai đoạn 1: Các tập tin trong dự án của bạn đã nằm trong thư mục Local Repository mà bạn đã dùng lệnh $ git init để tạo ở trên. Tuy nhiên chúng vẫn chưa được track, để đưa chúng vào trạng thái track bạn dùng lệnh sử dụng lệnh $ git add file_name (sử dụng $ git add * để đưa toàn bộ các file trong thư mục), lúc này các file sẽ được đặt trạng thái đã tracked và sẵn sàng commit (file nằm trong vùng file vào staging area và sẵn sàng để commit). Dùng lệnh $ git status để kiểm tra trạng thái của các file.
Ví dụ mình có file cat.txt trong thư mục Local Repository:
Giai đoạn 2: Commit có mục đích là 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 ta sử dụng lệnh $ git commit -m “message”. Message đi kèm lệnh commit giúp người dùng có thể dễ dàng nhận biết các lần commit, bạn có thể đặt sao cho dễ nhớ.
Lưu ý:
- Với file bạn đã dùng lệnh $ git add nhưng sau đó bạn sửa đổi
- nội dung của file, tập tin vẫn ở trang thái tracked nhưng sẽ được đưa về dạng modified và bạn không thể commit. Bạn phải sử dụng lệnh $ git add một lần nữa. Tuy nhiên nếu không muốn dài dòng như vậy, bạn có thể dùng lệnh $ git commit -a -m “message” để commit luôn, bỏ qua trạng thái modified.
- Để đưa một tập tin ra khỏi staging area bạn dùng lệnh **$ git reset
- HEAD tên-file**, để xóa file bạn dùng lệnh $ rm file_name (chưa xóa hẳn khỏi ổ cứng), để xóa hẳn bạn dùng lệnh git $ rm -f file_name.
- Để xem lại chi tiết lịch sử các lần commit, bạn sử dụng
- lệnh $ git log.
Đưa tập tin sau khi commit lên Remote Repository trên Github
Bạn dùng lệnh $ git push -u origin master (để hiểu về master chúng ta sẽ nghiên cứu khái niệm branch trong phần tiếp theo của bài viết), toàn bộ các tập tin đã được commit sẽ được đưa lên Github. Bạn có thể được yêu cầu đăng nhập vào tài khoản Github của mình. Tiền tố -u giúp Git ghi nhớ lại các thông tin truyền vào để lần kế tiếp bạn chỉ cần gõ $ git push là Git sẽ tự biết phải làm gì.
Đợi cho đến khi thông báo hoàn tất. Bạn có thể xem các file mình vừa đưa lên trên Github.com.
LÀM VIỆC VỚI REMOTE REPOSITORY
Giả sử như team của bạn có nhiều người làm chung một dự án và cùng đẩy dữ liệu lên Github. Khi có người push dữ liệu của họ lên và bạn muốn kiểm tra và lấy về máy mình, dùng lệnh $ git pull origin master
Pull giúp lấy toàn bộ dữ liệu trên remote repository và gộp vào brand hiện tại. Ngoài cách lấy dữ liệu với pull, ta còn có lệnh clone và fetch.
- Lệnh** clone ($ git clone
- remote**_repository) giúp sao chép toàn bộ dữ liệu và các thiết lập trên remote repository và tự động tạo ra một master branch trên máy tính 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 tính với toàn bộ dữ liệu và thiết lập của remote repository.
- Lệnh fetch ($ git fetch remote_repository) lấy toàn bộ
- dữ liệu từ remote repository nhưng sẽ cho phép bạn gộp thủ công vào một branch nào đó.
KỸ THUẬT PHÂN NHÁNH BRANCH
Ở phần trên chúng ta đã đã động đến master cùng khái niệm branch, và bay giờ ta sẽ tìm hiểu về chúng.
Khi bạn tạo 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được clone sang các branch phụ mới tạo ra, các thay đổi mã nguồn trên branch phụ không làm thay đổi mã nguồn trên nhánh chính. Việc này rất có ích khi bạn muốn phát triển thêm tính năng cho dự án, nếu tính năng đó gây xung đột bạn có thể xóa nó đi mà không làm ảnh hưởng tớ cả dự án, nếu tính năng đó OK, bạn có thể gộp chung vào dự án chính.
Để tạo ta một branch bạn dùng lệnh $ git branch tên_branch, để xem các branch hiện có bạn dùng lệnh $ git branch. Để bắt đầu làm việc với một branch nào đó, bạn dùng lệnh $ git checkout tên_branch. Lúc này các lệnh add, commit, push… sẽ được thực hiện trên branch được checkout và không ảnh hưởng tới các branch khác. Kết thúc làm việc với một branch, để trở về branch chính, bạn lại sử dụng lệnh checkout $ git checkout master, lúc này bạn muốn gộp các thay đổi trên branch phụ vừa làm việc vào branch chính, bạn dùng lệnh $ git merge tên_branch.
Bạn có thể dễ hình dung hơn với vụ dụ dưới đây:
Chúng ta đã đi đến phần cuối cùng trong bài viết này, đây là các kiến thức cơ bản, có thể vẫn còn thiếu sót, để tìm hiểu đầy đủ bạn có thể truy cập ***https://git-scm.com/doc***. Chúc các bạn sử dụng thành thạo Git và Github.




