Lệnh lịch sử cam kết Git
Sửa đổi cam kết và tin nhắn trước đó
$ git commit --amend
Thêm tùy chọn --amend
để ghi đè cam kết mới nhất của nhánh bạn đang làm việc.
Khi không có tệp nào trong một chỉ mục, bạn có thể gửi lại cam kết trước đó bằng cách thêm tùy chọn --amend
và bạn sẽ được nhắc chỉnh sửa tin nhắn cam kết hiện có.
Xem:
Sửa đổi và di chuyển các cam kết và tin nhắn trước đây
$ git rebase -i <commit>
Thêm một hàm băm cam kết và một danh sách tất cả cam kết cho đến cam kết mới nhất sẽ được liệt kê. Tìm cam kết bạn muốn sửa đổi và thay đổi dòng đó từ pick
thành edit
, sau đó lưu và thoát.
Tiếp theo, thêm tùy chọn --amend
vào cam kết. Một màn hình để thêm một tin nhắn sẽ được hiển thị. Sửa đổi tin nhắn.
$ git commit --amend
Cuối cùng, thêm tùy chọn --continue
để chạy rebase.
$ git rebase --continue
Xem:
Thoát nhập nhánh
$ git rebase --abort
Bằng cách thêm tùy chọn --abort
, bạn có thể thoát khỏi thao tác rebase.
Hiển thị nhật ký tham chiếu
$ git reflog
Lệnh reflog cho phép bạn xem danh sách các cam kết mà HEAD đã sử dụng để chỉ ra trước đây.
08084a5 HEAD@{0}: commit: append description of the pull command
99daed2 HEAD@{1}: commit: append description of the commit command
48eec1d HEAD@{2}: checkout: moving from main to issue1
326fc9f HEAD@{3}: commit: append description of the add command
48eec1d HEAD@{4}: commit (initial): first commit
Cả hai cam kết đã xóa và thành công được thu thập bởi nhập nhánh sẽ được hiển thị.
Hiển thị nhật ký tham chiếu của đầu nhánh
$ git reflog <ref>
Điều này sẽ hiển thị một danh sách cam kết cho mỗi lần đầu <ref>
thay đổi, tương tự như bên dưới.
445e0ae issue1@{0}: commit (merge): Merge branch 'main' into issue1
1c904bd issue1@{1}: commit (amend): modify description of the pull command
08084a5 issue1@{2}: commit: append description of the pull command
99daed2 issue1@{3}: commit: append description of the commit command
48eec1d issue1@{4}: branch: Created from 48eec1ddf73a7fb508ef664efd6b3d873631742f
Chúng ta có thể xem lịch sử nhập nhánh của cả cam kết đã xóa và hiện có.
Xóa cam kết trước đó
$ git reset --hard HEAD~
Xem:
Đặt lại nhập nhánh
$ git reset --hard <commit>
Sử dụng lệnh reflog để tra cứu các cam kết trước khi chúng được nhập nhánh. Xác định hàm băm cam kết hoặc giá trị của [HEAD@{number}]
của cam kết xảy ra trước khi nhập nhánh. Trong ví dụ này, 71bdfbd
và HEAD@{4}
là các tham chiếu đến cam kết.
a51f8d2 HEAD@{0}: rebase -i (finish): returning to refs/heads/dev
a51f8d2 HEAD@{1}: rebase -i (squash): update 1
3a273e1 HEAD@{2}: rebase -i (squash): updating HEAD
f55ef69 HEAD@{3}: checkout: moving from dev to f55ef69
71bdfbd HEAD@{4}: commit: update 2
f55ef69 HEAD@{5}: commit (amend): update 1
Thêm giá trị băm (71bdfbd
và HEAD@{4}
) vào <commit>
khi chạy lệnh reset.
Vị trí đầu của nhánh bây giờ sẽ chuyển đến cam kết trước khi thực hiện nhập nhánh. Trạng thái của nhánh bây giờ sẽ giống với trạng thái trước khi thực hiện nhập nhánh.
Hủy đặt lại trước đó
$ git reset --hard ORIG_HEAD
ORIG_HEAD đề cập đến cam kết trước khi diễn ra thao tác đặt lại. Bạn có thể khôi phục đặt lại trước đó bằng cách sử dụng đặt lại về ORIG_HEAD.
Sao chép cam kết từ một nhánh khác
$ git cherry-pick "<commit>"
Cam kết được xác định bởi hàm băm của nó sẽ được sao chép vào nhánh hiện tại.
Xem:
- Kiến thức cơ bản về Git > Sao chép cam kết sang các nhánh khác
- Cách sử dụng Git > Sao chép một cam kết sang một nhánh khác
Tìm kiếm tin nhắn cam kết
$ git log --grep "<pattern>"
Hiển thị các cam kết với văn bản được chỉ định trong <pattern>
.