2011-08-29 29 views
65

Tôi có một tệp (config.php), đã được cam kết với kho Git, nhưng tôi muốn bỏ qua cục bộ, nghĩa là tôi muốn tệp đó vẫn còn trong kho lưu trữ, nhưng buộc Git bỏ qua bất kỳ thay đổi nào đối với nó.Làm cách nào để bỏ qua các tệp trong kho lưu trữ?

Tôi đặt tệp vào .gitignore nhưng vẫn được đánh dấu là đã thay đổi và Git vẫn đang cố thực hiện thay đổi cho nó, mỗi khi tôi cam kết một cái gì đó. Bất kỳ ý tưởng, những gì tôi đang thiếu hoặc làm sai?

+0

vui lòng thêm tệp .gitignore của bạn - theo cách đó chúng tôi có thể thấy bất kỳ vấn đề nào liên quan đến tệp .gitignore – Lars

+0

có thể trùng lặp của [Làm thế nào để bỏ qua một tệp đã được đính kèm trong cam kết trước đó?] (Http://stackoverflow.com/questions/625919/how-to-ignore-a-file-which-is-already-comitted -in-the-previous-commit) –

Trả lời

143

Nếu tệp vẫn được hiển thị trong trạng thái, ngay cả khi tệp nằm trong .gitignore, hãy đảm bảo tệp đó chưa được theo dõi.

git rm --cached config.php 

Nếu bạn chỉ muốn bỏ qua nó tại địa phương, bạn cũng có thể làm cho nó bị bỏ qua bởi tình trạng git:

git update-index --assume-unchanged config.php 
+1

OK cảm ơn! Nếu tôi hợp nhất chi nhánh của mình với một chi nhánh khác, tệp này có thể gây ra một số vấn đề không? – prcaen

+1

@ Nimbus147: nó không phải là một vấn đề, và bất kỳ thay đổi trên tập tin đó sẽ vẫn bị bỏ qua (tức là không thêm/cam kết). – VonC

+4

'giả định không thay đổi' hoạt động tốt, cảm ơn bạn –

-3

Sau khi tệp được liệt kê trong .gitignore, bạn không thể thay đổi tệp.

Vì vậy, bạn có thể xóa tệp khỏi danh sách trong một lần commit, cam kết thay đổi tiếp theo, sau đó thêm lại tệp vào danh sách bỏ qua trong lần commit thứ 3 sau đó.

Điều tôi thường làm là chia tệp thành hai, một tệp được phép và tôi có thể thay đổi, bao gồm tệp thứ hai nếu nó tồn tại, sau đó người thay thế có thể thực hiện thay đổi cấu hình trong tệp bị bỏ qua tùy chọn.

+1

"_Sau khi một tệp được liệt kê trong .gitignore bạn không thể thay đổi nó_" - bạn có thể làm rõ, ý bạn là gì? Tôi có ** rất nhiều tập tin ** trong nhiều '.gitignore' của tôi và tôi liên tục thay đổi những tập tin này! Đây là lần đầu tiên, tôi nghe ai đó nói, rằng một khi tôi thêm tập tin vào '.gitignore', tôi không thể thay đổi nó. – trejder

+1

Anh ấy thực sự sai. Bạn có thể thay đổi chúng. Git không tải lên hoặc thậm chí cung cấp cho bạn tùy chọn tải lên. – David

2

Nếu tập tin là đã có trong kho, và do đó chỉ số/khu vực Staging , sau đó cập nhật cho .gitignore sẽ không thay đổi tình huống đó - Nó sẽ tiếp tục được cam kết.

Để xóa tệp khỏi chỉ mục/Khu vực dàn dựng, hãy sử dụng git rm <file>.

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