2015-07-29 16 views
6

Tôi biết câu hỏi này đã được hỏi nhưng tôi dường như không thể thay thế hoàn toàn chi nhánh địa phương bằng chi nhánh từ xa của mình. Tôi đã cài đặt một plugin của bên thứ 3 trong chi nhánh địa phương của tôi và đang gặp sự cố khi xóa cài đặt; do đó, tôi muốn "bắt đầu lại" với phiên bản từ xa của chi nhánh. Nhánh được gọi là "dev" cục bộ và "origin/dev" từ xa. Tôi đã thử ba cách thay thế chi nhánh địa phương của tôi với các phiên bản từ xa:Git - thay thế chi nhánh địa phương bằng chi nhánh từ xa

1. git reset HEAD --hard 

2. git reset --hard origin/dev 

3. git checkout dev 
    git fetch 
    git reset --hard origin/dev 

Nhưng xem xét mã địa phương sau khi thực hiện các lệnh git trên, tôi vẫn có thể xem các tập tin và thư mục còn sót lại từ các plugin.

Sử dụng git status, tôi nhận được "Your branch is up-to-date with 'origin/dev'. Nothing to commit, working directory clean".

Sử dụng git status --ignored, tôi nhận được quá nhiều file vào danh sách ... về cơ bản tất cả mọi thứ trong file .gitignore của tôi, tôi tin.

Tôi chỉ muốn mã tồn tại trong nhánh dev từ xa và không có gì khác.

Ai đó có thể trợ giúp?

Cập nhật:

Hóa ra rằng lỗi mà tôi đã nhận được là do một loạt các file trong thư mục, root/var/cache/*. tập tin .gitignore tôi chứa các mục sau:

/var/* 
!/var/package 
var/session/* 

Đang cố gắng trong những cách có thể để khôi phục lại các chi nhánh dev địa phương từ xa (được liệt kê trong câu hỏi trên cũng như các giải pháp đề xuất dưới đây), thư mục root/var/cache vẫn có mặt; Tôi đã phải xóa nó trước khi ứng dụng của tôi bắt đầu hoạt động trở lại. Nhìn vào github, nhánh dev từ xa không chứa root/var/cache . Can anybody tell me why root/var/cache` không trả lời lệnh git để thay thế nhánh cục bộ bằng phiên bản từ xa?

+1

Chỉ cần xóa tất cả mọi thứ và reclone? – Mark

+0

Các tệp từ plugin không được git theo dõi, để git không chạm vào chúng. Chỉ cần xóa chúng bằng tay. – Hong

+0

Tôi không muốn xóa và reclone bởi vì tôi có các chi nhánh khác trong kho lưu trữ mà tôi cần phải giữ. Tôi mới là một git nhưng thật khó tin rằng không có một cách dễ dàng để làm điều này. Bài học kinh nghiệm: không cài đặt plugin của nhà cung cấp là 750 tệp yêu cầu bạn "kéo và thả" các tệp trong toàn bộ mã của bạn. – Vee

Trả lời

4

Từ một chi nhánh khác (nói thạc sĩ), thiết lập lại chi nhánh dev của bạn:

git branch -f dev origin/dev 

Sau đó, kiểm tra dev và dọn dẹp các file phụ của bạn:

git checkout dev 
git clean -d -f 
+0

Cảm ơn, @acanby, nhưng thư mục gây ra sự cố không bị xóa; Tôi đã phải tự xóa thư mục đó. Bất kỳ ý tưởng tại sao lệnh git không xóa thư mục đó? Vui lòng xem câu hỏi được cập nhật để biết chi tiết. – Vee

4

Hãy thử git clean -fx. Điều đó sẽ xóa tất cả các tệp không được theo dõi, ngay cả khi chúng được đề cập trong .gitignore.

+1

nhưng trước khi thực hiện điều đó hãy nhớ sao lưu tất cả các tệp cần thiết. Đôi khi các IDE giữ thông tin trong '.hidden_directories' về cách dự án của bạn được cấu hình. Ví dụ '.idea' trong trường hợp của PyCharm/Webstorm, vv – noisy

+0

Cảm ơn, Wouter - đã thử giải pháp của bạn nhưng có một thư mục (đã gây ra cho tôi các vấn đề) mà không bị loại bỏ; đã cập nhật câu hỏi. Bất kỳ ý tưởng những gì tôi đã làm sai? – Vee

+0

Git không theo dõi các thư mục, chỉ các tệp. Nếu tên tệp có thành phần đường dẫn không tồn tại, thì git sẽ tạo các phần bị thiếu, nhưng nếu không sẽ bỏ qua chúng. Bạn có thể thêm công tắc -d để xóa các thư mục trống. –

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