2013-02-03 186 views
3

我有一个iOS项目设置在github上,过去几天我开始意识到我需要重构我的大部分代码。我构建的项目没有遵守MVC的许多基础知识,现在想回去修复一切。Github,推新项目代替旧项目

主要问题是该项目足够大,重构将是一个巨大的痛苦。 有无论如何,我可以开始一个新的项目,建立它到当前位置的地方(显然有一些主要的设计更改),并把它推到github到相同的分支,而不是原来的项目?如果这不清楚,请让我知道。

+0

您是否希望保留旧存储库的历史记录,并仅仅(基本上)替换其当前内容? – KevinH

+0

是的,基本上就像我做了一个重大的重构,但实际上只是重新启动。 – Firo

回答

8

考虑到您希望保留旧的历史记录,我会扩展给定的答案。在这种情况下,您不想开始新的回购;你只是想“处理”旧数据,清除旧数据并添加新数据。您可以通过以下步骤完成此操作:

  1. cd进入项目目录的根目录。
  2. 删除您不希望从文件系统中获得的所有内容。注意离开.git /文件夹。这是您的存储库以前的历史记录。
  3. 添加你想要的任何新东西(新的Xcode项目,目录结构等)。
  4. 当你准备好提交时,git status会显示你相当混乱(其大小取决于你曾经有多少文件)删除和添加。没关系,这是你对所有这些条目进行广泛刷新的地方,与git add --all .。这将在您的回购,删除,新增加,所有这一切中进行处理。
  5. git commit -m "My new beginning"
  6. git push origin myBranch --force

瞧!您的存储库已完全制作完成,并保留了以前的历史记录。

+0

谢谢,我认为这就是我需要知道的一切! – Firo

0

您可以在GitHub上,在你的.git/config中创建一个新项目,将URL更改为新的回购

[remote "origin"] 
    fetch = +refs/heads/*:refs/remotes/origin/* 
    url = [email protected]:[yourname]/[yournewrepo] 
2

可以。只需创建您的新项目,并将以下命令输入命令行界面(Windows中的cmd,linux中的终端)。

cd /path/to/project 
git remote add origin [email protected]:username/repo.git 
git push origin master --force 

这应该做到这一点。

+0

所以只是为了验证之前,我经历了这一点。这将保留我当前的所有git信息(包括提交),只需全面推送新项目来代替当前的主服务器? – Firo

+1

作为警告,这会在GitHub仓库中抹去历史记录。 –

+0

对不起,我很早就错过了这个问题。是的,它会清除GitHub上的历史记录,但是如果您将旧的.git文件夹(如接受的答案记录)复制到此新文件夹中,则可以保留您的历史记录。 – Demortes

0

我发现最简单的方法是将.git文件/文件夹复制到新项目中。