从几个目录(快照)构建Git回购
在iOS开发过程中,我有几个任务。完成每个作业后,我制作了完整的项目目录的副本。所以,现在在4个作业之后,我有4个目录,每个目录都有当时项目的快照。从几个目录(快照)构建Git回购
现在我想开始一个git仓库,并有“完整”的历史。我想从第一个目录开始,即第一个版本的项目,推动一切,然后推动第一个和第二个之间的差异等等。但是因为它们在不同的目录中,我想我不能简单地“git remote add origin”一个接一个地加上“all”,“commit”和“push”?因为使用“git add --all”,我会把所有的东西都推到一边,而不是区别?
澄清:目录中没有一个是git仓库还
如果这些项目目录不在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
'虽然会工作。
我试过了,似乎工作得很好,但是,它还创建了一个非挂起的“已删除:”更改列表,其中包含“删除:”对于我添加的所有内容。如果我愿意这样做,它会恢复所有的增加,所以在最后一次提交之后,我做了一次“重置 - 硬”来防止这种情况发生,现在看起来没问题。这是正常的行为吗? – Arjan 2014-10-06 09:27:49
@Arjan其实我会用git -A。而不是git。,以便记录添加,修改*和*删除。我编辑了答案。不需要重置。 – VonC 2014-10-06 09:30:33
然后同样的事情仍然存在:http://pastebin.com/qU7GsRE7 - 它工作的很好,但只有当我直到最后一次提交,然后“重置 - 硬”时才忽略非挂起的“deleted:”。 – Arjan 2014-10-06 09:54:10
可能的重复[你如何合并两个git仓库?](http://*.com/questions/1425892/how-do-you-merge-two-git-repositories)请注意,有很多那里的答案都是相关的,所以确保你不要只读第一个答案。 – 2014-10-06 07:45:43
@ThomasOrozco但是,不同的目录不是Git仓库,所以我猜不是吗? – Arjan 2014-10-06 08:00:47