从几个目录(快照)构建Git回购

问题描述:

在iOS开发过程中,我有几个任务。完成每个作业后,我制作了完整的项目目录的副本。所以,现在在4个作业之后,我有4个目录,每个目录都有当时项目的快照。从几个目录(快照)构建Git回购

现在我想开始一个git仓库,并有“完整”的历史。我想从第一个目录开始,即第一个版本的项目,推动一切,然后推动第一个和第二个之间的差异等等。但是因为它们在不同的目录中,我想我不能简单地“git remote add origin”一个接一个地加上“all”,“commit”和“push”?因为使用“git add --all”,我会把所有的东西都推到一边,而不是区别?

澄清:目录中没有一个是git仓库还

+0

可能的重复[你如何合并两个git仓库?](http://*.com/questions/1425892/how-do-you-merge-two-git-repositories)请注意,有很多那里的答案都是相关的,所以确保你不要只读第一个答案。 – 2014-10-06 07:45:43

+0

@ThomasOrozco但是,不同的目录不是Git仓库,所以我猜不是吗? – Arjan 2014-10-06 08:00:47

如果这些项目目录不在git的回购自己,最简单的方法是使用--work-tree选项the git command

git init newRepo 
cd newRepo 

git --work-tree=/path/to/project1 add -A . 
git commit -m "Project1" 

git --work-tree=/path/to/project2 add -A . 
git commit -m "Project2" 

的第二个添加命令将仅添加project1(已经版本化)和project2之间的增量。

最后,你需要确实需要一个git reset --hard,以使你的工作树(你的实际git仓库)与索引同步。

请注意,在此过程中任何git status都不起作用(因为它会将本地空工作树与索引进行比较,并显示删除结果)。

'git --work-tree=/path/to/projectx status'虽然会工作。

+0

我试过了,似乎工作得很好,但是,它还创建了一个非挂起的“已删除:”更改列表,其中包含“删除:”对于我添加的所有内容。如果我愿意这样做,它会恢复所有的增加,所以在最后一次提交之后,我做了一次“重置 - 硬”来防止这种情况发生,现在看起来没问题。这是正常的行为吗? – Arjan 2014-10-06 09:27:49

+0

@Arjan其实我会用git -A。而不是git。,以便记录添加,修改*和*删除。我编辑了答案。不需要重置。 – VonC 2014-10-06 09:30:33

+0

然后同样的事情仍然存在:http://pastebin.com/qU7GsRE7 - 它工作的很好,但只有当我直到最后一次提交,然后“重置 - 硬”时才忽略非挂起的“deleted:”。 – Arjan 2014-10-06 09:54:10