Phương pháp REVERSIBLE để Hủy bỏ Tất cả Thay đổi:
Tôi tìm thấy câu hỏi này sau khi thực hiện hợp nhất và quên kiểm tra phát triển ngay sau đó. Bạn đoán nó: Tôi bắt đầu sửa đổi một vài tệp trực tiếp trên master . D'Oh! Vì tình huống của tôi hầu như không phải là duy nhất (tất cả chúng tôi đều đã làm được, phải không; ->), tôi sẽ đưa ra một cách có thể đảo ngược mà tôi đã sử dụng để loại bỏ tất cả các thay đổi để khiến chủ nhân trông giống như phát triển lại.
Sau khi thực hiện git diff
để xem tệp nào đã được sửa đổi và đánh giá phạm vi lỗi của mình, tôi đã thực hiện:
git stash
git stash clear
Sau khi lưu trữ tất cả các thay đổi lần đầu, chúng sẽ được xóa. Tất cả các thay đổi được thực hiện đối với các tệp bị lỗi đối với tệp chính đã biến mất và tính chẵn lẻ được khôi phục.
Giả sử bây giờ tôi muốn khôi phục những thay đổi đó. Tôi có thể làm điều này. Bước đầu tiên là tìm băm của kho mà tôi vừa xóa / bỏ:
git fsck --no-reflog | awk '/dangling commit/ {print $3}'
Sau khi tìm hiểu hàm băm, tôi đã khôi phục thành công các thay đổi chưa cam kết với:
git stash apply hash-of-cleared-stash
Tôi không thực sự muốn khôi phục những thay đổi đó, chỉ muốn xác thực rằng tôi có thể lấy lại chúng, vì vậy tôi đã xóa chúng một lần nữa.
Một lựa chọn khác là áp dụng kho lưu trữ cho một nhánh khác , thay vì xóa các thay đổi. Vì vậy, về việc xóa các thay đổi được thực hiện từ việc làm việc trên nhánh sai, stash
mang lại cho bạn sự linh hoạt hơn rất nhiều để khôi phục sau trò la ó của mình.
Anyhoo, nếu bạn muốn một phương tiện có thể đảo ngược để xóa các thay đổi đối với một nhánh, thì cách nêu trên là cách ít nguy hiểm hơn trong trường hợp sử dụng này.
git reset --hard HEAD^