Nếu và chỉ nếu, kho này đã không trốn thoát vào môi trường tự nhiên, bạn có thể xóa một tập tin từ lịch sử bởi bản chất nhân bản để một kho lưu trữ mới trong khi lọc các tập tin nhạy cảm trong quá trình này, sử dụng hg convertHg Convert Extension doc here
Thông thường, chúng tôi tìm thấy điều gì đó khi chúng tôi kiểm tra kho lưu trữ trước khi xuất bản hoặc gửi cho khách hàng, chẳng hạn như tệp web.config hoặc ini bằng mật khẩu.
Tiện ích mở rộng không được bật theo mặc định, nhưng được bao gồm với tất cả ứng dụng tôi sử dụng, bạn cần bật nó trước khi Mercurial nhận ra lệnh chuyển đổi.
Nếu sử dụng Rùa Hg hoặc lò, ví dụ:
- mở Rùa Hg -> Global Settings -> Extensions
- Đánh dấu vào ô bên cạnh "Chuyển đổi"
- Bấm Ok
Hoặc chỉnh sửa Mercurial.ini trực tiếp:
[extensions]
convert =
Vào thư mục trên kho lưu trữ của bạn (trong ví dụ của tôi, Repos của tôi là HelloApp):
Tạo một file có tên filemap.txt
Thêm một phù hợp với đường dẫn đầy đủ đến tên tập tin bạn muốn loại trừ.
exclude HelloApp/sensitive.config
Mở một dấu nhắc lệnh, cd vào cùng thư mục chứa filemap.txt của bạn, và chạy hg chuyển đổi
cd C:\projects
hg convert --filemap filemap.txt HelloApp HelloApp_clean
Sau đó, nhận được bản sao làm việc mới nhất:
cd HelloApp_clean
hg update
Bạn sẽ cần phải tạo bản sao mới trên máy chủ của mình bằng bản sao sạch.
dupe: http://stackoverflow.com/questions/1029480/is-there-a-way-to-remove-the-history-for-a-single-file-in-mercurial –
Câu trả lời được đưa ra là không phải là rất hữu ích. Đó là kỹ thuật chính xác trong một ý nghĩa. Nhưng nếu bạn sẵn sàng nói cho tất cả những người có thể nhân bản kho lưu trữ của bạn để loại bỏ thay đổi, bạn có thể xóa changeset giới thiệu thay đổi, sau đó sử dụng thứ gì đó như cấy ghép để di chuyển tất cả thay đổi sau đó và cung cấp cho họ băm mới cam kết. – Omnifarious
Câu trả lời của Martin Geisler là một câu trả lời hay hơn và là một phương pháp khác ngoài phương pháp tôi đề xuất. – Omnifarious