Làm thế nào để tôi hoàn tác kiểm tra trong git?


134

Tôi vừa kiểm tra một cam kết trước đó từ repo git địa phương của tôi. Tôi chưa thực hiện bất kỳ thay đổi nào với nó, tôi chỉ nhìn vào nó. Bây giờ tôi muốn quay lại cam kết mới nhất của mình - làm thế nào để tôi làm điều đó?

Lệnh chính xác tôi đã sử dụng để kiểm tra xem:

git checkout e5dff6b3c5d704f9b598de46551355d18235ac08

Bây giờ khi tôi gõ git log, ở đầu tôi thấy cam kết đã kiểm tra này, nhưng không có cam kết nào sau này của tôi. Có phải tôi đã vô tình xóa chúng?


Tôi nghĩ rằng bạn đang nhìn thấy nó sai cách: chúng tôi kiểm tra các chi nhánh (người đứng đầu), không cam kết riêng lẻ
Z. Khullah

Câu trả lời:


183

Hãy thử điều này trước:

git checkout master

(Nếu bạn ở một chi nhánh khác master, hãy sử dụng tên chi nhánh ở đó.)

Nếu điều đó không hiệu quả, hãy thử ...

Đối với một tệp duy nhất:

git checkout HEAD /path/to/file

Đối với toàn bộ kho lưu trữ bản sao làm việc:

git reset --hard HEAD

Và nếu điều đó không hiệu quả, thì bạn có thể tìm trong reflog để tìm SHA đầu cũ của mình và đặt lại về đó:

git reflog
git reset --hard <sha from reflog>

HEAD là một tên luôn luôn trỏ đến cam kết mới nhất trong chi nhánh hiện tại của bạn.


nhưng làm cách nào để tôi xem các cam kết của mình để quyết định băm SHA1 nào sẽ cung cấp cho nó?
Yuval Karmi

1
Bạn không - bạn gõ HEAD, nguyên văn. Git đã biết HEADnghĩa là gì . Tuy nhiên, nếu bạn thực sự, thực sự muốn cho nó một SHA1 thay vào đó, bạn có thể sử dụng git logđể xem nhật ký cam kết.
Amber

Khi tôi chạy, git reset --hard HEADnó đưa tôi trở lại cam kết đã kiểm tra đó ... Tôi sẽ đăng lệnh chính xác mà tôi đã sử dụng để kiểm tra.
Yuval Karmi

(Nếu bạn tò mò, bạn có thể nhập git rev-parse HEADvà thấy rằng nó cung cấp cho bạn SHA1 tương ứng với cam kết mới nhất của bạn.)
Amber

Tôi đã thêm hai tùy chọn mới ở trên, hãy thử chúng (theo thứ tự - trước tiên hãy thử phiên bản thanh toán).
Amber


16

Bạn có thể muốn git checkout master, hoặc git checkout [branchname].

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.