我一直不一致地使用Git跟踪我的应用程序中的更改,而是使用.zip存档每个发布版本的代码。
现在我实际上正在接受Git,我希望将所有这些旧历史记录放入一个简洁明了的简单Git历史存档中,以便轻松回滚到旧版本以进行测试和历史目的。
如何才能最轻松地获取一系列.zip文件并将其添加到当前项目的过去历史记录中?
我已经看到了如何执行此操作的一些描述 - 但它需要先按顺序查找和排序所有版本,然后一次提交一个空白存档。如果我这样做并记录版本1.0和3.0,并且稍后才找到2.0的代码 - 我怎么能在以后将2.0插入历史而不影响1.0或3.0?
谢谢!
PS:Git档案不与其他任何人共享。完全不关心搞乱其他人的共同历史。
答案 0 :(得分: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
您可以执行interactive rebase,它允许您(除其他外)重新提交订单。因此,为了在以后添加旧版本,您可以:
git rebase -i
答案 1 :(得分: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作为其父级。
答案 2 :(得分:0)
如果您可以对某些工作进行排序,只需在某个分支(可能是您的主分支)中逐个提交它们。
如果您无法轻松对其进行排序,您可以创建与zip文件一样多的分支,并将旧树分别提交到每个分支。你甚至不需要维护很多分支(这可能很无聊) - 你可以简单地标记它们并删除分支指针。只要通过分支或标记可以访问提交,它就可以在不丢失提交的情况下工作。
当然,第二种方法有点乱,但仍然比保留zip文件更好。