Bài viết này sẽ cung cấp cho bạn cách sử dụng cơ bản các công cụ trong Git. Đầu tiên, chúng ta phải tạo một kho lưu trữ (repository) để bắt đầu kiểm soát phiên bản cho một dự án. Trong bài viết chúng ta sẽ làm quen các khái niệm sẽ sử dụng nhiều trong Git như:
- Working copy: Chính là một bản sao cây thư mục và các file trong project.
- Staging area hay còn gọi là cache chứa thông tin thay đổi trước khi commit.
- Local repository: Kho lưu trữ cục bộ lưu trữ tất cả thay đổi, chỉnh sửa trước khi push lên remote repository.
Ba thành phần working copy, staging area và local repository nằm trên máy tính của bạn, thành phần remote repository sẽ nằm trên các máy chủ Git như GitHub, GitLab, Bitbucket... hoặc do chính bạn cài đặt.
git init
Câu lệnh này sẽ tạo ra một kho lưu trữ mới, nó sử dụng để chuyển một project có sẵn chưa được quản lý phiên bản vào một kho lưu trữ Git hoặc tạo ra một kho lưu trữ trống rỗng. Các câu lệnh khác sẽ không có tác dụng nếu chưa khởi tạo một kho lưu trữ, do đó câu lệnh này cần thực hiện đầu tiên. git init sẽ tạo ra một thư mục .git trong thư mục gốc của project và thư mục này sẽ chứa tất cả metadata.
git init <directory>
Câu lệnh này sẽ tạo một kho lưu trữ ở một thư mục xác định, nếu bỏ qua tham số thư mục, nó sẽ tạo ra kho lưu trữ ngay tại thư mục hiện hành.
git init --bare <directory>
câu lênh với cờ --bare, nó tạo ra một kho lưu trữ trống và không có thư mục làm việc (working directory), các kho lưu trữ chia sẻ phải được tạo với cờ --bare. Các kho lưu trữ tạo bằng câu lệnh này sẽ có phần mở rộng là .git. Ví dụ, bare version cho một kho lưu trữ của my-project sẽ có tên là my-project.get. Chúng ta sẽ tạo một ví dụ sử dụng xuyên suốt trong các bài về Git. Tạo một thư mục git-test và bắt đầu thực hành:
c:\xampp\htdocs>mkdir git-test
c:\xampp\htdocs>cd git-test
c:\xampp\htdocs\git-test>git init
Initialized empty Git repository in c:/xampp/htdocs/git-test/.git/
Sự khác nhau khi sử dụng git init và git init --bare
Các kho lưu trữ khi tạo bằng git init được gọi là các thư mục làm việc (working directory), trong thư mục gốc của kho lưu trữ chúng ta sẽ có những thứ sau:
- Một thư mục .git lưu trữ tất cả thay đổi, chỉnh sửa trên git.
- Cây thư mục của dự án bao gồm tất cả các thư mục con, file trong dự án.
Kho lưu trữ tạo bằng --bare được gọi là bare repos, chúng khác với working directory. Nó không chứa working directory, thứ hai nó lưu trữ các thông tin thay đổi git trong một thư mục có mở rộng là my-project.git thay cho thư mục mặc định .git. Kho lưu trữ với cờ --bare chỉ được sử dụng cho mục đích chia sẻ, nếu trong team phát triển cần một chỗ để share các thay đổi trên kho lưu trữ. Các thành viên có thể push lên những thay đổi, vì không trực tiếp chỉnh sửa các file trong dự án do đó working directory không cần thiết trong bare repos.
git clone
Câu lệnh git clone sẽ copy một kho lưu trữ Git đang tồn tại về máy, khi lưu trữ này có thông tin history, thông tin quản lý các file của nó và toàn bộ môi trường từ kho lưu trữ gốc. Đây là cách đơn giản nhất để tương tác với kho lưu trữ trung tâm.
git clone <repo>
git clone sẽ sao chép kho lưu trữ ở
Ví dụ: chúng ta sẽ clone kho lưu trữ thông qua SSH (do đặt mật khẩu khi tạo key SSH lên mỗi lần sử dụng nó sẽ hỏi, xem SSH là gì và sử dụng bảo mật kết nối máy chủ Linux để biết thêm chi tiết).
c:\xampp\htdocs\git-test>git clone git@gitlab.com:allaravel/laravel-test.git
Cloning into 'laravel-test'...
Enter passphrase for key '/c/Users/Admin/.ssh/id_rsa':
remote: Counting objects: 182, done.
remote: Compressing objects: 100% (136/136), done.
remote: Total 182 (delta 26), reused 182 (delta 26)
Receiving objects: 100% (182/182), 287.61 KiB | 120.00 KiB/s, done.
Resolving deltas: 100% (26/26), done.
Checking connectivity... done.
c:\xampp\htdocs\git-test>dir
Volume in drive C is OS
Volume Serial Number is D4AA-9D5A
Directory of c:\xampp\htdocs\git-test
04/08/2017 07:29 AM <DIR> .
04/08/2017 07:29 AM <DIR> ..
04/08/2017 07:29 AM <DIR> laravel-test
0 File(s) 0 bytes
3 Dir(s) 951,447,552 bytes free
c:\xampp\htdocs\git-test>cd laravel-test
c:\xampp\htdocs\git-test\laravel-test>git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
c:\xampp\htdocs\git-test\laravel-test>git log
commit 8f95a77185ddbd01da88859ef5e9aaea49d229e5
Author: Kien Dang <kiendang@allaravel.com>
Date: Thu Apr 6 10:13:32 2017 +0700
initial commit
Khi đó nó sẽ lấy về toàn bộ kho lưu trữ, mở thư mục lấy về cũng đã có sẵn một thư mục .git.
git config
Câu lệnh git config cho bạn thiết lập các cài đặt trong Git từ các tham chiếu thông tin người dùng đến các thiết lập hành vi cho Git. Có nhiều các tùy chọn thiết lập như sau: Khi mới cài đặt Git, việc cần làm là thiết lập username và email cho git:
git config --global user.name "Kien Dang"
git config --global user.email "kiendang@allaravel.com"
Khi đó mỗi lần commit, thông tin người dùng như username và email sẽ được đính kèm vào, mỗi khi sử dụng lệnh git log để xem danh sách các commit, chúng ta sẽ thấy thông tin người commit.
c:\xampp\htdocs\git-test\laravel-test>git log
commit 8f95a77185ddbd01da88859ef5e9aaea49d229e5
Author: Kien Dang <kiendang@allaravel.com>
Date: Thu Apr 6 10:13:32 2017 +0700
initial commit
Git cho phép tạo ra các câu lệnh ngắn gọn như kiểu tên viết tắt bằng cú pháp sau:
git config --global alias.<alias-name> <git-command>
Ví dụ, chúng ta sẽ tạo ra các lệnh ngắn gọn như SVN
# Add some SVN-like aliases
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.up rebase
git config --global alias.ci commit
Git cũng cho phép thiết lập các trình soạn thảo khi sử dụng các câu lệnh git:
git config --system core.editor <editor>
Với <editor>
là câu lệnh để chạy các trình soạn thảo ví dụ như vim, nano...
git config --global --edit
Mở file cấu hình global để chỉnh sửa bằng tay. Tất cả file cấu hình của Git được lưu dưới dạng ký tự đọc được, việc cấu hình Git nên làm ngay sau khi cài đặt Git. Git lưu trữ các thiết lập trong 3 file cấu hình, mỗi file sẽ có một phạm vi ảnh hưởng khác nhau:
<repo>
/.git/config: Các thiết lập sẽ ảnh hưởng chỉ trong kho lưu trữ này.- ~/.gitconfig: Các thiết lập sẽ ảnh hưởng đến riêng người dùng, khi thực hiện các câu lệnh cấu hình có cờ --global cấu hình sẽ đưa vào đây.
- /etc/gitconfig: Các thiết lập ảnh hưởng toàn bộ hệ thống.
CÁC BÀI VIẾT KHÁC
Huy Nguyen
4 years ago
Phản hồi