Git“强制推送”从新的本地存储库到远程,但保留远程提交历史

75t*_*one 5 git version-control git-push

我有一个可以运行的实时网站,我确信它拥有每个文件的最新、正确版本,它不是用 Git 管理的。我还有一个 Bitbucket Git 存储库,表面上是用于该站点的,但其中存在重大问题和过时的内容。

我想做的git init是实时文件,然后以某种方式将它们推送到远程,以便最终的远程 HEAD 状态与我的实时文件的状态完全相同,而且远程提交历史记录保持不变。

我想这样做,以便实时工作树永远不会处于不同的状态。我想过创建一个新分支,远程拉动 master,然后强制合并它们或其他什么,但据我所知,我将不得不检查 master 分支并在那些短暂的时刻弄乱实时文件在合并之前和合并期间,假设一切正常。

我还想过通过 FTP 传输文件,在本地计算机上解决所有冲突/合并,然后从那里推送到 Bitbucket 并下拉到实时存储库。但这也让人感觉不可靠和冒险。

我知道我永远不应该像这样操作实时代码,但这是我陷入的情况,我只想以最简单/最安全的方式使其工作。

(我确定这是一个重复的问题,但我的 Google-fu 没有让我失望;在引导我查看以前的答案时请保持温和。)

Sim*_*ias 0

如果您确定在线文件是最新的并且存储库上的文件遵循相同的历史记录,则应该检查当前的 Git 历史记录。只需将 FTP 的内容复制粘贴到这些文件上即可。

然后,您将获得来自 FTP 的最新版本,在线所做的更改将应用​​到当前的 Git 历史记录之上。

但可以肯定的是,如果您不确定两个代码库是否存在分歧,那么这是“有风险的”过程。但您不能对此采取任何措施,因为如果没有在线文件​​历史记录,您就无法进行三向合并(只有两种方式)。

所以,从那里开始。我会逐行检查差异以确保。如果您对历史是否有分歧存有疑问,那么确实没有办法绕过该手动任务。