Tôi vừa xóa chi nhánh sai với một số thay đổi thử nghiệm tôi cần git branch -D branchName
.
Làm thế nào để tôi phục hồi chi nhánh?
Tôi vừa xóa chi nhánh sai với một số thay đổi thử nghiệm tôi cần git branch -D branchName
.
Làm thế nào để tôi phục hồi chi nhánh?
Câu trả lời:
Bạn có thể sử dụng git reflog để tìm SHA1 của lần xác nhận cuối cùng của chi nhánh. Từ thời điểm đó, bạn có thể tạo lại một nhánh bằng cách sử dụng
git branch branchName <sha1>
Chỉnh sửa: Như @seagullJS nói, branch -D
lệnh sẽ cho bạn biết sha1, vì vậy nếu bạn chưa đóng thiết bị đầu cuối thì nó trở nên thực sự dễ dàng. Ví dụ, điều này sẽ xóa và ngay lập tức khôi phục một nhánh có tên master2
:
user@MY-PC /C/MyRepo (master)
$ git branch -D master2
Deleted branch master2 (was 130d7ba). <-- This is the SHA1 we need to restore it!
user@MY-PC /C/MyRepo (master)
$ git branch master2 130d7ba
git branch branchName origin/branchName
Nếu bạn vừa xóa chi nhánh, bạn sẽ thấy một cái gì đó như thế này trong thiết bị đầu cuối của bạn:
Deleted branch branch_name(was e562d13)
- trong đó e562d13 là một ID duy nhất (còn gọi là "SHA" hoặc "băm"), với điều này, bạn có thể khôi phục nhánh bị xóa.
Để khôi phục chi nhánh, sử dụng:
git checkout -b <branch_name> <sha>
ví dụ :
git checkout -b branch_name e562d13
Đầu tiên: sao lưu toàn bộ thư mục của bạn, bao gồm thư mục .git.
Thứ hai: Bạn có thể sử dụng git fsck --lost-found
để lấy ID của các xác nhận bị mất.
Thứ ba: rebase hoặc hợp nhất vào cam kết bị mất.
Thứ tư: Luôn suy nghĩ kỹ trước khi sử dụng -D hoặc - Force với git :)
Bạn cũng có thể đọc cuộc thảo luận tốt này về cách phục hồi từ loại lỗi này.
EDIT: Nhân tiện, đừng chạy git gc
(hoặc cho phép nó tự chạy - tức là không chạy git fetch
hoặc bất cứ thứ gì tương tự) hoặc bạn có thể mất các cam kết của mình mãi mãi.
Cảm ơn, điều này đã làm việc.
chi nhánh git new_branch_name
sha1
kiểm tra git new_branch_name
// có thể thấy tệp cũ của tôi được kiểm tra trong các tệp trong nhánh cũ của tôi