【问题标题】:Github, push a new project in place of an old oneGithub,用新项目代替旧项目
【发布时间】:2013-02-03 02:46:35
【问题描述】:

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

主要问题是项目足够大,重构将是一个巨大的痛苦。 我是否可以开始一个新项目,将其构建到当前项目所在的位置(显然有一些重大的设计更改)并将其推送到 github 到同一个分支而不是原始项目? 如果不清楚,请告诉我。

【问题讨论】:

  • 您是否希望保留旧存储库的历史记录,并且只是(基本上)替换其当前内容?
  • 是的,基本上就像我进行了重大重构,但实际上只是重新启动。

标签: git github git-push


【解决方案1】:

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

  1. cd 进入项目目录的根目录。
  2. 从文件系统中删除您不想要的所有内容。小心离开 .git/ 文件夹。这是您的代码库以前的历史记录。
  3. 添加您想要的任何新内容(新的 Xcode 项目、目录结构等)。
  4. 当您准备好提交时,git status 将向您展示大量的删除和添加内容(其大小取决于您曾经拥有的文件数量)。没关系,您可以在此处使用git add --all . 对所有这些条目进行广泛的梳理。这将暂存您的 repo 中的所有内容,包括删除、新增内容等等。
  5. git commit -m "My new beginning"。
  6. git push origin myBranch --force

瞧!您的存储库已完全改建,另外还保留了您以前的历史记录。

【讨论】:

  • 谢谢,我想这就是我需要知道的一切!
【解决方案2】:

你可以。只需创建新项目并在命令行界面(Windows 中的 cmd,Linux 中的终端)中键入以下命令。

cd /path/to/project
git remote add origin git@github.com:username/repo.git
git push origin master --force

应该可以的。

【讨论】:

  • 所以只是在我进行此操作之前进行验证。这将保留我当前的所有 git 信息(包括提交),并完全推送新项目来代替当前的 master?
  • 作为警告,这将清除您在 GitHub 存储库上的历史记录。
  • 对不起,我之前错过了这个问题。是的,它会擦除​​ GitHub 上的历史记录,但是如果您将旧的 .git 文件夹(正如接受的答案所指出的那样)复制到这个新文件夹中,那么您可以保留您的历史记录。
【解决方案3】:

您可以在 GitHub 和 .git/config 中创建一个新项目,将 url 更改为新的 repo

[remote "origin"]
   fetch = +refs/heads/*:refs/remotes/origin/*
   url = git@github.com:[yourname]/[yournewrepo]

【讨论】:

    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

      面对类似的问题,我使用了 Stan 的建议(回答于 2014 年 8 月 31 日 5:26)。 下面详细介绍了我为取得积极结果而采取的行动。

      假设:

      • “旧项目”在 GitHub 存储库中
      • “新项目”在您的机器上本地创建

      期望:

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

      解决办法:

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

      2)在那里找到隐藏的“.git”文件夹并复制它

      3) 转到您机器上的新项目文件夹

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

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

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

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

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

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

      希望对你有帮助。

      【讨论】:

        猜你喜欢
        • 2019-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多