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

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

我目前有一个本地Git存储库,我将其推送到Github存储库。

本地存储库有~10个提交,Github存储库是这个的同步副本。

我想要做的是从本地Git存储库中删除所有版本历史记录,因此存储库的当前内容显示为唯一的提交(因此存储库中的旧版本文件不会存储)。

然后,我想将这些更改推送到Github。

我已经调查了Git rebase,但这似乎更适合删除特定版本。另一个可能的解决方案是删除本地仓库,并创建一个新的仓库 - 虽然这可能会创造很多工作!

ETA:有一些未跟踪的特定目录/文件 - 如果可能的话,我想保持这些文件的跟踪。


杨__羊羊
浏览 607回答 3
3回答

阿晨1998

这是蛮力的方法。它还会删除存储库的配置。注意:如果存储库有子模块,这不起作用!如果您正在使用子模块,则应使用例如交互式rebase第1步:删除所有历史记录(确保您有备份,这不能还原)cat&nbsp;.git/config&nbsp;&nbsp;#&nbsp;note&nbsp;<github-uri>rm&nbsp;-rf&nbsp;.git第2步:仅使用当前内容重建Git仓库git&nbsp;initgit&nbsp;add&nbsp;.git&nbsp;commit&nbsp;-m&nbsp;"Initial&nbsp;commit"第3步:推送到GitHub。git&nbsp;remote&nbsp;add&nbsp;origin&nbsp;<github-uri>git&nbsp;push&nbsp;-u&nbsp;--force&nbsp;origin&nbsp;master

鸿蒙传说

唯一适合我的解决方案(并保持子模块正常工作)是git checkout --orphan newBranchgit add -A&nbsp; # Add all files and commit themgit commitgit branch -D master&nbsp; # Deletes the master branchgit branch -m master&nbsp; # Rename the current branch to mastergit push -f origin master&nbsp; # Force push master branch to githubgit gc --aggressive --prune=all&nbsp; &nbsp; &nbsp;# remove the old files.git/当我有子模块时,删除总是会导致很大的问题。使用git rebase --root会以某种方式导致我的冲突(并且需要很长时间,因为我有很多历史)。
打开App,查看更多内容
随时随地看视频慕课网APP