1

我一直在不一致地使用 Git 来跟踪我的应用程序中的更改,我转而使用每个版本代码的 .zip 存档。

既然我实际上正在拥抱 Git,我想将所有这些旧历史放入一个清晰而简单的 Git 历史存档中,以便轻松回滚到旧版本以进行测试和历史记录。

我怎样才能最轻松地获取一系列 .zip 文件并将它们添加到当前项目的过去历史记录中?

我已经看到了一些关于如何执行此操作的描述 - 但它需要首先按顺序查找和排序所有版本,然后一次提交一个空白存档。如果我这样做并记录版本 1.0 和 3.0,然后才找到 2.0 的代码——我以后如何在不影响 1.0 或 3.0 的情况下将 2.0 插入历史记录?

谢谢!

PS:Git 存档不与其他任何人共享。完全不用担心弄乱其他人的共同历史。

4

3 回答 3

1

你问了两个问题:

  1. 如何将一些 zip 文件转换为 git 历史记录?
  2. 如何将提交插入 git 历史记录?

这些问题的答案如下:

  1. 我写了一个小的 bash 脚本来做这个。它假定您在一个文件夹中有要提交的 zip 文件,并且您需要修改前两个参数以适合您的设置:

    # The path to your git project.
    gitFolder=/myproject
    
    #The path to your zip files.
    ZIP_FILES=/path/to/files/*.zip
    
    for zipFile in $ZIP_FILES
    do
        echo "Wiping previous files"
        rm -rf $gitFolder
        echo "Unziping the file into the $gitFolder folder"
        upzip $zipFile -o -d $gitFolder
        echo "Staging all changes"
        git add --all
        commitMessage="commit for: $zipFile"
        echo "Committing the changes, with the commit message: $commitMessage"
        git commit -m '$commitMessage'
    done
    
  2. 您可以进行交互式 rebase,它允许您(除其他外)重新排序提交。因此,为了在以后添加旧版本,您将:

    1. 将它们添加为新提交。
    2. git rebase -i
    3. 将提交重新排序为正确的顺序。
于 2013-10-04T07:04:15.613 回答
0

如果您可以对您的一些工作进行排序,只需将它们一一提交到某个分支(可能是您的主分支)中。

如果您无法轻松对其进行排序,则可以创建与 zip 文件一样多的分支,并将旧树分别提交到每个分支中。您甚至不必维护许多分支(这可能很无聊) - 您可以简单地标记它们并删除分支指针。只要提交可以通过分支或标签到达,它就可以在不丢失提交的情况下工作。

当然,第二种方法有点混乱,但仍然比保留 zip 文件要好。

于 2013-10-04T07:05:23.777 回答
0

如果您有 1.0 和 3.0 的提交,您将通过签出 1.0、提取 2.0 并提交来创建 2.0 的提交。但是,这将使 3.0 以 1.0 作为其父级。通过设置移植文件可以替换提交,更改其父级:

echo (commit id of 3.0) (commit id of 2.0) >.git/info/grafts

此时,如果您查看当前版本并运行git log,您应该会准确看到您想要查看的历史记录。然后,您可以使用git filter-branch为 3.0(对于更高版本也类似)创建一个新的提交,该提交确实以 2.0 作为其父级。

于 2013-10-04T06:38:39.340 回答