Tôi đang gặp một số rắc rối tìm hiểu các khái niệm cơ bản git:/Git bỏ qua các file đang được theo dõi mà không xóa chúng
Tôi đang thử nghiệm trên máy tính Windows địa phương của tôi trước khi cố gắng một số thứ trên trang web git-kiểm soát của tôi.
tôi có:
gittesting/repo1:
file.txt
ignoreme:
ignore.txt
và
gittesting/repo2
file.txt
ignoreme:
ignore.txt
Repo2 là một bản sao của repo1, và ignoreme đang được theo dõi. Các tập tin ignore.txt trở nên thay đổi trong repo2, nhưng tôi muốn ngừng theo dõi nó và cho git để hoàn toàn bỏ qua nó. Vấn đề ở đây là nếu tôi tạo một file .gitignore và thêm ignoreme, nó đã quá trễ vì nó đã được theo dõi, vì vậy tôi sẽ phải làm git rm --cách bỏ qua, nhưng sau đó nó được đánh dấu là bị xóa và nếu tôi kéo commit repo1, thư mục sẽ bị xóa thay vì bị bỏ lại một mình ..
Nói tóm lại:
- các ignore.txt có nội dung khác nhau giữa hai Repos.
- Tôi muốn các nội dung ignore.txt vẫn như họ đang có và hoàn toàn bị bỏ qua bởi git
Tôi đã nhìn trực tuyến, hỏi trong IRC, và nhìn vào những câu hỏi rất có liên quan, nhưng không thể tìm cách để làm điều này. Tôi biết ví dụ này có vẻ tầm thường, nhưng đó chính xác là những gì tôi cần làm trên trang web của mình, thay vào đó thư mục là Diễn đàn/bộ nhớ cache.
chỉnh sửa:
Đây là một chút của một hack và tôi muốn một câu trả lời tốt hơn, nhưng tôi đã kết thúc thực hiện:
cd repo2
echo "ignoreme" > .gitignore
echo "ignoreme/*" > .gitignore
git rm --cache -r ignoreme
git commit -m "Should ignore now"
cd ../repo1
mv ignoreme ignoreme2
git pull ../repo2
mv ignoreme2 ignoreme
Tôi luôn thích đặt '.gitignore' bên trong thư mục cho các thư mục" trống ". – meagar
Cách tiếp cận riêng biệt là cam kết tệp '.gitkeep' trống. Lý do là tiền tố terse và unambiguous: '. * # Ignore dotfiles'' .git * # nhưng không phải là những cấu hình kho lưu trữ, tức là .gitignore, .gitkeep' –
'.keepme' là một thành ngữ được sử dụng rộng rãi. Như thường lệ với thành ngữ, bạn có thể đi ngược lại ngũ cốc và làm theo cách của bạn, nhưng với sự nguy hiểm của chính bạn. –