2010-03-08 28 views
5

Nếu đã có cam kết và nhiều thay đổi kể từ lần cam kết trước đó, có cách nào đơn giản để hoàn nguyên mọi thứ về trạng thái chính xác của cam kết trước đó không?Git: Làm cách nào để hoàn nguyên mọi thứ chính xác về trạng thái của cam kết trước?

Nếu có, có thể dễ dàng chuyển về trạng thái hiện tại nếu tôi cũng mong muốn không?

Tôi đã nhận ra rằng cam kết cũ này thực sự là đúng và muốn duy trì tất cả thay đổi kể từ đó chỉ để tham khảo, nhưng tất cả công việc trong tương lai sẽ dựa trên cam kết cũ này.

Trả lời

6

Có vẻ như bạn muốn đặt công việc hiện tại của bạn trên một chi nhánh:

git branch saved_work 
git reset --hard previouscommit 

Bây giờ, chi nhánh saved_work của bạn có chứa mọi thứ saupreviouscommitmaster được tua lại đến previouscommit.

1

Cam kết thay đổi hiện tại của bạn:

git commit 

Sau đó kiểm tra các cũ cam kết:

git checkout yourcommit 

Thêm một tùy chọn -f sẽ tiêu diệt bất kỳ thay đổi địa phương.

2

Vì bạn muốn trở về trạng thái trước đó:

git stash 
git checkout -b new_branch <tree-ish> 

trên sẽ lưu các thay đổi không bị giam của bạn và cho phép bạn tạo ra một chi nhánh mới tại cam kết cụ thể. Làm việc như bạn muốn và sau đó khi bạn muốn thay đổi sang trạng thái trước đó:

git stash 
git checkout earlier_branch 
+0

Tôi làm cách nào để đặt chi nhánh đã thanh toán này làm chủ? Tôi đã nhận ra rằng cam kết cũ này thực sự là đúng, và muốn duy trì tất cả các thay đổi kể từ đó chỉ để tham khảo, nhưng tất cả công việc trong tương lai sẽ dựa trên cam kết cũ này. –

Các vấn đề liên quan