Tôi có một git kho lớn hơn 3 năm qua, tôi muốn xóa lịch sử thay đổi mà đã hơn một năm trước. Điều này có thể không? Có thể sử dụng git rebase nhưng làm thế nào?Git loại bỏ lịch sử cam
Trả lời
Xóa lịch sử có lẽ sẽ không khắc phục vấn đề của bạn. Rất có thể, vào một thời điểm nào đó, một tệp lớn đã được cam kết với kho lưu trữ và sau đó bị loại bỏ.
Tôi sẽ xem Find files in git repo over x megabytes, that don't exist in HEAD.
Điều tra ma thuật đen gọi là git replace
trong this article from the Pro Git book sử dụng các trường hợp chính xác làm ví dụ. Về cơ bản, nếu bạn có thể tìm thấy một điểm trong lịch sử mà bạn muốn hành động như là gốc mới, bạn có thể thay thế nó bằng một cam kết không có cha mẹ, như thể nó được tạo ra từ không khí mỏng. Bạn thậm chí có thể lưu trữ cây gốc trên một máy duy nhất, giúp bạn dễ dàng khôi phục lịch sử nếu bạn cần lại.
Lưu ý rằng vấn đề với git rebase
(và git replace
, cho vấn đề đó) là bạn muốn viết lại toàn bộ cây, bao gồm các nhánh, để tất cả đều trỏ đến các cam kết khác nhau. Điều này cũng có kết quả là làm cho nó khó khăn cho những người khác trong nhóm của bạn để hợp nhất trong những thay đổi của họ, bởi vì tất cả các bậc cha mẹ có SHAs khác nhau hơn họ đã có trước đây.
Từ những gì tôi đọc , 'cái' git replace'' thingy sẽ không làm việc xung quanh sự thay đổi-băm-vấn đề. –
@Jonas Bạn nói đúng. Cơ cấu lại câu trả lời của tôi để làm cho điều đó rõ ràng. –
Tuyệt vời! Nó cũng sẽ là một lỗi rất lớn trong git nếu bạn có thể thay thế toàn bộ lịch sử mà không có bất kỳ thay đổi nào trong băm. Sau tất cả, những băm mật mã là một trong những lý do để sử dụng git. –
- 1. Git: làm thế nào để loại bỏ lịch sử trước một cụ thể cam kết
- 2. Git trở lại cuối cùng cam kết và loại bỏ nó khỏi lịch sử
- 3. Git: Cách xóa tệp khỏi cam kết lịch sử?
- 4. Tự động viết lại toàn bộ lịch sử git để loại bỏ các cam kết hợp nhất đơn giản
- 5. Làm cách nào để đóng nhánh mà KHÔNG loại bỏ nó khỏi lịch sử trong git?
- 6. Giảm Git cũ cam kết từ lịch sử?
- 7. Xóa tất cả Lịch sử Cam kết Git
- 8. Xóa 4 cam kết khỏi lịch sử git của tôi
- 9. Lịch sử Git bao gồm/sublodule submodule cam kết
- 10. Xóa một cam kết cụ thể trong lịch sử git bao gồm hợp nhất
- 11. Sử dụng git filter-branch để loại bỏ các cam kết bằng tin nhắn cam kết của họ
- 12. git: viết lại lịch sử: sắp xếp lại và hợp nhất cam kết
- 13. Sử dụng lịch sử cam kết git để tìm các điểm nóng của dự án?
- 14. Vứt bỏ lịch sử cũ trên git repo đầy đủ các tệp nhị phân
- 15. lịch sử git của một dòng nguồn
- 16. xem tất cả lịch sử của git
- 17. Xóa lịch sử cam kết Github
- 18. Sửa lịch sử Git sau khi tìm nạp sai Repo
- 19. Git Loại bỏ các cam kết không mong muốn khỏi Yêu cầu Kéo
- 20. Git: loại bỏ sớm hơn cam kết nhưng giữ các thay đổi gần đây
- 21. git lịch sử đăng nhập đơn giản hóa
- 22. (khác) sửa đổi lịch sử git để thêm cam kết đầu tiên
- 23. Kết hợp lịch sử của hai kho Git?
- 24. Cam kết đăng bài Git: bỏ qua --amend và rebase
- 25. Loại bỏ Hunk Tương tác với git add --patch
- 26. Sử dụng Git từ cam-msg móc
- 27. git add/rm (cam kết)
- 28. Git - hiển thị lịch sử của một tệp?
- 29. Lịch sử Git - tìm đường bị mất theo từ khóa
- 30. Truy cập lịch sử tệp git
Git được thực hiện để lưu các thay đổi của bạn. Tác dụng xóa lịch sử là gì? –
lịch sử của tôi là nó quá lớn, .git dir là lớn hơn 400 MB, trong mỗi bản sao tôi phải tải về tất cả :(lịch sử này – paweb
có thể trùng lặp: [? Làm thế nào để loại bỏ các lịch sử cũ từ một kho git] (http://stackoverflow.com/questions/4515580/how-do-i-remove-the-old-history-from-a-git-repository) –