2016-05-17 25 views
5

Tôi đang gặp sự cố khi chạy git stash -u (ví dụ: tất cả, bao gồm các tệp không được theo dõi), Git sẽ xóa thư mục node_modules của tôi. Ngày đầu này, nó thậm chí không khôi phục lại nó trên git stash pop - Tôi phải chạy lại npm install để lấy lại.Tại sao git stash xóa thư mục node_modules của tôi?

node_modules được bỏ qua trong .gitignore (qua dòng node_modules/*), và theo như tôi có thể thấy chưa bao giờ được cam kết trong lịch sử của dự án (git log --all -- node_modules không trả về gì). Không nên git stash bỏ qua nó (ngay cả khi thực hiện các tệp không được theo dõi)? Tôi khá chắc chắn rằng tôi đã sử dụng git stash như thế này trước đây mà không có bất kỳ vấn đề với node_modules.

Cập nhật: Tôi đã kiểm tra và vấn đề này không bị giới hạn ở một dự án cụ thể - dường như nó xảy ra ở bất cứ đâu tôi chạy git stash -u. Đối với những gì nó có giá trị, phiên bản Git của tôi là 2.6.3.windows.1 (trên Windows).

+0

Không thành vấn đề đối với tôi. Nó có vẻ không phải là vấn đề trong git. Bạn có thể thử nó trên máy của người khác, và xem nó có xảy ra không? – Landys

+0

Bạn có đang sử dụng cùng phiên bản Git với tôi không? –

+0

Không. Nhưng tôi đoán nó không liên quan gì đến phiên bản Git. Câu trả lời của Saeed dưới đây có thể có hướng đi đúng. – Landys

Trả lời

-1

npm tạo đường dẫn rất dài, có thể vượt quá 260 ký tự tối đa trên Windows, tùy thuộc vào khoảng thời gian đường dẫn của gốc repo của bạn. Điều này có thể giải thích tại sao đôi khi bạn thấy rằng nó hoạt động và những lúc khác thì không. Nếu bạn đang sử dụng npm, tôi khuyên bạn nên đảm bảo rằng repos của bạn luôn luôn có một đường dẫn gốc rất ngắn.

+0

Tôi nghĩ rằng điều này được sử dụng đúng với npm 2, nhưng npm 3 đặt tất cả phụ thuộc vào thư mục node_modules cấp cao nhất, vì vậy bạn không còn có xu hướng nhận được tổ hợp lớn được sử dụng để xảy ra. Ngoài ra, theo kinh nghiệm của tôi, điều này có xu hướng khiến Windows trở thành * không thể * để xóa 'node_modules', trong khi vấn đề tôi gặp phải là ngược lại. Bên cạnh đó, tôi không thể thấy tại sao đường dẫn của npm cụ thể sẽ gây ra vấn đề với Git stash. Đặc biệt là khi node_modules được gitignored anyway ... –

1

Bạn phải thay đổi mục .gitignore của bạn từ:

node_modules/* 

để

node_modules/ 

Xem thêm chi tiết ở đây: Git Stash Can Delete Ignored Files (git stash -u)

+1

Thật không may, điều này đã không làm việc cho tôi - ngay cả khi không có dấu sao, 'git stash -u' vẫn xóa thư mục node_modules. –

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