我在Github存储库中有一个“存储”的Android。现在,我对应用程序进行了完全重写(从另一个存储库中的新存储开始)-(如何)可以将完整的新存储库推送到现有存储库,但保留其提交历史记录?
我想我不想使用-f标志,因为然后删除了提交。最好的情况是拥有两个存储库的完整历史记录,但是代码仅应来自新存储库。
这是一种暴力方法(假设您正在主分支上工作):
转到旧的原始存储库, 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)
如果不是每个文件都需要替换,您也可以考虑使用我们的/他们的合并策略。