2011-10-21 29 views
27

làm thế nào để loại bỏ git thay đổi chi nhánh địa phương? ví dụ: chi nhánh địa phương có phiên bản: A-> B-> C Hiện tại tôi đang sử dụng phiên bản A và có một số thay đổi xung đột với phiên bản mới nhất C. Tôi muốn hủy thay đổi cục bộ và kéo phiên bản mới nhất C.làm thế nào để loại bỏ git thay đổi chi nhánh địa phương?

$ git pull 

Tôi sẽ gặp một số lỗi. và có nhiều tệp, vì vậy tôi không cần phải làm nhiều lần $ git co files

Có cách nào tốt hơn không?

Trả lời

54

Nếu bạn có thay đổi không bị giam mà bạn muốn loại bỏ, sử dụng này:

$ git reset --hard 

tương đương với

$ git reset --hard HEAD 

này loại bỏ tất cả những thay đổi không bị giam địa phương. Nếu bạn muốn xóa một số cam kết vi phạm khỏi chi nhánh địa phương của bạn, hãy thử tua lại:

$ git reset --hard HEAD^ #moves HEAD back by one commit 

hoặc ví dụ:

$ git reset --hard HEAD~3 #moves HEAD back by 3 commits 

Sử dụng cẩn thận vì bạn sẽ không thể hoàn tác các hoạt động này. Khi bạn đã hoàn tất việc dọn dẹp chi nhánh địa phương của mình, hãy sử dụng git pull để nhận mã mới nhất.

+0

Nếu bạn đã đẩy chi nhánh của bạn đến một máy chủ từ xa mà bạn cần phải cẩn thận với reset --hard vì nó có thể mess lên lịch sử. –

+0

Điều đó không xóa các tệp không được cam kết. Bạn sẽ phải xóa các tệp này theo cách thủ công. –

0

Bạn đã cam kết các thay đổi cục bộ của mình chưa? Nếu không phải là một git reset --hard ĐẦU nên làm các trick

+0

Bạn cũng có thể hoàn tác các thay đổi được cam kết tại địa phương, xem giải pháp của ayoy. – jli

19
git fetch 
git reset --hard origin/master 
+0

'git reset --hard origin/master' là chính xác những gì tôi đang tìm kiếm! – mystarrocks

+0

đây là giả sử bạn ave kiểm tra vào điều khiển từ xa tại một số điểm, không cùng áp dụng cho repo địa phương? tôi có thể làm 'git reset --hard otherLocalBranch' cho cùng một hiệu ứng? –

+0

Đây chính xác là những gì tôi đang tìm kiếm để loại bỏ các cam kết mà tôi đã rút từ một nhánh khác do nhầm lẫn. Cảm ơn @Onlyjob –

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