Tại sao .gitignore không bỏ qua các tệp của tôi?


125

Xem hình ảnh bên dưới. Tệp .gitignore của tôi nên bỏ qua tất cả các tệp trong src / dist, nhưng không phải vậy.

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

Câu trả lời:


215

.gitignorechỉ bỏ qua các tệp chưa phải là một phần của kho lưu trữ. Nếu bạn đã chỉnh sửa git addmột số tệp, các thay đổi của chúng sẽ vẫn được theo dõi. Để xóa các tệp đó khỏi kho lưu trữ của bạn (nhưng không phải khỏi hệ thống tệp của bạn), hãy sử dụng git rm --cachedchúng.


9
git rm --cached file_name.ext tốt cho tôi để cập nhật gitignore cho một tệp. cảm ơn.
sybozz

3
Tôi đã làm điều này, nhưng GitHub vẫn muốn theo dõi và thêm chúng.
Netside

91

Tệp .gitignore đảm bảo rằng các tệp không được Git theo dõi vẫn không bị theo dõi.

Chỉ thêm thư mục / tệp vào tệp .gitignore sẽ không bỏ theo dõi chúng - chúng sẽ vẫn được Git theo dõi.

Để bỏ theo dõi tệp, cần phải xóa khỏi kho lưu trữ các tệp được theo dõi được liệt kê trong tệp .gitignore. Sau đó, thêm lại chúng và cam kết các thay đổi của bạn.

Cách dễ nhất, triệt để nhất để làm điều này là xóa và lưu vào bộ nhớ cache tất cả các tệp trong kho, sau đó thêm lại tất cả. Tất cả các thư mục / tệp được liệt kê trong tệp .gitignore sẽ không được theo dõi. Từ thư mục trên cùng trong kho lưu trữ, hãy chạy các lệnh sau:

git rm -r --cached . git add .

Sau đó cam kết các thay đổi của bạn:

git commit -m "Untrack files in .gitignore"

Xin lưu ý rằng mọi cam kết trước đó với các tệp không mong muốn sẽ vẫn còn trong lịch sử cam kết. Khi đẩy lên GitHub, hãy lưu ý lịch sử cam kết có thể chứa .envhoặc client_secret.jsontệp.

Cách tốt nhất là tạo tệp .gitignore và điền nó vào các thư mục / tệp bạn không muốn theo dõi khi bắt đầu một dự án. Tuy nhiên, thông thường cần phải thêm vào tệp .gitignore sau khi nhận ra rằng các tệp không mong muốn đang được theo dõi và lưu trữ.


Cảm ơn bạn đã trả lời. Điều này thực sự hữu ích. Đừng quên đẩy repo lên git
Chris Reed

Sau khi sử dụng git rm -r --cached .quay lại, tất cả các thay đổi cũng hoạt động để thêm lại tất cả các tệp không bị loại trừ với .gitignore .
Adam Hurwitz

8

gitignore chỉ bỏ qua các tệp không được theo dõi. Các tệp của bạn được đánh dấu là đã sửa đổi - nghĩa là chúng đã được cam kết và quá khứ cũng như hiện tại được theo dõi bằng git.

Để bỏ qua chúng, trước tiên bạn cần xóa git rmchúng, cam kết và sau đó bỏ qua chúng.


6

Bạn có thể sử dụng git rm -r --cached ./node_modules. Giả sử nếu bạn muốn bỏ qua nút


4

Nhìn vào đây: .gitignore không hoạt động Và đặc biệt là nhận xét từ ADTC:

Đảm bảo rằng tệp .gitignore của bạn sử dụng mã hóa ANSI hoặc UTF-8. Nếu nó sử dụng thứ gì đó khác như Unicode BOM, có thể Git không thể đọc tệp. - ADTC ngày 14 tháng 12 năm 17 lúc 12:39


0

Đầu tiên xóa tệp index.lock khỏi git repo của bạn

rm -f .git/index.lock

và sau đó thêm .gitignore

git add .gitignore
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.