2014-10-28 15 views
10

Vì một số lý do, tôi phải viết lại toàn bộ lịch sử kho lưu trữ git của mình để thay đổi committer_id của mọi cam kết. Tuy nhiên, tôi đính kèm một ghi chú cho nhiều hay ít mọi cam kết và sử dụng git-filter-branch để thay đổi committer_id sẽ tạo một cách hợp lý các cam kết mới, để lại các ghi chú phía sau. Có cách nào để sao chép ghi chú sang cam kết mới khớp không?Bảo tồn ghi chú git khi viết lại lịch sử với chi tiết bộ lọc git

thread Điều này dường như đặt câu hỏi tương tự nhưng bị bỏ lại không có giải pháp trong năm 2011.

Cảm ơn bạn đã giúp đỡ của bạn!

+2

bạn có một danh sách các OLD_SHA-> NEW_SHA? Hoặc có lẽ vì bạn chỉ thay đổi GIT_COMMITTER_NAME, bạn có thể 'git rev-list' trên orig refs và refs thay thế và nhận được điều đó? Một trong những bạn có cũ-> sha mới lập bản đồ vấn đề nên tầm thường. –

+0

Ý tưởng hay, tôi đã không xem xét nó theo cách này. Cảm ơn! – Kiplaki

Trả lời

1

Vấn đề có thể là git-notes cần thêm một số cấu hình để hoạt động theo cách bạn muốn. Có thể bạn cần cấu hình này biến

git config notes.rewriteRef refs/notes/commits 

Từ các tài liệu: https://git-scm.com/docs/git-notes#git-notes-notesrewriteRef:

GIT_NOTES_REWRITE_REF

Khi viết lại cam kết, trong đó lưu ý để sao chép từ bản gốc cho viết lại cam kết. Phải là danh sách được phân cách bằng dấu hai chấm của các lần chỉnh sửa hoặc bóng.

Nếu không được đặt trong môi trường, danh sách ghi chú cần sao chép tùy thuộc vào notes.rewrite. và các cài đặt notes.rewriteRef.

Về cơ bản, Git phải có sự cho phép của bạn để chuyển các ghi chú từ cam kết ban đầu sang các ghi chú mới mà bạn đang viết lại. Bạn cũng có thể thấy chủ đề Stackoverflow này cho một lời giải thích dài hơn:

Is there a way to automatically merge notes if commits for those notes get squashed?

Các vấn đề liên quan