Viet Dev

Cover image for Git nâng cao
Tuan for Unicloud Group

Posted on

Git nâng cao

Git nâng cao

Reset your branch - Đặt lại nhánh

Một trong những tính năng nâng cao của git đó là đặt lại nhánh của bạn,
để quay trở lại (revert) những lần commit trước. Mặc định sẽ quay lại
lần commit gần nhất, nhưng bạn có thể dùng commit hash để quay lại một
commit cụ thể. Lệnh này có 2 tuỳ chọn khác nhau: --hard và --sort.

git reset --hard <#commit hash>
Enter fullscreen mode Exit fullscreen mode

Lệnh này sẽ đưa branch của bạn về lần commit cụ thể. Tất cả commit thực
hiện sau sẽ được hoàn tác. Dự án của bạn sẽ quay lại chính xác như thời
điểm này.

git reset --sort <#commit hash>
Enter fullscreen mode Exit fullscreen mode

Lệnh này cũng sẽ đưa branch của bạn về những lần commit cụ thể, nhưng sẽ
giữ tất cả thay đổi của bạn ở local. Từ thời điểm này, nếu bạn thay đổi
bất kỳ điều gì trong tệp đó, thì sẽ được đối chiếu trong git status.

Git rebase

Một trong những tính năng của git hữu dụng nhất, git rebase sẽ fetch lần
commit cuối từ branch master và đặt code của bạn vào đầu branch master.

git<br>
rebase

Lưu ý: Việc này có thể tạo ra vấn đề
  • Ví dụ: Nếu branch của bạn đang hoạt động, tách branch master trong 1
    thời gian dài sau đó bạn muốn rebase nó với branch master, điều này
    có thể gây sự cố, bởi vì sau 1 khoảng thời gian, sẽ có nhiều thay
    đổi trong branch master gây ảnh hương lên branch của bạn, hoặc phá
    vỡ các tính năng của ứng dụng.

  • Để khắc phục tình trạng này, bạn cần rebase thường xuyên với branch
    master.

Git log

Để xem lại thay đổi trên code của bạn. Git log sẽ chỉ ra commit logs.
Lệnh này giúp bạn có thể xem lại những hành động trước đó. Nếu bạn chạy
lệnh git log trong dự án của bạn, bạn sẽ xem 1 danh sách logs như hình
bên dưới

git log
Enter fullscreen mode Exit fullscreen mode

git<br>
log

Ngoài ra bạn cũng có thể xem n commit gần nhất bằng lệnh sau:

git log -n
Enter fullscreen mode Exit fullscreen mode

Xem log trên từng dòng

git log --oneline --graph
Enter fullscreen mode Exit fullscreen mode

git log<br>
oneline

Xem riêng hoạt động của một người dùng

git log --author <#author name>
Enter fullscreen mode Exit fullscreen mode

git log<br>
author

Xem commit theo format

git log --pretty=format:"The commit %h is applied by %cn"
Enter fullscreen mode Exit fullscreen mode

git log<br>
format

Git stash

Git stash có thể dùng để lưu code của bạn mà không cần thực hiện commit.
Khi bạn chạy lệnh git stash, code sẽ được lưu vào local commit tạm
thời vào branch của bạn. Nó chỉ được sử dụng cho mục đích cá nhân vì
không thể push một stash lên remote respository

git stash
Enter fullscreen mode Exit fullscreen mode

git<br>
stash

Khi bạn thực hiện nhiều lần thay đổi trên code và sử dụng git stash để
lưu, sử dụng git stash list để xem danh sách

git stash list
Enter fullscreen mode Exit fullscreen mode

git stash<br>
list

Bạn có thể dễ dàng thực hiện việc lựa chọn những stash cụ thể trong danh
sách (nếu bạn có nhiều hơn 1 stash) bằng cách sử dụng lệnh

git stash apply stash stash@{1}
Enter fullscreen mode Exit fullscreen mode

số 1 biểu thị cho stash cũ nhất, mới nhất là số 0

git stash<br>
apply

Nếu bạn không muốn sử dụng code đã apply bằng stash. Bạn có thể dùng
lệnh git checkout . để resets tất cả code chưa được commit.

git checkout .
Enter fullscreen mode Exit fullscreen mode

Bạn có thể xoá từng stash trong danh sách bằng cách sử dụng

git stash drop stash@{2}
Enter fullscreen mode Exit fullscreen mode

git stash<br>
drop

hoặc git stash clear để xóa tất cả

git stash clear
Enter fullscreen mode Exit fullscreen mode

git stash<br>
clear

Sử dụng .gitignore

Khi tạo một dự án mới bạn phải khai báo các file, folder không cần
upload lên server trong file .gitignore.

Nếu các file, folder này không nằm trong project mà tự động sinh ra từ
máy hay phần mềm bạn đang dùng. Ví dụ, bạn dùng MacOs hay có file
.DS_STORE, Thumbs.db, .Spotlight-V100…​ sinh ra:

gitignore

nếu bạn code android thường sinh ra những file .gradle hay thư mục build
thường rất nặng

android

Dưới đây là 1 file .gitignore mẫu, cho một dự án thực tế

# Mac OS X hidden files

.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

#Vim swap files
.*.sw?

#PhpStorm
.idea

#vscode
.vscode

#Sublime Text
*.sublime-project

#Node
node_modules
npm-debug.log
yarn-error.log
.phpunit-watcher-cache.php
Enter fullscreen mode Exit fullscreen mode
  • Khi bạn tạo 1 project mới, rất có thể IDE sẽ tự tạo file .gitignore
    cấu hình sẵn với project

  • Việc tạo .gitignore phù hợp sử dụng cá nhân

Latest comments (0)