我们有我们的SVN代码,但现在切换到Git的。揭露一个Git仓库作为公共克隆的唯一部分,但具有完全的历史
问题是,我们有这样的文件夹:
/src/com/something/main
/src/com/something/dev
和Eclipse源文件夹设置为/src
。
只有代码,在包.../main
必须成为公众。在包.../dev
代码是未完成的和私人。
当.../dev
中的代码完成后,我们将该类移动到Eclipse中的.../main
。这是一个不同的Java包,我们不使用分支。所以这不是合并。
我试图
git filter-branch --index-filter
'git rm --cached --ignore-unmatch src/com/something/dev'
但随后在移动之前所有的历史都将丢失,文件突然出现的作者是谁动完了!
如何将资源库分成两个分支:分支“秘密”拥有一切,分支“大众”在文件夹.../main
所有文件的完整历史记录,即使该文件最初是在文件夹.../dev
这是隐藏?
假设文件历史如下
.../dev/file1 created moved to .../main/file1 (released)
.../dev/file2 created but not released
那么我就需要公版显示两个提交:和.../dev/file1
创作的举动释放。当然还有对这个文件进行的任何编辑。 .../dev/file2
的存在/历史应该只在完整的存储库中。更糟糕的是:一些提交的修改file1
和file2
,但只有file1
发布。
混帐是否允许呢?有一个“秘密”分支,但是当从秘密分支推送文件到主分支时,所有的历史记录也会被移动?还是它提交最终文件(没有历史记录)来发布分支?文件重命名似乎也很不好支持。它如何处理未被推送的相同提交中的其他文件?是否有一个git命令提交一个file1分支“公共”只有这个文件的所有历史,而不是其他文件在同一个提交?
看看[这](http://nvie.com/posts/a-successful-git-branching-model/) – pratZ 2014-09-02 17:14:12
我不问如何做得更好。我有1000个修订我需要转换。 – 2014-09-02 19:14:34