【问题标题】:How do I migrate multiple versions of code across using Git?如何使用 Git 迁移多个版本的代码?
【发布时间】:2013-01-15 22:09:31
【问题描述】:

由于缺乏相关知识,我没有使用任何类型的版本控制,但刚开始使用 Git 所以我知道git add {filename}, git commit -u {filename}, git push origin master的基本命令。

作为一种方式 为了在 Git 之前跟踪更改,我为我处理的每个文件制作了多个副本,例如原始文件可能有 被命名为abc.php,第一个改的本来可以命名为abc_20130101.php,第二个改,abc_20130102.php, 等等。

看到这些是一段时间内的变化,而且我有多个文件,最好的方法是什么 将这些迁移到托管服务,例如 GitHub、BitBucket 等。

我是否创建单个存储库并克隆存储库?那么我想避免将文件提交为 一个单一的推动,因为他们实际上是不同的版本?最好的方法是什么?我该怎么做?

【问题讨论】:

    标签: git github bitbucket


    【解决方案1】:

    David Culp 的回答很棒,而且我打字速度有点慢。无论如何,我会把我的留在这儿。

    我的建议是保留旧文件的原样,并将它们保存为存档。从今天开始使用 Git,让它跟踪文件的新更改。

    如果您真的想将您的开发历史记录到 Git 中,我会使用全新的存储库执行以下操作:

    • 将您最旧版本的 abc.php 复制到存储库中,确保将其命名为 abc.php(即从文件名中删除日期),并且对于具有相同日期的任何其他文件也如此。
    • 做一个git add .
    • 做一个git commit -m "Files from 2013-01-01"
    • 按时间顺序重复每个版本
    • 推送到 GitHub/BitBucket

    请务必最后添加当前版本。

    注意:如果您自己工作,则不需要 GitHub / BitBucket 等在线服务。 Git 可以很好地与您 PC 上的独立存储库配合使用。

    【讨论】:

    • 谢谢加文。我认为每次重命名文件时,它都会覆盖以前的版本,这在我提交和推送时无关紧要?我不太理解Git works fine with standalone repositories on your PC. 的意思?我想使用像 GitHub 这样的服务的原因是为了获得经验,养成版本控制的习惯,并最终在需要时在用户之间共享。
    • 是的,你覆盖了以前的版本。当您git commit 时,它会为您的文件拍摄快照,并且此快照会永久保留。您可以使用gitk 之类的图形工具查看历史记录,包括每个新版本引入的确切更改。
    • Git works fine with standalone repositories on your PC. - 我想我是说 Git 的目的是捕获和共享对文件的更改。如果您自己工作,则不需要共享更改,但捕获部分仍然非常有用。知道无论你把文件搞得多么糟糕,你都可以使用 Git 回滚到以前的版本,这极大地增强了信心!
    • 很抱歉,您是这样一个 n00b,但提交和推送可能与项目相关的图像、文档等二进制文件是很常见的。如果不是,你如何处理这些?
    • 你正在做最好的事情来从 n00b 进步 - 提问!我肯定会包含运行代码所需的任何二进制文件,例如网站上使用的图像。至于文档,它对你有用。您可以为文档创建单独的存储库,或使用 wiki。我喜欢在我的存储库中只包含代码和必需的文件。
    【解决方案2】:

    如果您希望 git 存储库反映项目的历史,则需要付出一些努力。

    基本步骤是获取所有具有日期的文件(存档文件)的列表。使用它来创建“修订”列表,然后执行以下操作:

    for each revision
        recreate the project as it was in that state (renaming files so they don't have dates)
        copy the files to the repository
        add files to index
        commit files to repository
    

    最后,您会得到一系列代表项目开发的提交。这可能需要大量工作,具体取决于您最终进行了多少次修订。

    您可以编写大部分工作的脚本,但最终可能更容易手动完成。

    但是,这将导致存储库在文件更改的每个日期都有提交。通过组合与单个项目功能相关的“修订”,可以减少提交的数量。

    【讨论】:

    • 只是为了让我理解,修订是从开始的那一天开始重命名每个文件。例如,如果原始文件名为 abc.php,这将首先添加,提交并推送,然后我会将 abc_20130101.php 重命名为 abc.php(这不会覆盖我本地 pc 上的文件),添加它,提交和推送等。是你的意思吗?
    • 是的,从最旧的开始,在对项目有意义的块中,按顺序提交它们,直到项目只有所有文件中的最新文件。这将为您提供一个存储库,其中包含迄今为止对项目更改的提交进度。
    • 是的,重命名将覆盖同一文件的早期版本,但由于它是作为早期版本提交的,因此您可以随时返回它。一旦提交,git就不会忘记了。
    猜你喜欢
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 2020-01-17
    • 2019-09-30
    • 2022-11-10
    • 2013-02-25
    • 2020-03-25
    相关资源
    最近更新 更多