Hầu như tất cả các dự án mà tôi đã thực hiện có một số loại "nội dung cố định" luôn phải đến khi được sao chép, nhưng hiếm khi được thay đổi (xem ví dụ bên dưới). Tôi đã thử các cách tiếp cận khác nhau bằng cách sử dụng git, nhưng tất cả đều dễ bị lỗi: mọi người thường xuyên vô tình thực hiện các thay đổi.git - xử lý nội dung cố định
Đó là một trường hợp tinh tế để đảm bảo: các tệp/thư mục phải được phiên bản, nhưng lớn nhất phần lớn các thay đổi sẽ không được đẩy.
Nhìn xung quanh tôi có một vài lựa chọn:
git update-index --assume-unchanged <file>
: Vấn đề-would appear to be a local setting này, vì vậy đây chỉ giải quyết vấn đề trên một máy nhất định. Những bản sao mới dễ bị quên đi và vẫn vô tình thay đổi.git update-index --skip-worktree <file>
: Sự cố - Xuất hiện cùng một vấn đề, vì tôi không nghĩ rằng thay đổi đối với chỉ mục này được khuyến khích.git rm --cached <file>
: Vấn đề - không thực sự là giải pháp vì tất cả mọi người đều có bản sao của mọi người khi được đẩy!echo <file> >> .gitignore
: Sự cố - không thực sự là giải pháp vì điều này chỉ kiểm soát liệu đối tượng có được thêm vào repo hay không.- sử dụng bộ lọc làm sạch/loại trừ để loại trừ các thay đổi của tệp khỏi cam kết (xem answer) của jthill: Sự cố - phức tạp, dễ bị lỗi: vẫn cần mỗi trình phát để cấu hình cục bộ.
Câu trả lời có thể chấp nhận cho câu hỏi này không yêu cầu hành động đặc biệt của từng nhà phát triển mới.
Tại sao? Bởi vì đây chính xác là vấn đề với các giải pháp trên, trong đó, trong kinh nghiệm của tôi dẫn đến các tình huống mà "ai đó đã cam kết tập tin đó một lần nữa".
Tìm kiếm dễ dàng trả về nhiều câu hỏi. Chúng tôi cần câu trả lời cuối cùng!
- How to freeze a file in a repository
- Prevent local changes getting pushed in Git
- git assume-unchanged implications
- Howto prevent git from pushing changes to some files
- Ignore modified (but not committed) files in git?
- Preventing a file overwrite with Git
Ví dụ:
Đây là trường hợp tôi giao dịch với máy ATM. Dự án của tôi là một trang web nhúng phần mềm wiki (mà tôi không viết). Thành phần wiki cần cấu trúc thư mục không tầm thường được sử dụng chứ không phải cơ sở dữ liệu (có thể là một cơ sở dữ liệu). Nó cần phải tìm các thư mục và các tập tin đã có để làm việc. Sau một thời gian các tệp này trở nên lớn - chúng tôi không muốn theo dõi những thay đổi đó! Cấu trúc thư mục này cũng chứa một số cấu hình (tôi biết).Nếu tôi có thể bao gồm bản sao trần trong repo, và bằng cách nào đó (hầu như) không bao giờ theo dõi những thay đổi của nó, đó sẽ là hoàn hảo.
Bạn có thể cung cấp thêm một số chi tiết về "nội dung cố định" có thể là gì không? Bạn đang nói về các tập tin cấu hình? Cơ sở dữ liệu đồ đạc? Thứ gì khác? – Chris
Câu hỏi hay (và nỗ lực nghiên cứu tốt). Đây thực sự là một câu hỏi thường gặp về Git và xứng đáng là một câu trả lời kinh điển. – sleske
@Chris - đã thêm một số mô tả về các thư mục/tệp. –