用本地存储库替换远程存储库,但保留远程的提交历史记录

swa*_*ner 6 git github

我在Github存储库中有一个“存储”的Android。现在,我对应用程序进行了完全重写(从另一个存储库中的新存储开始)-(如何)可以将完整的新存储库推送到现有存储库,但保留其提交历史记录?

我想我不想使用-f标志,因为然后删除了提交。最好的情况是拥有两个存储库的完整历史记录,但是代码仅应来自新存储库。

Jon*_*ink 5

这是一种暴力方法(假设您正在主分支上工作):

转到旧的原始存储库, rm -Rf 除 .git 目录之外的所有内容。然后:

git add -u
git commit -m "starting over"
Run Code Online (Sandbox Code Playgroud)

然后,在当前存储库中为旧存储库定义一个远程:

git remote add origRepo oldUrl
git fetch origRepo
Run Code Online (Sandbox Code Playgroud)

然后,在当前存储库中创建一个临时分支并推送代码:

git checkout -b tempBranch
git reset --hard origRepo/master
git merge master
git push origRepo tempBranch
Run Code Online (Sandbox Code Playgroud)

然后在原始仓库上:

git fetch
git checkout master
git merge origin/tempBranch
git push origin master
Run Code Online (Sandbox Code Playgroud)

如果不是每个文件都需要替换,您也可以考虑使用我们的/他们的合并策略。