Git Tips

Git Tips

Phan Nhật Chánh

Chánh10 tháng 04, 2021

3 min read
·
views
·
likes

Git là một công cụ kiểm soát phiên bản phân tán (Distributed Version Control System – DVCS) phổ biến nhất hiện nay.Git ghi lại các thay đổi đối với tệp hoặc nhiều tệp theo thời gian để bạn có thể gọi lại các phiên bản cụ thể sau này.

Các thiết lập Git

git config --global user.name <username> #Thiết lập tên người dùng git config --global user.email <mailaddress> #Thiết lập địa chỉ email git config color.ui true #Màu cho kết quả trả về git config --global --list #Hiển thị danh sách đã thiết lập
git config --global user.name <username> #Thiết lập tên người dùng git config --global user.email <mailaddress> #Thiết lập địa chỉ email git config color.ui true #Màu cho kết quả trả về git config --global --list #Hiển thị danh sách đã thiết lập

Git clone

git clone git@github.com:your-username/your-repo.git #Sử dụng SSH git clone https://github.com/your-username/your-repo.git #Sử dụng HTTPS
git clone git@github.com:your-username/your-repo.git #Sử dụng SSH git clone https://github.com/your-username/your-repo.git #Sử dụng HTTPS

Upload Repository

cd your-directory git init git remote add origin git@github.com:your-username/your-repo.git git add . git commit -am "Message" git push -u origin master
cd your-directory git init git remote add origin git@github.com:your-username/your-repo.git git add . git commit -am "Message" git push -u origin master

Git submodules

Giả sử bạn có 2 repo trên github với tên là project1 và project2. Git submodule cho phép chúng ta sử dụng project2 làm submodule cho project1. Đại loại là project2 là 1 thư mục trong project1. Bạn có thể tham khảo thêm cách sử dụng Git Submodule.

Thêm module

git submodule add <repository> [<path>]
git submodule add <repository> [<path>]
  • repository - địa chỉ của repo cần lấy về
  • path - đường dẫn lưu repo. Nếu ta không chỉ định đường dẫn thì repo sẽ được lưu vào thư mục có tên giống với tên repo.
  • Ví dụ:
    git submodule add https://github.com/vidu/abc.git themes/abc
    git submodule add https://github.com/vidu/abc.git themes/abc
    Chạy lệnh git status để kiểm tra những thay đổi trong thư mục khi chạy lệnh trên. Lúc này, ta sẽ thấy một file có tên .gitmodules được tạo ra, nó là file chứa các thông tin của các module được đưa vào dự án của ta. Mở file .gitmodules ta sẽ thấy nội dung như sau:
    [submodule "abc"] path = abc url = https://github.com/vidu/abc.git

Cập nhập module

Khi cần cập nhập module, ta dùng lệnh:

git submodule update [--init]
git submodule update [--init]

Lựa chọn --init sẽ cho phép ta cập nhập các module chưa được lấy về. Ví như ở máy tính của bạn, bạn chạy lệnh add để lấy repo về rồi, thì không cần --init nữa. Còn ở các máy tính khác, repo chưa được lấy về, thì ta cần phải thêm lựa chọn này.

Xoá module

Với các repo không cần nữa, ta có thể xoá bỏ nó đi bằng lệnh:

git rm <path> #Ví dụ: git rm themes/abc
git rm <path> #Ví dụ: git rm themes/abc

Thao tác Tag

git tag #Hiển thị danh sách các Tag đã có. git tag -n #Hiển thị danh sách các Tag đã có và các chú thích. git tag <tagname> #Tạo tag git tag -a <tagname> #Tạo tag kèm theo chú thích git tag -d <tagname> #Xóa một Tag
git tag #Hiển thị danh sách các Tag đã có. git tag -n #Hiển thị danh sách các Tag đã có và các chú thích. git tag <tagname> #Tạo tag git tag -a <tagname> #Tạo tag kèm theo chú thích git tag -d <tagname> #Xóa một Tag

Clone Tag

Khi chạy lệnh git clone thì bạn chỉ tải được branch mặt định là master. Để tải riêng từng tag thì ta cần phải fetch toàn bộ tags về và checkout tạo branch mới với tag tương ứng:

git fetch origin 'refs/tags/*:refs/tags/*'
git fetch origin 'refs/tags/*:refs/tags/*'

Sau khi chạy lệnh trên, ta có thể kiểm tra lại các tags hiện có bằng lệnh

git tag -l
git tag -l

Tiếp theo checkout để lấy mã nguồn của tag mong muốn

git checkout tags/[YOUR_TAG_NAME] -b [YOUR_TAG_NAME]
git checkout tags/[YOUR_TAG_NAME] -b [YOUR_TAG_NAME]

Tóm lại ta có 2 lệnh chính là fetchcheckout như sau:

git fetch origin 'refs/tags/*:refs/tags/*' git checkout tags/[YOUR_TAG_NAME] -b [YOUR_TAG_NAME]
git fetch origin 'refs/tags/*:refs/tags/*' git checkout tags/[YOUR_TAG_NAME] -b [YOUR_TAG_NAME]