Git nâng cao
Amanda Crawford-Adamo
Software and Data Engineer
.git/logs/refs/heads/
| Tính năng | Git Reflog | Git Log |
|---|---|---|
| Mục đích | Hiển thị cập nhật/thay ghi tham chiếu trong repo cục bộ | Chỉ hiển thị lịch sử commit |
| Phạm vi | Chỉ repository cục bộ | Repo cục bộ và remote |
| Nội dung | Mọi cập nhật ref (commit, reset, merge, …) | Chỉ commit |
| Tồn tại | Tạm thời (thường 90 ngày) | Vĩnh viễn (một phần lịch sử repo) |
| Trường hợp dùng | Khôi phục commit mất, xem hành động gần đây | Xem lịch sử dự án, hiểu phát triển tính năng |
git reflog
git reflog show
git reflog expire

| Thành phần | Mô tả |
|---|---|
| short-hash | Hash commit rút gọn |
| ref | Thường là HEAD, cũng có thể là tên nhánh |
| index | Vị trí trong reflog (0 là mới nhất) |
| action | Loại hành động (commit, reset, merge, …) |
| descriptions | Mô tả về hành động |
since = hiển thị mục từ thời điểm này
git reflog --since "time-qualifer"
until = hiển thị mục đến thời điểm này
git reflog --until "time-qualifer"
git reflog --since="1 week ago"
git reflog --until="yesterday"
git reflog --until="2024-01-01"
etl-featureLàm sao khôi phục nhánh etl-feature?
git reflog
git checkout <hash>
git checkout -b <branch-name>
| Kiểu reset | Lệnh | Ảnh hưởng đến Working Directory | Ảnh hưởng đến Staging Area |
|---|---|---|---|
| Soft | git reset --soft <commit> |
Không đổi | Thay đổi vẫn được stage |
| Mixed (mặc định) | git reset --mixed <commit> |
Không đổi | Bỏ stage các thay đổi |
| Hard | git reset --hard <commit> |
Hủy thay đổi | Hủy thay đổi |
Làm sao quay lại thay đổi ETL trước đó?
git reflog
git reset --soft HEAD@{1}
Reflog là “cỗ máy thời gian” cục bộ khi ta mắc lỗi

Git nâng cao