2014-05-17 16 views
35

Không có vấn đề gì tôi đặt trong .gitignore tôi có thể không get git để bỏ qua các tập tin UserInterfaceState.xcuserstate dưới đây:gitignore không bỏ qua tập tin

$ git status 
On branch master 
Your branch is up-to-date with 'origin/master'. 

Changes not staged for commit: 
    (use "git add <file>..." to update what will be committed) 
    (use "git checkout -- <file>..." to discard changes in working directory) 

    modified: .gitignore 
    modified: CalFoo.xcodeproj/project.xcworkspace/xcuserdata/wcochran.xcuserdatad/UserInterfaceState.xcuserstate 

Tôi đang sử dụng/chỉnh sửa các tập tin .gitignore niêm yết trên this post. Tôi đã thử mọi thứ để khớp với mẫu bao gồm cả tên đường dẫn chính xác: CalFoo.xcodeproj/project.xcworkspace/xcuserdata/wcochran.xcuserdatad/UserInterfaceState.xcuserstate không có kết quả.

Sự cố cụ thể này phát sinh từ quy trình làm việc nơi Xcode được sử dụng để tạo repo git ban đầu và tệp .gitignore từ here được thêm vào sau đó. Một câu trả lời chung hơn để bỏ qua các tập tin được theo dõi trước đó trong git có thể được tìm thấy từ this question (Tôi đoán tôi không bao giờ tìm thấy bài đăng này trong tìm kiếm của tôi vì nó không có "gitignore" trong tiêu đề).

+0

Bản sao có thể có của [Dừng theo dõi và bỏ qua các thay đổi đối với tệp trong Git] (http://stackoverflow.com/questions/936249/stop-tracking-and-ignore-changes-to-a-file-in-git) – Unicornist

+0

@Unicornist không trùng lặp - tôi muốn một tệp cụ thể bị xóa và bỏ qua * ở khắp mọi nơi * trong khi câu hỏi khác muốn một số tệp nhất định không được theo dõi trên toàn cầu. – wcochran

Trả lời

60

Bạn chỉ có thể bỏ qua các tệp chưa được phiên bản nhưng tệp đó đã được biết là git.

Nếu bạn muốn git theo dõi tệp đó, không cần phải yêu cầu git bỏ qua nó.

Nếu bạn không muốn git theo dõi tệp đó sử dụng git rm và quy tắc bỏ qua của bạn sẽ bắt đầu hoạt động.

Thận trọng: git rm sẽ xóa tệp. Sử dụng git rm --cached để xóa khỏi repo nhưng không phải từ đĩa.

+16

Thận trọng, 'git rm' sẽ xóa tệp. Sử dụng 'git rm --cached' để xóa khỏi repo nhưng không phải từ đĩa. – Darkhogg

+0

Cảm ơn @michas và Darkhogg - hiện tại không được theo dõi bằng cách lấy và bị xóa khỏi repo. – wcochran

+2

Câu trả lời này tương ứng với những gì tôi đã từng tin: nhưng hôm nay, tôi có một tập tin nằm trong .gitignore, nó không được kiểm soát, và nó vẫn hiển thị trong "trạng thái git" như một tập tin không được theo dõi (tên tập tin của nó là 'xây dựng'). Không có số tiền "git rm build" hoặc chạm vào .gitignore giúp. Bất kỳ ý tưởng? – Stabledog

10

Tôi gặp vấn đề tương tự.

Đầu tiên cam kết bất kỳ thay đổi mã xuất sắc, và sau đó, chạy lệnh này:

git rm -r --cached . 

này loại bỏ bất kỳ tập tin thay đổi từ chỉ mục (dàn khu vực), sau đó chỉ cần chạy:

git add . 

Commit it:

git commit -m ".gitignore working now" 

Để hoàn tác git rm - tên tệp được liên kết, hãy sử dụng git add filename.

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