如何使用Git跨多个版本迁移代码?

如何使用Git跨多个版本迁移代码?,git,github,bitbucket,Git,Github,Bitbucket,由于缺乏相关知识,我没有使用任何版本控制,但我刚刚开始使用Git 所以我知道了git add{filename}、git commit-u{filename}、git push origin master的基本命令 作为一种方式 为了跟踪Git之前的更改,我制作了我处理的每个文件的多个副本,例如原始文件可能有 如果命名为abc.php,第一个更改可能命名为abc_20130101.php,第二个更改可能命名为abc_20130102.php, 等等 鉴于这些都是在一段时间内发生的更改,并且我有多

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

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

鉴于这些都是在一段时间内发生的更改,并且我有多个文件,那么解决这些更改的最佳方法是什么 将这些迁移到托管服务,如GitHub、BitBucket等

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

如果您想让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
最后,您将得到一系列表示项目开发的提交。这可能需要做大量的工作,具体取决于最终的修订数量

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


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

David Culp的答案很好,我打字速度稍慢。无论如何,我会把我的留在这里

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

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

  • 将您最早的abc.php版本复制到存储库中,确保它的名称为abc.php(即从文件名中删除日期),并且对于具有相同日期的任何其他文件都是相同的
  • 执行git添加。
  • 执行一个来自2013-01-01的“git提交-m文件”
  • 按时间顺序对每个版本重复此操作
  • 推送到GitHub/BitBucket
请确保最后添加当前版本


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

我的理解是,修订版将从文件开始的那一天起重命名每个文件。例如,如果原始文件名为abc.php,则会首先添加、提交和推送,然后我会将abc_20130101.php重命名为abc.php(这不会覆盖本地pc上的文件)、添加、提交和推送等。这就是你的意思吗?是的,从最旧的开始,并以对项目有意义的块为单位,按顺序提交它们,直到项目只有所有文件中最新的文件。这将为您提供一个存储库,其中包含到目前为止对项目所做更改的提交进度。是的,重命名将覆盖同一文件的早期版本,但由于该文件是作为早期版本提交的,因此如果需要,您可以随时返回该文件。一旦承诺,git不会忘记。谢谢Gavin。我认为,每次重命名文件时,它都会覆盖以前的版本,而在提交和推送时,这并不重要?我不太明白你所说的
Git可以很好地与你电脑上的独立存储库配合使用。
?我之所以想使用像GitHub这样的服务,是为了获得体验,养成版本控制的习惯,并最终在需要时在用户之间共享。是的,您覆盖了以前的版本。当您
git commit
时,它会为您的文件创建一个快照,并且该快照将永久保留。您可以使用像
gitk
这样的图形工具来查看历史记录,包括每个新版本所引入的确切更改。
Git在您的PC上的独立存储库中运行良好。
-我想我是说Git的目的是捕获和共享对文件的更改。如果您自己工作,则不需要共享更改,但捕获部分仍然非常有用。无论你把一个文件搞得多么糟糕,你都可以使用Git回滚到以前的版本,这是一个巨大的信心提升!很抱歉,作为一个n00b,提交和推送可能与项目相关的二进制文件(如图像、文档等)是很常见的。如果不是的话,你是如何处理这些问题的?你正在做最好的事情,从一个n00b的进步-问问题!我肯定会包括运行代码所需的任何二进制文件,比如网站上使用的图像。至于文档,只要对你有用就行。您可以为文档创建单独的存储库,或者使用wiki。我喜欢在我的存储库中只包含代码和必需的文件。