2013-05-06 8 views
18

Dường như tôi xóa một chi nhánh trên github khi tôi không nên làm điều đó.Làm cách nào để phục hồi chi nhánh trên github?

Những gì tôi đã làm là như sau:

1- tôi thêm một .gitignore mới để hệ thống của tôi

2- Tôi sử dụng

git rm -r --cached . 
git add . 
git commit -m ".gitignore is now working" 

Khi tôi đã làm điều này, tôi đã có một chi nhánh trên hệ thống cục bộ của tôi nhưng máy chủ có hai nhánh.

Sau đó, tôi đã đẩy chi nhánh của mình vào máy chủ và vì tôi không phải nhánh thứ hai, nhánh thứ hai đã bị xóa trên máy chủ.

Làm cách nào để đưa lại?

Tôi đang sử dụng Github làm máy chủ từ xa.

+0

bạn đã đẩy chi nhánh của mình như thế nào? – juanpastas

+0

@juanpastas: Tôi đang sử dụng git từ bên trong VS và tôi đã sử dụng git> push> đẩy nhiều nhánh và tôi chọn chi nhánh mà tôi chưa có trên kho lưu trữ cục bộ của mình – mans

+0

* đẩy. Xem http://stackoverflow.com/questions/1992364/git-recover-deleted-remote-branch – juanpastas

Trả lời

58

Nếu bạn biết người cuối cùng cam kết thông báo của chi nhánh đã bị xóa, bạn có thể làm điều này:

git reflog 

# tìm kiếm cho thông điệp

fd0e4da [email protected]{14}: commit: This is the commit message I want 

# kiểm tra phiên bản

git checkout fd0e4da 

hoặc

git checkout [email protected]{14} 

# tạo chi nhánh

git branch my-recovered-branch 

chi nhánh # push

git push origin my-recovered-branch:my-recovered-branch 
+1

Nhưng nếu bạn không biết thông báo cam kết đó? – Alper

+0

bạn biết gì? – juanpastas

+0

Để tìm kiếm git reflog dễ dàng hơn một chút: git reflog | grep 'Đây là thông điệp cam kết tôi muốn' – jfountain

3

gì nếu bạn git fetch remote && git checkout -b remote_branch_name

+1

Cảm ơn, nhưng nó không hoạt động: $ git fetch remote gây tử vong: 'remote' có vẻ không phải là kho git gây tử vong: Không thể đọc từ kho lưu trữ từ xa. Hãy đảm bảo bạn có quyền truy cập chính xác và kho lưu trữ tồn tại. – mans

+1

'remote' là tên của repo từ xa của bạn (GitHub trong trường hợp này). thử 'git remote list' để xem tên repo từ xa của bạn (tôi nghĩ đó là' origin') và sử dụng tên đó thay vì 'remote' –

8

Nếu chi nhánh này đã bị xóa trong thời gian Yêu cầu kéo, bạn có thể lùi lại rằng ngay trong giao diện người dùng sử dụng nút "khôi phục nhánh".

Phần khó khăn thực sự là tìm một PR đã được hợp nhất và đóng, bạn chỉ cần biết URL hoặc số PR để đưa vào URL. Bạn có thể thử tìm trong email thông báo đã xóa của mình hoặc chỉ đoán số PR.

Viết nguyên nhân này reflog không giúp tôi khôi phục đồng đội cam kết với chi nhánh mà tôi chưa bao giờ rút trên git địa phương của mình.

+1

đã cứu tôi rất nhiều đau buồn! :) – amohr