Naposledy aktivní 1773734298

doracoin's Avatar doracoin revidoval tento gist 1773734298. Přejít na revizi

1 file changed, 51 insertions

Readme.md(vytvořil soubor)

@@ -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's Avatar doracoin revidoval tento gist 1773732784. Přejít na revizi

1 file changed, 10 insertions

callback.py(vytvořil soubor)

@@ -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
Novější Starší