2011-08-12 26 views
6

Gần đây tôi đã tách kho lưu trữ của mình (nằm trong bigproj) bằng cách sử dụng git filter-branch --subdirectory-filter deep/in/my/project. Sau đó, tôi đã chuyển .git thư mục đến deep/in/my/project.Giữ stash sau git filter-branch --subdirectory-filter

Bây giờ, stash là trong trạng thái kỳ lạ, nơi stash đầu là một cái gì đó như:

[email protected]{0}: filter-branch: rewrite 

tôi không thể thả stash này, như tôi nhận được lỗi này (sau khi git stash drop):

refs/[email protected]{0}: not a valid stashed state 

Bây giờ, ngay cả khi tôi biết việc cập nhật stash @ {1}, nó vẫn chứa các khác biệt cho các tệp trong phân cấp bigproj. Có thể ghi lại dữ liệu stash để nó chỉ chứa các tệp thuộc phân cấp deep/in/my/project không?

Trả lời

0

Tôi đoán bạn phải làm droppop trước khi bạn di chuyển thư mục .git. Bạn luôn có thể stash nó sau khi bạn di chuyển.

+0

Không, điều đó không hiệu quả. Ngay cả khi tôi thử 'git stash drop' trước khi di chuyển thư mục' .git', tôi cũng gặp lỗi tương tự. Những gì bạn có nghĩa là bằng cách tái stash? –

+1

Hmm, dường như 'stash' không tồn tại trong quá trình lọc-chi nhánh vì lý do nào đó. Có thể bạn sẽ phải quay trở lại trạng thái chưa được lọc của bạn và chỉ cần thực hiện những thay đổi đó, sau đó sau khi bộ lọc thực hiện một 'git reset HEAD ~ 1' để làm cho chúng không bị ràng buộc một lần nữa. –

3

Tôi gặp sự cố tương tự sau khi sử dụng git filter-branch. Lệnh sau đây sẽ cắt hoàn toàn stash và do đó cũng xóa các mục được tạo bởi git filter-branch. Cảnh báo! rằng tất cả các thay đổi được lưu trữ có thể không thể khôi phục sau khi gọi lệnh này, vì vậy hãy đảm bảo áp dụng tất cả các trạng thái khác đã được lưu trữ trước khi bạn gọi lệnh.

git stash clear 
+0

Nhưng tôi không muốn giết toàn bộ stash, tôi muốn giữ nó, chỉ cần không có bộ phận mà không có trong repo nữa. –

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