为了账号安全,请及时绑定邮箱和手机立即绑定

使当前提交成为Git存储库中的唯一(初始)提交?

使当前提交成为Git存储库中的唯一(初始)提交?

Git
杨__羊羊 2019-08-05 16:41:05
使当前提交成为Git存储库中的唯一(初始)提交?我目前有一个本地Git存储库,我将其推送到Github存储库。本地存储库有~10个提交,Github存储库是这个的同步副本。我想要做的是从本地Git存储库中删除所有版本历史记录,因此存储库的当前内容显示为唯一的提交(因此存储库中的旧版本文件不会存储)。然后,我想将这些更改推送到Github。我已经调查了Git rebase,但这似乎更适合删除特定版本。另一个可能的解决方案是删除本地仓库,并创建一个新的仓库 - 虽然这可能会创造很多工作!ETA:有一些未跟踪的特定目录/文件 - 如果可能的话,我想保持这些文件的跟踪。
查看完整描述

3 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

这是蛮力的方法。它还会删除存储库的配置。

注意:如果存储库有子模块,这不起作用!如果您正在使用子模块,则应使用例如交互式rebase

第1步:删除所有历史记录(确保您有备份,这不能还原

cat .git/config  # note <github-uri>rm -rf .git

第2步:仅使用当前内容重建Git仓库

git initgit add .git commit -m "Initial commit"

第3步:推送到GitHub。

git remote add origin <github-uri>git push -u --force origin master


查看完整回答
反对 回复 2019-08-05
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

唯一适合我的解决方案(并保持子模块正常工作)是


git checkout --orphan newBranch

git add -A  # Add all files and commit them

git commit

git branch -D master  # Deletes the master branch

git branch -m master  # Rename the current branch to master

git push -f origin master  # Force push master branch to github

git gc --aggressive --prune=all     # remove the old files

.git/当我有子模块时,删除总是会导致很大的问题。使用git rebase --root会以某种方式导致我的冲突(并且需要很长时间,因为我有很多历史)。


查看完整回答
反对 回复 2019-08-05
  • 3 回答
  • 0 关注
  • 606 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信