Tôi vừa xóa chi nhánh sai với một số thay đổi thử nghiệm mà tôi cần với git branch -D branchName
.Git hoàn tác chi nhánh địa phương xóa
Làm cách nào để khôi phục chi nhánh?
Tôi vừa xóa chi nhánh sai với một số thay đổi thử nghiệm mà tôi cần với git branch -D branchName
.Git hoàn tác chi nhánh địa phương xóa
Làm cách nào để khôi phục chi nhánh?
Bạn có thể sử dụng git reflog để tìm SHA1 của lần commit cuối cùng của chi nhánh. Từ quan điểm đó, bạn có thể tạo một chi nhánh sử dụng
git branch branchName <sha1>
Edit: Như @seagullJS nói, lệnh branch -D
cho bạn biết sha1, vì thế nếu bạn đã không đóng cửa nhà ga nhưng nó trở nên thật dễ dàng. Trong ví dụ này xóa và sau đó ngay lập tức khôi phục lại một chi nhánh tên là master2
:
[email protected] /C/MyRepo (master)
$ git branch -D master2
Deleted branch master2 (was 130d7ba). <-- This is the SHA1 we need to restore it!
[email protected] /C/MyRepo (master)
$ git branch master2 130d7ba
Git cho bạn biết SHA1 là gì khi nhánh bị xóa, vì vậy nếu bạn chỉ xóa nó, nó có thể chỉ là một vài dòng trong dòng lệnh. – seagullJS
Cảm ơn điều này đã tiết kiệm cho tôi giờ làm việc! FYI sử dụng git reflog để có được
Cảm ơn bạn rất nhiều, tôi đã tìm thấy các tệp "bị mất" của mình! – inix
đầu tiên: sao lưu toàn bộ thư mục của bạn, bao gồm cả các thư mục .git.
Thứ hai: Bạn có thể sử dụng git fsck --lost-found
để nhận ID của các cam kết bị mất.
Thứ ba: rebase hoặc nhập vào cam kết bị mất.
thứ tư: Luôn suy nghĩ hai lần trước khi sử dụng -D hoặc --force với git :)
Bạn cũng có thể read this good discussion làm thế nào để phục hồi từ loại hình báo lỗi.
EDIT: Nhân tiện, khô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 kỳ thứ gì tương tự) hoặc bạn có thể mất cam kết của mình.
Nếu bạn chưa đẩy việc xóa bài viết nào, bạn chỉ có thể làm:
$ git checkout deletedBranchName
Câu trả lời này làm cho Git Extensions tắt đi "nhánh bạn đang cố gắng đẩy dường như là nhánh mới cho điều khiển từ xa này". Cảm ơn rất nhiều. – Omer
Nếu bạn chỉ cần xóa các 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à 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 đã xóa.
Để khôi phục lại các chi nhánh, sử dụng:
git checkout -b <branch_name> <sha>
ví dụ:
git checkout -b branch_name e562d13
Thanks, điều này làm việc.
new_branch_name git branch
sha1
git checkout new_branch_name
// có thể thấy tôi cũ kiểm tra trong các tập tin trong chi nhánh cũ của tôi
Vui mừng khi biết tôi không phải là lame- chỉ o ai đã làm điều này (và quên thường xuyên đẩy đến một bản sao từ xa) – Ray
mà làm cho 3 người trong chúng ta bây giờ –