Git - Bỏ qua thư mục node_modules ở mọi nơi


367

Tôi có một dự án chứa nhiều dự án khác:

  • Dự án chính
    • Dự án nhỏ 1
    • Dự án nhỏ 2

Tất cả chứa node_modulesthư mục. Tôi muốn git bỏ qua thư mục bất kể nó bắt đầu từ thư mục gốc ở đâu. Một cái gì đó như thế này để thêm vào .gitignore:

*node_modules/*

Câu trả lời:


747

Thêm điều này

node_modules/

để .gitignoretập tin bỏ qua tất cả các thư mục được gọi node_modulestrong thư mục hiện tại và bất kỳ thư mục con


điều gì sẽ là con đường toàn cầu để làm điều tương tự cho nghiệp, loại trừ?
SuperUberDuper

7
Đối với mẫu gitignore cho nodejs: github.com/github/gitignore/blob/master/Node.gitignore
Xavier Egea

8
Xem câu trả lời của @ AndrewSchreiber nếu trước đó bạn đã thêm thư mục node_modules vào git. Bạn sẽ cần xóa nó khỏi bộ đệm với "git rm -r --cached node_modules".
Casper

176

Sử dụng phổ quát một lớp trong thiết bị đầu cuối trong thư mục dự án:

chạm .gitignore && echo "node_modules /" >> .gitignore && git rm -r --cached node_modules; tình trạng git

Nó hoạt động bất kể bạn đã tạo .gitignorehay chưa, bất kể bạn đã thêm vào node_modulestheo dõi git hay chưa.

Sau đó cam kết và đẩy các .gitignorethay đổi.

Giải trình

touchsẽ tạo .gitignoretập tin nếu nó không tồn tại.

echo>>sẽ nối node_modules/vào cuối .gitignore, làm cho node_modulesthư mục và tất cả các thư mục con bị bỏ qua.

git rm -r --cachedxóa node_modulesthư mục khỏi điều khiển git nếu nó được thêm vào trước đó. Nếu không, điều này sẽ hiển thị một cảnh báo pathspec 'node_modules' did not match any files, không có tác dụng phụ và bạn có thể bỏ qua một cách an toàn. Các cờ làm cho việc loại bỏ được đệ quy và bao gồm bộ đệm.

git statushiển thị những thay đổi mới. Một thay đổi .gitignoresẽ xuất hiện, trong khi node_modulessẽ không xuất hiện vì nó không còn được theo dõi bởi git.


5
touchkhông cần thiết ở đây: >>sẽ tạo tập tin nếu nó không tồn tại.
Lionello

touchlà cần thiết. >>sẽ trở lại no such file or directory: .gitignorekhác.
Andrew Schreiber

1
Hmm, dường như khác nhau từ HĐH đến HĐH
Lionello

macOS dường như không cần chạm
Carles Alcolea

echo "node_modules/" > .gitignorenên tạo một tệp mới với nội dung gốc, sử dụng văn bản >> nối thêm vào cuối tệp được chỉ định hiện tại
chrisz

28

Hãy thử làm một cái gì đó như thế này

**/node_modules

** được sử dụng cho một cuộc gọi đệ quy trong toàn bộ dự án

Hai dấu sao liên tiếp **trong các mẫu khớp với tên đường dẫn đầy đủ có thể có ý nghĩa đặc biệt:

Dẫn đầu **theo sau là dấu gạch chéo có nghĩa là khớp trong tất cả các thư mục. Ví dụ, **/fookhớp tệp hoặc thư mục ở foobất cứ đâu, giống như mẫu foo. **/foo/barphù hợp với tập tin hoặc thư mục barbất cứ nơi nào trực tiếp trong thư mục foo.

Một dấu vết /**phù hợp với tất cả mọi thứ bên trong. Ví dụ: abc/**khớp tất cả các tệp trong thư mục abc, liên quan đến vị trí của tệp .gitignore, với độ sâu vô hạn.

Một dấu gạch chéo theo sau hai dấu sao liên tiếp sau đó một dấu gạch chéo khớp với 0 hoặc nhiều thư mục. Ví dụ, a/\**/bcác trận đấu a/b, a/x/b, a/x/y/bvà vân vân.

Các dấu hoa thị liên tiếp khác được coi là không hợp lệ.

Tài liệu tham khảo


2
Đây là câu trả lời chính xác.
vua

Quan tâm để giải thích tại sao phương pháp này tốt hơn đơn giản node_modules/?
Tanckom

22

Điều đầu tiên và quan trọng nhất là thêm .gitignoretệp trong ứng dụng của tôi. Giống như vậy trong hình ảnh dưới đây.

Đặt .gitignore trong thư mục mẹ / thư mục của node_modules.

và tiếp theo thêm điều này trong .gitignoretập tin của bạn

/node_modules

Ghi chú

Bạn cũng có thể thêm các tệp khác để bỏ qua chúng để được đẩy trên github. Dưới đây là một số tệp được lưu giữ trong .gitignore. Bạn có thể thêm chúng theo yêu cầu của bạn. #chỉ là một cách để bình luận trong tập tin .gitignore.

# See https://help.github.com/ignore-files/ for more about ignoring files.

# dependencies
/node_modules

# testing
/coverage

# production
/build

# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*

Tại sao bạn lại thêm bản dựng vào .gitignore?
Sebastian Nielsen

6
@SebastianNielsen Lý do tương tự chúng tôi không theo dõi node_modules. Bạn có được bản dựng / bằng cách biên dịch.
Daniel Foust

8

Tạo tệp .gitignore trong thư mục gốc trực tiếp bằng trình chỉnh sửa mã hoặc bằng lệnh

Dành cho Mac & Linux

 chạm .gitignore 

Cho cửa sổ

 tiếng vang .gitignore 

mở .gitignore khai báo thư mục hoặc tên tệp như thế này / Foldername


4

Thêm dòng dưới đây vào .gitignore sẽ bỏ qua các mô-đun nút từ toàn bộ kho lưu trữ.

node_modules

nhập mô tả hình ảnh ở đây


1
Làm sao? Nó sẽ chỉ bỏ qua thư mục node_modules trong cùng thư mục có tệp .gitignore
Rajendran Nadar

@RajendranNadar cảm ơn, tôi chỉ đang cố gắng để tìm ra điều đó bản thân mình.
Jack BeNimble

0

Thêm dòng dưới đây vào .gitignore của bạn

*/node_modules/*

Điều này sẽ bỏ qua tất cả node_modules trong thư mục hiện tại của bạn cũng như thư mục con.


Lưu ý rằng đã có một câu trả lời được chấp nhận cho câu hỏi này. Vui lòng chỉnh sửa câu trả lời của bạn để đảm bảo rằng nó cải thiện các câu trả lời khác đã có trong câu hỏi này.
hongsy

0

bạn cũng có thể làm điều đó với SVN / Rùa git.

chỉ cần nhấp chuột phải vào node_modules -> Rùa git -> thêm vào danh sách bỏ qua.

Điều này sẽ tạo .gitIgnore cho bạn và bạn sẽ không tìm thấy thư mục node_modules trong dàn dựng lại.


0
**node_modules

Điều này làm việc cho tôi

cách tiếp cận đệ quy để bỏ qua tất cả các nút_modules có trong các thư mục con

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.