清空Git 分支的全部历史记录。

请务必谨慎操作,因为这会永久删除该分支的历史记录

要清空某个 Git 分支的全部历史(即让该分支变成一个“全新开始”的分支,没有任何提交记录),可以按照以下步骤操作。

方法一:创建一个“孤儿”分支(推荐)

这个方法会创建一个没有父提交的新分支,完全清空历史:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 切换到你要清空的分支(假设分支名为 your-branch)
git checkout your-branch

# 创建一个没有历史的“孤儿”分支(临时名称)
git checkout --orphan temp-branch

# 删除所有文件(保留你想要保留的文件,可选)
git rm -rf .

# (可选)添加新文件或保留部分文件,然后提交
# 例如:echo "# New Start" > README.md; git add README.md

# 提交这个“干净”的初始状态
git commit -m "Initial commit after history purge"

# 强制将原分支指向这个新提交
git branch -M temp-branch your-branch

# 强制推送到远程(如果该分支已推送到远程)
git push origin your-branch --force

方法二:直接重写历史(适用于已有远程分支)

如果你已经有一个远程分支,并希望彻底清空其历史:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 创建本地新分支(无历史)
git checkout --orphan your-branch-clean

# 清空工作区
git rm -rf .

# 添加初始文件(可选)
echo "# Fresh Start" > README.md
git add README.md
git commit -m "Initial commit"

# 强制推送到远程同名分支
git push origin your-branch-clean:your-branch --force-with-lease
# 或直接重命名后推送
git branch -M your-branch
git push origin your-branch --force

注意事项:

–force 或 –force-with-lease 会覆盖远程历史,其他协作者需要重新 clone 或 reset。
此操作不可逆,请确保已备份重要数据。
如果该分支是 main 或 master,请确认团队是否允许重写主分支历史。