Git

Thiết lập kho lưu trữ trong Git

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.

Mô hình hoạt động của git

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ữ ở <repo> về máy cục bộ, kho lưu trữ gốc có thể được đặt trên hệ thống file cục bộ hoặc một máy chủ từ xa thông qua HTTP hoặc SSH. Chú ý: git clone cũng như git init là các lệnh dùng một lần, git clone chỉ sử dụng lần đầu khi thành viên lấy về một bản copy dự án để làm việc, sau đó tất cả các phiên bản và các hợp tác sẽ được quản lý ở kho lưu trữ cục bộ.

Trong Git khái niệm “working copy” là rất khác biệt so với những gì bạn có thể biết từ SVN (khi thực hiện checkout trong SVN, sẽ lấy code về từ kho lưu trữ SVN và gọi là working copy). Không giống SVN, Git không có sự khác biệt giữa “working copy” và kho lưu trữ trung tâm, chúng đều là một kho lưu trữ Git đầy đủ.

Sự khác biệt giữa Git và SVN

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 [email protected]: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 <[email protected]>
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 "[email protected]"

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 <[email protected]>
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.

 

Registration Login
Sign in with social account
or
Lost your Password?
Registration Login
Sign in with social account
or
A password will be send on your post
Registration Login
Registration