我目前有一个本地Git存储库,我将其推送到Github存储库。
本地存储库有约10个提交,Github存储库是这一点的同步副本。
我想做的是从本地Git存储库中删除所有版本历史记录,这样存储库的当前内容将显示为唯一的提交(因此不会存储存储库中的旧版本文件)。
然后我想将这些更改推送到Github。
我已经研究过Git的rebase,但这似乎更适合删除特定版本。另一个可能的解决方案是删除本地回购,并创建一个新的回购-尽管这可能会产生大量工作!
ETA:有些特定的目录/文件未被跟踪-如果可能的话,我想保持这些文件的未跟踪。
larsmans建议方法的变体:
保存未跟踪文件列表:
git ls-files --others --exclude-standard > /tmp/my_untracked_files
保存git配置:
mv .git/config /tmp/
然后执行larsmans的第一步:
rm -rf .git
git init
git add .
还原配置:
mv /tmp/config .git/
取消跟踪未跟踪的文件:
cat /tmp/my_untracked_files | xargs -0 git rm --cached
然后提交:
git commit -m "Initial commit"
最后推送到您的存储库:
git push -u --force origin master
这是暴力方法。它还删除了存储库的配置。
注意:如果存储库具有子模块,则此操作无效!如果您使用子模块,则应使用例如交互式rebase
步骤1:删除所有历史记录(确保您有备份,这无法恢复)
cat .git/config # save your <github-uri> somewhere
rm -rf .git
步骤2:仅使用当前内容重建Git repo
在步骤2之前,如果您尚未设置init.defaultBranch配置,请通过git-config--globalinit.defaultBranch<branch-name>进行设置。在当前示例中,您可以选择main作为<branchname>
git init
git add .
git commit -m "Initial commit"
第三步:推送到GitHub。
git remote add origin <github-uri>
git push -u --force origin main