Git là gì?
Git là h? th?ng ki?m soát qu?n lý phiên b?n phân tán th??ng ???c s? d?ng qu?n lý source code trong các d? án phát tri?n ph?n m?m. S? d?ng Git s? giúp nhi?u thành viên có th? làm vi?c trong cùng 1 d? án, x? lý ???c các xung ??t source code gi?a các dev, t?o ???c nhi?u phiên b?n, phân nhánh… Bài vi?t này s? h??ng d?n git c? b?n và các l?nh th??ng dùng trong quá trình làm vi?c.
Cài ??t git và c?u hình c? b?n trên windows, Mac và Linux
N?u dùng windows, Mac:
T?i git t?i: https://git-scm.com/downloads
Tùy theo h? ?i?u hành Windows Mac hay Linux, b?n ch?n b?n phù h?p. Quá trình cài ??t c?ng r?t d? dàng, b?n ch? c?n ?? nguyên các tùy ch?n m?c ??nh r?i next next finish.
??i v?i Ubuntu Linux:
sudo apt install git
??i v?i Centos Linux:
sudo yum install git
Ki?m tra git ?ã cài ??t hay ch?a:
git --version
C?u hình git c? b?n
Sau khi cài ??t xong chúng ta s? thi?t l?p thông tin cá nhân:
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
check thông tin:
git config --list
?? thoát git config thì: nh?n Esc , nh?p :q và enter (gi?ng khi dùng trình so?n th?o vi vim)
H??ng d?n git – các câu l?nh th??ng dùng
Git init
T?o local repository b?ng cách t?o 1 th? m?c ch?a d? án, cd vào th? m?c ?ó r?i ch?y l?nh:
git init
Git Remote
L?nh này tr? local repository c?a b?n ??n repository chung:
git remote add origin repository-url
Git Clone
Sao chép t?i t? repository online v? máy:
git clone repository-url
clone t? 1 nhánh c? th?:
git clone --branch <branchname> <remote-repo-url>
or
git clone -b <branchname> <remote-repo-url>
vd:
git clone -b mybranch https://mygit.com/demo/demo-project.git
Git Pull
Trong làm vi?c nhóm thì các thành viên s? th??ng xuyên push code c?a h? lên repository chung, và ?? t?i v? nh?ng ph?n m?i c?p nh?t ?ó thì chúng ta s? dùng câu l?nh git pull. Câu l?nh này dùng ?? c?p nh?t nh?ng thay ??i trên repository chung v? local repository:
git pull origin master
git fetch
L?nh này ???c s? d?ng ?? t?i xu?ng các s? thay ??i t? Remote repository mà không làm thay ??i tr?ng thái c?a Local repository. M?c ?ích ?? theo dõi các commit nh?ng thành viên khác ?ã c?p nh?t lên remote repository, ?? có ???c thông thông tin khác nhau gi?a remote và local. Sau ?ó, b?n có th? thay ??i c?p nh?t vào local repo d? li?u t?i v? b?ng l?nh git pull ho?c git merge, vd: git merge origin/master
Khu v?c chu?n b? Staging
Staging là khu v?c t?m ch?a source code ?? chu?n b? commit vào local repository:
Chúng ta có th? thêm 1 file
git add test.txt
Ho?c nhi?u file:
git add file1 file2 file3
Ho?c thêm t?t c? nh?ng thay ??i source code vào staging:
git add .
Remove file n?u add nh?m:
git rm [file]
Commit
câu l?nh commit s? ??a source code t? khu v?c chu?n b? vào local repository:
git commit -m "Comment"
commit mà ko c?n thông qua l?nh add lên staging:
git commit -a -m "test comment"
commit b? xung và g?p chung v?i commit tr??c ?ó:
git commit --amend
thay ??i comment cho commit th?c hi?n tr??c ?ó:
git commit --amend -m "new message"
Git Push
??y source code t? local repository lên repository online, ví d? ??y vào repository nhánh master:
git push origin master
git status
câu l?nh này s? hi?n th? cho chúng ta các ph?n source ?ã ???c thay ??i, nh?ng file trong staging…
git log
log ra các commit ?ã th?c hi?n
Nhánh
Chúng ta có th? phân nhánh ?? phát tri?n các tính n?ng riêng, ho?c các thành viên t?o nhánh riêng ?? làm vi?c r?i sau ?ó merger vào nhánh chính.
Li?t kê các nhánh:
git branch
T?o nhánh m?i:
git branch new-branch-name
#new-branch-name là tên nhánh m?i
Chuy?n sang nhánh khác:
git checkout branch-name
T?o và chuy?n sang nhánh m?i t?o trong cùng 1 l?nh:
git checkout -b branch-name
Xóa nhánh:
git branch -D branch-name
G?p nhánh:
Ví d? g?p nhánh Test vào nhánh master:
quay l?i nhánh master:
git checkout master
ch?y l?nh g?p 1 nhánh vào nhánh hi?n t?i:
git merge test
M?t s? l?nh git khác
git diff
ki?m tra s? thay ??i
git reset
H?y git add:
git reset
H?y commit cu?i ch?a push, không ??a tr? l?i staging:
git reset --hard HEAD~1
git revert
undo commit cu?i ?ã push:
git revert <commit_hash>
git checkout .
Xóa t?t c? nh?ng gì v?a thay ??i trong nhánh ?? ??a v? tr?ng thái ??ng b? v?i nhánh trên repo
git checkout .
git stash
l?nh trên có tác d?ng t?m c?t gi?u ?n nh?ng thay ??i
??a nh?ng th? ?ã c?t tr? l?i:
git stash apply
git tag
?ánh d?u commit quan tr?ng b?ng tag
Check git repository remote URL
git config --get remote.origin.url
ho?c:
git remote -v
Các nhà cung c?p d?ch v? l?u tr? git repository ph? bi?n
Chúng ta có th? t? t?o Repository Server, ho?c s? d?ng d?ch v? t? các nhà cung c?p:
Github: https://github.com/
Bitbucket: https://bitbucket.org/
Gitlab: https://about.gitlab.com/
L?i k?t
Nh? v?y v?i bài vi?t này, chúng ta ?ã hi?u ???c nh?ng gì c? b?n v? Git. N?u b?n có gì c?n b? xung thì hãy cùng chia s? qua ph?n bình lu?n nhé.
Bài vi?t r?t h?u ích và d? hi?u ?.
C?m ?n anh nhi?u.
Cám ?n anh, th?t s? e ?ã dùng git m?t th?i gian r?i nh?ng nh? bài vi?t c?a a mà e bi?t thêm nhi?u th? v? git 😀
??y ?? quá, tuy?t v?i 😀