我在GitHub上有一个回购,那里有很多问题。我想用一个新代码替换该repo的整个代码库,但我想保留所有以前的信息。
在不搞乱代码和GitHub的情况下,最好的方法是什么?
答案 0 :(得分:16)
cd
进入“新”存储库git remote add origin git@github.com:myusername/myrepository
(相应地替换myusername
& myrepository
)git push --force origin master
这将使用您在本地拥有的内容强制替换远程存储库中的所有内容。要非常小心,没有回头路。
答案 1 :(得分:8)
由于git push --force origin master
不保留旧项目的代码提交,我认为这个问题需要另一个答案。我已经为Android Studio项目制作了answer,但是仅使用Git并没有什么不同。
我将在GitHub上调用您想要替换MyProject
的旧项目。
重命名当前项目(或将其复制到新位置并删除包含原始项目名称的文件夹。我们将旧项目版本从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"
git push
现在你的新项目将在GitHub中,但旧项目的提交历史仍然可用。
答案 2 :(得分:1)
我以下面所述的方式解决了类似的问题。
假设:
期望:
解决方案:
1)转到本地计算机上的“旧项目”文件夹
2)在此处找到隐藏的“ .git”文件夹并复制
3)转到计算机上的新项目文件夹
4)检查是否存在.git文件夹(该文件夹已隐藏,因此您需要显示隐藏的文件) -如果有一个.git文件夹重命名,则可以将其删除,但最好立即重命名,如果一切都按计划进行,则删除 -如果没有.git文件夹,请转到下面的第5点。 5)粘贴先前复制的.git文件夹(来自旧项目),并将其粘贴到“新项目”文件夹中
现在,新项目有一个.git文件夹,其中包含以前的所有更改和历史记录,并包括对GitHub上旧仓库的URL的引用。
6)如果使用的是VS,则可以检查代码中的更改。会有很多,或者在终端中检查它们。您可以检查是否已删除旧文件并添加了新文件。
7)推送实际的新项目。这个新项目将被推送到GitHub上的旧仓库中。 在网上检查您的git repo,以确保一切顺利。
8)现在,您可以从本地计算机上删除旧项目,并删除此重命名的新git隐藏文件夹(在第4点中已重命名)。
现在,您可以开发新项目,并保留所有旧历史。
希望有帮助。