替换GitHub仓库,同时保留问题,维基等

时间:2011-12-11 02:29:40

标签: git github

我在GitHub上有一个回购,那里有很多问题。我想用一个新代码替换该repo的整个代码库,但我想保留所有以前的信息。

在不搞乱代码和GitHub的情况下,最好的方法是什么?

3 个答案:

答案 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克隆到此位置。)

从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中,但旧项目的提交历史仍然可用。

答案 2 :(得分:1)

我以下面所述的方式解决了类似的问题。

假设:

  • “旧项目”在GitHub存储库上
  • “新项目”是在您的计算机上本地创建的。

期望:

  • 必须将新项目推送到github上的旧仓库中
  • 旧提交历史必须保留并在github中可见

解决方案:

1)转到本地计算机上的“旧项目”文件夹

2)在此处找到隐藏的“ .git”文件夹并复制

3)转到计算机上的新项目文件夹

4)检查是否存在.git文件夹(该文件夹已隐藏,因此您需要显示隐藏的文件)  -如果有一个.git文件夹重命名,则可以将其删除,但最好立即重命名,如果一切都按计划进行,则删除  -如果没有.git文件夹,请转到下面的第5点。 5)粘贴先前复制的.git文件夹(来自旧项目),并将其粘贴到“新项目”文件夹中

现在,新项目有一个.git文件夹,其中包含以前的所有更改和历史记录,并包括对GitHub上旧仓库的URL的引用。

6)如果使用的是VS,则可以检查代码中的更改。会有很多,或者在终端中检查它们。您可以检查是否已删除旧文件并添加了新文件。

7)推送实际的新项目。这个新项目将被推送到GitHub上的旧仓库中。 在网上检查您的git repo,以确保一切顺利。

8)现在,您可以从本地计算机上删除旧项目,并删除此重命名的新git隐藏文件夹(在第4点中已重命名)。

现在,您可以开发新项目,并保留所有旧历史。

希望有帮助。