2010-11-08 35 views
122

Tôi muốn git ngừng theo dõi nhật ký phát triển cục bộ của tôi (log/development.log) trong kho lưu trữ của chúng tôi. Điều này có thể làm được không và tôi có thể làm như thế nào?Xóa một Tệp Hiện tại khỏi một Repo Git

+0

có thể trùng lặp của [Tạo git "quên" về tệp * đã được * theo dõi nhưng giờ đây là ".gitignored"] (http://stackoverflow.com/questions/1274057/making-git-forget-about-a -file-that-was-tracking-but-is-now-gitignored) – Cascabel

Trả lời

138

Chỉ cần để cung cấp cho các câu trả lời đầy đủ tất cả cùng một lúc:

  1. từ Klemens: Bạn cần phải thêm các tập tin vào tập tin .gitignore của bạn ở đâu đó trên các tập tin không mong muốn trong repo. ví dụ:

    $ cd $ cat >> .gitignore development.log C-d

  2. từ m. narebski: Sau đó bạn cần phải loại bỏ các tập tin từ repo bằng cách thực hiện "git rm --cached <file> và sau đó cam kết loại bỏ này"

Nếu bạn cũng đã hy vọng để làm cho cái nhìn repo như thể nó chưa bao giờ theo dõi tập tin đó, có nghĩa là phức tạp hơn và không được khuyến khích vì nó không chỉ tạo ra các cam kết mới cho mỗi cam kết trong lịch sử của bạn, do đó phá hủy khả năng tương tác trong một cách khó chịu giữa những người khác đã nhân bản repo của bạn, nhưng nó cũng để lại mọi cam kết chưa được kiểm tra (giả sử bạn kiểm tra các cam kết trước khi thực hiện chúng).

Với lưu ý đó, công cụ bạn đang tìm kiếm nếu đó là mục tiêu của bạn là filter-branch. Ví dụ đầu tiên thực hiện chính xác những gì tôi mô tả.

+3

sử dụng git rm --cached dường như không chỉ loại bỏ nó nhánh của tôi, nhưng khi tôi kéo đến một hệ thống khác, nó sẽ xóa các tệp vật lý trên hệ thống đó. Bất kỳ ý tưởng gì đang xảy ra ở đó? – biagidp

+2

Để đáp ứng các điều trên: Tôi tin rằng vấn đề là ở chỗ tôi không có .gitignore tại chỗ trên hệ thống thay thế trước khi kéo các thay đổi, vì vậy xóa xóa bản sao cục bộ. Ít nhất đó là lý thuyết – biagidp

1

thêm tệp gitignore.

thấy http://git-scm.com/docs/gitignore

+13

Đây chỉ là một nửa câu trả lời. Các mục '.gitignore' không áp dụng cho các tệp đang được theo dõi. –

+10

Phần thứ hai là 'git rm --cached 'và sau đó thực hiện loại bỏ này. –

+1

Tại sao không có lệnh đơn giản để git đánh giá lại tất cả các tệp được theo dõi hiện tại theo tệp .gitignore hiện tại? ... hay là có quá nhiều ý nghĩa thông thường? : p – Alexander

51

Để ngừng theo dõi tệp, chỉ cần sử dụng git rm --cached <filename>.

Nhưng như được chỉ ra bởi những người khác ở đây, thêm tệp vào .gitignore có thể ngăn bạn vô tình thêm lại tệp sau.

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