我在GitHub上有一个repo,有很多问题。我想用一个新的代码库替换掉那个回购库的所有代码库,但我想保留所有以前的信息。
在不弄乱代码或GitHub的情况下,最好的方法是什么?
-
cd
到"new"repository -
git remote add origin git@github.com:myusername/myrepository
(取代myusername
&相应地myrepository
) -
git push --force origin master
- 可能会删除其他远程分支并推送新的。
这将强制用本地存储库中的所有内容替换远程存储库中的所有内容。要小心,没有回头路。
由于git push --force origin master
不保留旧项目的代码提交,我认为这个问题需要另一个答案。我已经为一个Android Studio项目做了一个答案,但是完全使用Git并没有太大的不同。
我将调用GitHub上的旧项目,您想要替换MyProject
。
备份您的新项目
重命名当前项目(或将其复制到新位置并删除具有原始项目名称的文件夹)。我们将把旧的项目版本从GitHub克隆到这个位置。
从GitHub克隆旧项目
进入项目所在目录并运行
git clone https://github.com/username/repo.git
将username
替换为您的GitHub用户名,repo
替换为您的存储库名称。
删除所有旧文件
你可以试试
git rm -r *
但如果这不起作用(因为它不适合我),然后用rm
或文件管理器手动删除它们。但是,不删除 .git
文件夹和.gitignore
。
如果你手动删除它们,你需要更新git。
git add -u
git commit -m "deleting old files before adding updated project"
添加新文件
从新项目中复制之前备份的所有文件。现在让git知道你想把它们添加到仓库中。
git add .
git commit -m "new updated project"
将更改推送到GitHub
git push
现在你的新项目将在GitHub中,但旧项目的提交历史记录仍然可用
我用下面描述的方法解决了类似的问题。
假设:
- "旧项目"是在GitHub repo
- "new project"在本地创建
的期望:
- 新项目必须推送到github上的旧仓库
- 旧的提交历史必须保留并在github 中可见
解决方案:
1)进入本地机器的"old project"文件夹
2)找到隐藏的"。然后复制它
3)进入你机器上的新项目文件夹
4)检查是否有一个。git文件夹(它是隐藏的,所以你需要显示隐藏文件)-如果有一个。git文件夹,重命名它,你可以删除它,但如果一切按计划进行,最好现在重命名并删除它-如果没有。git文件夹,转到下面的第5点。5)粘贴之前复制的。git文件夹(从旧项目)并粘贴到"新项目"文件夹
现在新项目有了一个.git文件夹,里面有以前所有的修改和历史记录,包括对GitHub上旧版本的URL的引用。
6)如果你正在使用例如VS,你可以检查代码中的变化。会有很多,或者到终点站检查。您可以检查旧文件是否已删除,新文件是否已添加。
7)推动实际新项目。这个新项目将被推送到你在GitHub上的旧仓库。在网上检查你的git仓库,以确保一切顺利。
8)现在你可以从本地机器中删除旧的项目,并删除这个重命名的新git隐藏文件夹(它在第4点被重命名)。
现在你可以开发你的新项目,保留所有旧的历史。
希望能有所帮助。
将旧的.git
文件夹复制到新文件夹中。然后像往常一样执行push流程(git add, commit, push)