我希望删除所有的提交历史记录,但保留代码在其当前状态,因为我的提交历史记录中有太多未使用的提交。
我该如何做到这一点?
是否有任何git命令可以实现这个目的?
git filter-branch ?
git rebase ?
...
我的代码托管在 github.com 上。
删除 .git
文件夹可能会导致 git 仓库出现问题。如果你想要删除所有提交历史记录,但保持代码的当前状态,可以按照以下步骤操作:
检出
git checkout --orphan latest_branch
添加所有文件
git add -A
提交更改
git commit -am "commit message"
删除分支
git branch -D main
将当前分支重命名为 main
git branch -m main
最后,强制更新你的仓库
git push -f origin main
注意:这将不保留旧的提交历史记录。
git clone https://github.com/blahblah/blahblah
:) - Konstantinosadd -A
?当我使用checkout --orphan
时,所有文件都已经被暂存了;那么使用add -A
难道不会添加本应保持未跟踪状态的文件吗? - unhammer.git
文件夹(注意它是隐藏的)。然后在同一文件夹中初始化一个新的存储库,并将其链接到GitHub存储库:git init
git remote add origin git@github.com:user/repo
现在提交你当前的代码版本
git add *
git commit -am 'message'
最后强制更新到 GitHub:
git push -f origin master
然而,在执行这些步骤之前,我建议备份历史记录(即存储库中的.git
文件夹)!
.git/config
中的上游设置吗?如果是,请先保存您的 .git/config,然后再恢复它。 - Danny Bullis
rm -rf .*git
命令,它将删除任何以 .git 结尾的文件。 2) 返回到父目录并运行git init
命令,它将通过创建一个新的空白 .git 文件而初始化 .git 文件,不包含历史记录。 3) 运行git add .
或git add *
命令。 4) 运行git commit --all -m "initial commit"
命令。 5) 运行git --set-upstream origin <git-url>
命令。 6) 运行$ git push --mirror <git-repository-path>
命令。这个过程将重新编写历史记录。