Tôi đã làm điều này trong một thời gian chỉ sử dụng git. Tôi không theo dõi toàn bộ thư mục nhà, chỉ là những phần mà tôi đang tích cực thay đổi. Điều này bao gồm thư mục home / bin của tôi, chứa rất nhiều tập lệnh nhỏ, thư mục .vim của tôi và một số dự án lớn hơn trong các thư mục khác. Ngoài ra, có một số cấu hình cho thiết bị đầu cuối và hộp mở, cũng như các ứng dụng khác, được thêm vào repo.
Điều này hoạt động đủ tốt vì tất cả những thứ này có cùng một quyền và tôi không quan tâm đến dấu thời gian ban đầu. Đã đến lúc tôi dự định chia một số phần tử đó thành các mô hình con bằng cách sử dụng git filter-branch
. Đây là một chút khó khăn mặc dù có sự phụ thuộc lẫn nhau giữa các tệp trong các thư mục con khác nhau (ví dụ: một số tập lệnh .vim có thể gọi các tập lệnh từ thư mục bin của tôi ... không phải là một ví dụ hay nhưng hy vọng bạn có được điểm).
Tôi chưa tìm thấy giải pháp nào toàn diện hơn, nhưng cũng chưa thực sự xem xét bất kỳ giải pháp nào, kể cả lịch sử git-home. Có vẻ như sẽ khá phức tạp khi đặt toàn bộ thư mục chính dưới sự kiểm soát sửa đổi và sẽ có rất nhiều biến. Chẳng hạn, nếu bạn đặt (các) hồ sơ firefox của mình dưới sự kiểm soát sửa đổi, bạn sẽ kết thúc với số lượng lớn các chênh lệch nhị phân. Ngoài ra có những thứ như khóa ssh thường bị mất tốt hơn so với trùng lặp.
Nếu bạn muốn theo dõi các quyền (trừ bit thực thi, mà git đã theo dõi) thì rõ ràng có một cái móc sẽ làm điều đó. Nó được đề cập trong chủ đề serverfault này .