doracoin ревизій цього gist . До ревизії
1 file changed, 51 insertions
Readme.md(файл створено)
| @@ -0,0 +1,51 @@ | |||
| 1 | + | 首先修改`callback.py`的邮箱和名称信息,然后将它放到需要修改Git记录的项目文件夹根目录下 | |
| 2 | + | ||
| 3 | + | 执行: | |
| 4 | + | ||
| 5 | + | ```sh | |
| 6 | + | git-filter-repo --commit-callback callback.py | |
| 7 | + | ``` | |
| 8 | + | ||
| 9 | + | 可能会提示报错: | |
| 10 | + | ||
| 11 | + | ``` | |
| 12 | + | Aborting: Refusing to destructively overwrite repo history since | |
| 13 | + | this does not look like a fresh clone. | |
| 14 | + | (expected freshly packed repo) | |
| 15 | + | Please operate on a fresh clone instead. If you want to proceed | |
| 16 | + | anyway, use --force. | |
| 17 | + | ``` | |
| 18 | + | ||
| 19 | + | **为什么会出现这个错误**? | |
| 20 | + | ||
| 21 | + | git-filter-repo 会检查当前仓库的状态,如果它检测到: | |
| 22 | + | ||
| 23 | + | - 存在远程跟踪分支(比如 origin/main); | |
| 24 | + | - 有未推送的提交; | |
| 25 | + | - 或者仓库不是刚克隆下来且打包过的状态; | |
| 26 | + | ||
| 27 | + | 它就会认为这是一个“非安全”环境,因此拒绝执行,防止你意外丢失数据。 | |
| 28 | + | ||
| 29 | + | 如果你确定你的本地提交都已经推送到远端,确定不会丢失任何改动后,可以在原命令的基础上加上 `--force`: | |
| 30 | + | ||
| 31 | + | ```sh | |
| 32 | + | git-filter-repo --commit-callback callback.py --force | |
| 33 | + | ``` | |
| 34 | + | ||
| 35 | + | 成功执行的话,可能会看到如下信息: | |
| 36 | + | ||
| 37 | + | ``` | |
| 38 | + | Parsed 21 commits | |
| 39 | + | New history written in 1.59 seconds; now repacking/cleaning... | |
| 40 | + | Repacking your repo and cleaning out old unneeded objects | |
| 41 | + | HEAD is now at 9161924 更新API链接域名 | |
| 42 | + | Enumerating objects: 1190, done. | |
| 43 | + | Counting objects: 100% (1190/1190), done. | |
| 44 | + | Delta compression using up to 12 threads | |
| 45 | + | Compressing objects: 100% (849/849), done. | |
| 46 | + | Writing objects: 100% (1190/1190), done. | |
| 47 | + | Total 1190 (delta 181), reused 1152 (delta 173), pack-reused 0 (from 0) | |
| 48 | + | Completely finished after 2.47 seconds. | |
| 49 | + | ``` | |
| 50 | + | ||
| 51 | + | 接下来再强制推送到远端就可以更新原来的Git提交历史了 | |
doracoin ревизій цього gist . До ревизії
1 file changed, 10 insertions
callback.py(файл створено)
| @@ -0,0 +1,10 @@ | |||
| 1 | + | old_email = b"[email protected]" | |
| 2 | + | new_email = b"[email protected]" | |
| 3 | + | new_name = "newname" | |
| 4 | + | ||
| 5 | + | if commit.author_email == old_email: | |
| 6 | + | commit.author_name = new_name.encode("utf-8") | |
| 7 | + | commit.author_email = new_email | |
| 8 | + | if commit.committer_email == old_email: | |
| 9 | + | commit.committer_name = new_name.encode("utf-8") | |
| 10 | + | commit.committer_email = new_email | |