如何推送到一个新的GitHub repo而不包含历史记录?

vs3odd8k  于 2023-02-14  发布在  Git
关注(0)|答案(3)|浏览(215)

我在本地开发一个项目已经有一段时间了,现在终于想把它上传到GitHub上分享了,不过这个项目的早期版本包含了硬编码的数据库密码,我不想把它放在GitHub上。
我有没有办法把一个“浅”版本的repo --只有现在的文件,没有历史记录--推送到GitHub?类似git clone --depth 1的东西会很好,除了看起来你不能把克隆从本地主机“推”到GitHub,而且GitHub似乎没有一个接口让我以正常的方式“拉克隆”。
我花了几个小时在网上搜索“git push to github without history”,“git push to github as shallow clone”,“git push clone to github”等等,但没有找到任何与我的问题相关的东西。GitHub docs警告不要提交密码和其他东西,但他们给予的唯一建议是删除文件,而不是历史。类似地,我能找到的关于Stack Overflow的最接近的问题是this question,它的答案也集中在删除文件上。我想保留这些文件,我只想删除它们曾经包含硬编码密码的历史记录。
理想情况下,我可以将项目从localhost“浅推送”到GitHub,丢失以前的历史记录,但跟踪从那一点开始的历史记录。

0s7z1bwu

0s7z1bwu1#

你可以做的一件事就是把目录复制到一个新的文件夹中,并删除.git目录,然后你就可以像初始化仓库一样初始化它了:

git init
git add .
git commit -m "Genesis."
git remote add origin <remote repository URL>
git push -u origin master

这样,如果您发现需要查找某些内容,就可以将历史记录保存在另一个目录中。

vxf3dgd4

vxf3dgd42#

没有所谓的“浅推送”。有浅克隆,你可以创建一个浅克隆,然后推送到它,但是你不能让GitHub自己托管一个浅克隆。如果你能让GitHub托管一个浅克隆,看起来你可以用这种方式做你想做的事情:我在自己的服务器上做了一个,做了几个简单的实验,看起来很有效(但我不是很彻底)。
我还测试了从一个浅克隆推送到一个新的空GitHub仓库的操作,但被拒绝了:

! [remote rejected] master -> master (shallow update not allowed)

因此,如果你想使用GitHub,你必须创建一个新的(独立的)仓库,这个新仓库与你现有的仓库不兼容。

yvt65v4c

yvt65v4c3#

为了补充@codenamev的答案,这对我很有效

  • 克隆存储库,重命名它
  • 在GitHub中创建新的空存储库,然后在克隆的存储库中运行:
git init 
  git add . 
  git commit -m "create new template" 
  git remote set-url origin git@github.com:<your organisation/repo>.git 
  git push -u origin main <or other branch>

在GitHub中,转到“设置”并将新上推分支设置为默认分支

相关问题