【问题标题】:Can I delete my local .git repo?我可以删除我的本地 .git 存储库吗?
【发布时间】:2012-06-29 09:50:59
【问题描述】:

我的 heroku repo 增长到 1.5gb,所以 heroku 支持的好人清除了远程 heroku repo 并建议我推送一个新副本。

但是,du -h .git 在本地的结果显示 .git 为 276m。而且,可以预见的是,当我尝试将 master 推送到它时,heroku 会引发错误。

所以,我的问题是:我可以删除我的本地 .git 文件夹,执行 git init 并推送到 heroku 吗?那具体有什么作用呢?

我的应用程序代码被推送到 github - 我通常的工作流程是:

git add .
git commit -m "message"
git push #to github
git push heroku master

【问题讨论】:

标签: ruby-on-rails git heroku


【解决方案1】:

可能的问题

您的存储库可能比预期的大有两个可能的原因。

  1. 您的存储库中有很多二进制资产。
  2. 您有大量的提交历史记录。

可能的解决方案

如果其中任何一个是原因,您有几个选择。请考虑以下内容。

  1. 如果您的问题是二进制资产,请将您的资产移动到外部资产存储(例如 Amazon S3 或远程文件系统)。然后,您可以使用 git-filter-branch 后跟 git-gc 从历史记录中删除它们。这将大大缩减您的存储库。

  2. 如果您的问题是一个非常大的历史,请单独创建一个 shallow clone 以推送到 Heroku。例如:

    git clone --depth 1 my_repo heroku_repo
    

【讨论】:

  • 第二个是最好的解决方案。我喜欢它。
  • 抱歉这么久才回复。浅层克隆的想法效果很好,但现在我正在推送到我的远程仓库,我得到“致命的:尝试推送到浅层存储库”。您不能推送到或从浅层克隆:stackoverflow.com/questions/6900103/…
【解决方案2】:

嗯,你不能这样做,除非你强制推动(几乎从不推荐)。这将清除您的整个提交历史并创建一个全新的存储库。

但如果你想因为空间而抹去一切……你可以。只是……很奇怪。

如果只推送 master 会发生什么?

【讨论】:

  • 哦,我不想奇怪。我只是希望能够推送此代码...您的意思是 git push master 而不是 git push heroku master
【解决方案3】:

你可能想做一些housekeeping

【讨论】:

  • 你试过 git gc --agressive 吗?
  • 我试过了 - 让它过夜,但它无法完成任务并超时。
  • 再次尝试 git gc --agressive ,这就是你需要做的。
  • 尝试所有这些 git-prune git-gc --aggressive git-repack git-repack -a git-prune-packed
【解决方案4】:

做赞成的答案,但请记住,您不能推送浅层克隆。这是后续行动:Pushing to github after a shallow clone

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-09
    • 2018-03-03
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 2019-05-27
    • 2011-05-06
    相关资源
    最近更新 更多