我需要为git修订设置一个项目。项目团队保留了当前200多个编号构建中的大约40个的备份快照。将它带入新git仓库的最有效方法是什么?
我的想法很明显:使用最旧的备份来启动仓库,然后逐个遍历40个快照,每个快照:
有什么更聪明的吗?
FWIW,它是一个使用Xcode 3的C ++ Mac项目,在稍后阶段使用Visual Studio 2008添加了Windows版本。所有源代码在Mac和PC版本之间保持同步。
答案 0 :(得分:2)
Git(有效地)为每个修订版存储完整的源代码树。如果提交之间存在差异,则会从这些完整副本中得出结论。它不依赖于工作副本中的任何特定操作。
正如其他人已经写过的那样,你可以随便吹掉你的工作副本,将下一个快照解压缩到其中,然后git add -A && git commit
。你不必做任何比这更复杂的事情。
提示:用bash吹掉工作副本:
( shopt -s extglob dotglob ; rm -r !(.git*) )
答案 1 :(得分:1)
如果备份可以按顺序编号,则变得非常简单。编写一个脚本,循环遍历它们,提交并标记版本。我已经为我接手的没有设置VCS的项目做了这个。
答案 2 :(得分:0)
如评论中所述,您只需将一个目录替换为另一个目录,并make a git -A
组合:
- “
git add .
”,它查看工作树并将所有这些路径添加到分阶段更改中(如果它们已更改或是新的且未被忽略),它不会进行任何“rm”操作。- “git add -u”,它查看当前跟踪的所有文件,并将这些文件的更改分级,如果它们不同或已被删除。它不会添加任何新文件,只会对已经跟踪的文件进行更改。
实际上,如果您有40个不同的目录,如果指定GIT_DIR
和GIT_WORK_TREE
环境变量,则可以在每个目录中执行该命令。
除了你可以直接在命令行中指定它们(这对GIT_WORK_TREE
更方便,因为它会改变40次)
在任何你想要的地方初始化一个git repo(/ path / to / my / repo)并使40 git add添加如下:
git add -A --git-dir=/path/to/my/repo --work-tree=.