Trước khi tìm hiểu "Git là gì?" hay "Git làm việc như nào?", chúng ta hãy cùng nhau tìm hiểu qua khái niệm Version system control (VCS). VSC là 1 loại software tool giúp quản lý sự thay đổi của data/source code theo thời gian. Nó sẽ lưu trữ mọi sự thay đổi của source code trong 1 dạng database đặc biệt. Khi có lỗi xảy ra thì developer có thể revert lại hoặc compare các version trước để detect vấn đề 1 cách nhanh nhất.
Ý tưởng của CVCS
là sẽ chỉ có 1 nơi lưu trữ source của project được gọi là Central repository. Developer có thể commit trực tiếp bất kỳ 1 sự thay đổi nào lên Central repository.
Lúc này những developer khác có thể thấy được sự thay đổi này bằng cách update, CVCS
sẽ tự động update nội dung mới nhất cho bất kỳ file nào có sự thay đổi.
Làm việc với CVCS
khi cần thêm tính năng mới hoặc fix bug thì có một trình tự điển hình như sau:
Có 1 vài central version control system phổ biến có thể bạn đã nghe hoặc dùng như: SVN và Perforce
Với CVCS
thì các thao tác update/commit là từ máy local của developer sẽ làm việc trực tiếp với Central Repository (Figure 01).
Còn với DVCS
là mỗi developer sẽ clone Central Repository về local để tạo thành một Local Repository.
Tất cả các thao tác update/commit thì sẽ làm việc với Local Repository trong mô hình DVCS
(Figure 02).
Nếu bạn cho rằng cách thức này là lãng phí tài nguyên thì hãy yên tâm. Thực tế thì source của project đa phần là plain text file chỉ phần ít là image. Do đó thì sẽ không quá lãng phí disk space phải không? Ngược lại bằng cách đó lại mang khá nhiều lợi ích sau:
Hiện nay với mô hình DVCS
thì Mercurial, và Git là những loại tool phổ biến nhất. Bài viết hôm nay chúng ta sẽ cùng thảo luận về cách sử dụng Git
Git
: là free open source DVCS software như khái niệm chúng ta đã mô tả ở section 3GitHub/GitLab
: là một Git-based platform/Git provider được xây dựng dựa trên Git. Ngoài những tính năng có sẵn của Git, cả 2 platforms này đều cung cấp thêm nhiều tính năng khác. Dự án có thể tận dụng GitHub/GitLab mà không cần phải setup một Git trên remote server.
GitLab
để thực hiện các thao tác cơ bản.
Trước khi thao tác hãy chắc chắn rằng bạn đã thực hiện 2 điều dưới đây:
Đây sẽ là remote repository lưu trữ source code trên một remote server, giúp team có thể quản lý source trên môi trường internet.
Sau khi login, bạn tạo project với các bước sau: Menu > Projects > Create new project > Create blank project.
Điển các thông tin tương ứng: Project Name, Project URL và click "Create Project" button. Sau khi tạo thành công sẽ có kết quả như sau:
Bạn cũng có thể kiểm tra theo navigation như sau: Projects > Your Projects > Project name bạn vừa tạo
Trong thực tế bước 5.1 chỉ làm 1 lần bởi người phụ trách. Nên có thể skip nếu bạn tham gia vào dự án maintain đã có sẵn remote repository, hoặc bạn không phải là người phụ trách tạo remote repository.
Công việc khi tham gia vào dự án mới thông thường là clone source về máy local. Syntax như sau:
git clone <repo url>
Chúng ta cần cung cấp 1 repository URL để có thể clone source code được. Git support nhiều giao thức như SSH, HTTPS, trong ví dụ này chúng ta sẽ clone thông qua giao thức HTTPS. Bạn có thể lấy được repository url trên GitLab như hướng dẫn bên dưới:
git clone https://gitlab.com/phuongdp/winzone-demo-git.git
Sau khi câu lệnh được execute thì phiên bản mới nhất của central reposity trên default branch (main or master) sẽ được download về và add vào một thư mực với có tên giống reposity name(trong ví dụ là winzone-demo-git
)
Git hoạt động theo mô hình DVCS
nên tất các sự thay đổi từ local cần phải được update
vào local repository sau đó mới có thể push
lên remote repository. Một số command làm việc với local repository:
git status
: compare trạng thái của repository hiện tại với trạng thái local repository để liệt kê ra những kiểm khác nhau.git add
: chỉ định những file sẽ được lưu lên local repository bằng cách add chúng vào staging area.git commit
: lưu những sự thay đổi sau khi lựa chọn từ git add
lên local repository.git add
có thể dùng với một số cách chỉ định file/folder hoặc toàn bộ sự thay đổi:
git add demo.txt # Chỉ định file demo.txt git add demoFolder # Chỉ định file toàn bộ file trong demoFolder git add . # Chỉ định toàn bộ sự thay đổi trong project
git commit
với message có syntax như sau:
git commit -m "<message>"
Áp dụng với project demo như sau:
demo.txt
trong project folder.git status
: có 1 file demo.txt
untracked.git add .
lên staging areagit status
: có 1 file demo.txt
được tạo mới.git commit -m "commit demo.txt file"
.Tất cả các thay đổi này chỉ thực hiện trên local repository. Kiểm tra central repository trên GitLab chúng ta sẽ chưa thấy có gì thay đổi.
Việc tiếp theo cần làm là push chúng lên central repository. Chúng ta sẽ sử dụng git push
với syntax như sau:
git push <remote> <branch>
Áp dụng với project demo như sau:
origin
: là tên default prefix name cho những remote branch.main
: default branch của project trên GitLab (GitHub sẽ sử dụng branch default là master
). Khái niệm branch chúng ta sẽ để cập trong bài viết sau.Trong thực tế 1 project sẽ có nhiều member cùng làm việc, thế nên chúng ta cũng cần phải lấy source code mà member khác push lên. Để giả lập cho việc này, chúng ta sẽ tạo mới 1 file trên central repository để tạo ra 1 sự thay đổi cần pull về local.
Để lấy source code mới nhất của branch đang sử dụng (main
branch) trên central repository. Chúng ta sẽ sử dụng git pull
command.
new_file_need_to_pull.txt
filegit pull
new_file_need_to_pull.txt
fileHi vọng sau bàu viết này, các bạn đã hiểu về mô hình VCS và có thể thao tác cơ bản với Git/GibLab thông qua các command: clone, status, add, commit, pull, push
.
Nếu bạn đang cảm thấy làm việc với Git có nhiều câu lệnh thế này thì thật khó nhớ. Hãy yên tâm nhé, ngoài cách làm việc với command chúng ta có nhất nhiều tool hỗ trợ làm việc một cách thân thiện với Guide thông qua Git Guide Client, hoặc 1 số loại extension được tích hợp sẵn trong các IDE