Tôi đã làm việc trên kho lưu trữ git một lúc và thực hiện một số cam kết. Tôi đã sử dụng khối tài liệu trong file php của tôi, bao gồm địa chỉ email cá nhân của tôi, như thế này:Thay đổi địa chỉ email trong lịch sử Git
/**
* Bla bla bla.
*
* @author: Nic <[email protected]>
*/
Bây giờ tôi đã tạo ra một địa chỉ email mới và cập nhật các khối tài liệu, thay thế cho địa chỉ cũ bằng cái mới. Nhưng thay đổi này chỉ áp dụng cho các cam kết sau khi thay đổi tài liệu.
Làm cách nào để xóa hoàn toàn địa chỉ email cũ khỏi lịch sử của git và thay thế tất cả các trường hợp bằng địa chỉ mới?
Tôi đã thử sử dụng git filter-branch sử dụng this blog post nhưng không thành công. Tôi nhận được kết quả sau:
git filter-branch --tree-filter 'git ls-files -z "*.php" |xargs -0 perl -p -i -e "s#[email protected]#[email protected]#g"' -- --all
Usage: git core\git-filter-branch [--env-filter <command>] [--tree-filter <command>]
[--index-filter <command>] [--parent-filter <command>]
[--msg-filter <command>] [--commit-filter <command>]
[--tag-name-filter <command>] [--subdirectory-filter <directory>]
[--original <namespace>] [-d <directory>] [-f | --force]
[<rev-list options>...]
Có thể là ký tự đặc biệt của địa chỉ email (@ và.) Đang làm rối loạn cụm từ thông dụng? Khác hơn là tôi không có ý tưởng gì đang xảy ra, bất kỳ trợ giúp được đánh giá cao!
Điều đó sẽ chỉ thay đổi tác giả của các cam kết, câu hỏi đang tìm cách thay đổi địa chỉ email trong nội dung tệp. – qqx
Tôi đã tìm thấy rằng một nhưng như qqx cho biết nó thay đổi địa chỉ thư của cam kết, không phải là khối tài liệu bên trong tập tin. –
Điều này làm việc tốt cho tôi với "=" thay vì "==". –