我使用已使用的The BFG并按照所述的使用步骤清除了我的repo的大文件历史记录。所以我现在有一个干净的裸仓,准备被推回GitHub。
生产目录是该仓库的克隆。
由于HEAD受到保护,这是否意味着原则上,在推送到GitHub之后,我将能够进入现有的prod克隆并获得"已经是最新的"消息,如果有必要的话,我可以将那个prod repo推回干净地回到GitHub?
或者,如果我制作热门制作模式以推升回购,我会遇到麻烦吗? (这是一个非常古老的项目,其中包含许多不良做法。我已经让没有git技能的开发人员直接在prod工作。)
答案 0 :(得分:3)
好的,要了解您的设置,您的存储库有3个副本:
您已准备好将已清理的本地历史记录推送到 GitHub ,但您想知道对生产<需要采取的最小措施是什么/ strong>即可。我假设你开始之前本地, GitHub 和制作都是同步的。
HEAD提交的BFG does protect the 'contents'(特别是文件树),但这并不意味着该提交的历史记录。虽然它保证该提交中的文件不会发生变化,但BFG 有来更改历史记录以便完成它的工作。因为Git小心翼翼地将历史视为(通常)不可更改,所以您不能只将这些更改git pull
正常地转移到生产副本中 - Git会注意到不同的历史记录,然后被拒绝。您试图摆脱的所有垃圾也将被保留,如果您不小心,可能会将其推回GitHub。
而是获取更改,告诉Git明确强制每个本地分支历史记录到新的,已清理的版本:
$ git fetch origin *:* -f --update-head-ok
(--update-head-ok
标志是为了避免Refusing to fetch into current branch
错误)
之后,您应该可以获取任何新的历史记录,甚至可以将热门的生产模式推送回GitHub,如果需要的话。