相关疑难解决方法(0)

将(移动)子目录分离到单独的Git存储库中

我有一个Git存储库,其中包含许多子目录.现在我发现其中一个子目录与另一个子目录无关,应该分离到一个单独的存储库.

如何在将文件的历史记录保存在子目录中的同时执行此操作?

我想我可以制作一个克隆并删除每个克隆的不需要的部分,但我想这会给我一个完整的树,当检查旧版本等.这可能是可以接受的,但我宁愿能够假装两个存储库没有共享历史记录.

为了说清楚,我有以下结构:

XYZ/
    .git/
    XY1/
    ABC/
    XY2/
Run Code Online (Sandbox Code Playgroud)

但我想这样做:

XYZ/
    .git/
    XY1/
    XY2/
ABC/
    .git/
    ABC/
Run Code Online (Sandbox Code Playgroud)

git git-filter-branch git-subtree

1712
推荐指数
15
解决办法
25万
查看次数

SVN:外部相当于Git?

我使用svn:externals从另一个SVN存储库中使用了两个SVN项目.

我怎样才能在Git中拥有相同的存储库布局结构?

svn git

167
推荐指数
3
解决办法
7万
查看次数

在Git 1.7.0中稀疏结账?

使用Git 1.7.0中新的稀疏结账功能,是否可以像在SVN中一样获取子目录的内容?我找到了这个例子,但它保留了完整的目录结构.想象一下,我只想要'perl'目录的内容,而没有名为'perl'的实际目录.

- 编辑 -

例:

我的git存储库包含以下路径

repo/.git/
repo/perl/
repo/perl/script1.pl
repo/perl/script2.pl
repo/images/
repo/images/image1.jpg
repo/images/image2.jpg
repo/doc/
repo/doc/readme.txt
repo/doc/help.txt
Run Code Online (Sandbox Code Playgroud)

我想要的是能够从上面的存储库中生成这种布局:

repo/.git/
repo/script1.pl
repo/script2.pl
Run Code Online (Sandbox Code Playgroud)

然而,使用当前的稀疏结账功能,似乎只能获得

repo/.git/
repo/perl/script1.pl
repo/perl/script2.pl
Run Code Online (Sandbox Code Playgroud)

这不是我想要的.

git version-control sparse-checkout

68
推荐指数
4
解决办法
4万
查看次数

git-svn --ignore-paths

我现在用git-svn的--ignore-paths选项挣扎了好几个小时,试图只从大型存储库中获取某些标签.

我想开始在dev的fetch,看起来像

> svn ls http://192.168.0.2/svn/repo/corporation/dev
branches/
tags/
trunk/
Run Code Online (Sandbox Code Playgroud)

完整标记集的存储库目录列表如下所示:

> svn ls http://192.168.0.2/svn/repo/corporation/dev/tags
Acme-4.x/
Acme-5.0/
Acme-5.1/
Acme-5.2/
Acme-5.3/
Acme-5.4/
Acme-5.5/
Acme-5.6/
Acme-5.7/
Acme-5.8/
Acme-5.9/
Run Code Online (Sandbox Code Playgroud)

我想在Acme-5.5之前忽略所有标签.

我尝试初始化和获取:

> git svn init  http://192.168.0.2/svn/repo/corporation/dev
> git config svn.authorsfile ../users.txt
> git svn fetch --ignore-paths="Acme-4.x|Acme-5.0|Acme-5.1|Acme-5.2|Acme-5.3|Acme-5.4"
Run Code Online (Sandbox Code Playgroud)

不幸的是,我仍然看到Acme-4.x标签中出现了提取物.提取器通过告诉路径显示在控制台上

A       ACME4.4/source/database/mssql/components/functions/vssver.scc
Run Code Online (Sandbox Code Playgroud)

我在正则表达式上尝试了很多变种,包括我想要忽略的标记的完整路径,在一两个小时后变成完全正则表达式的颠簸和绝望.我已经为git-svn-init提供了--ignore-paths选项,但都无济于事.

有人会非常友好地评论为什么正则表达式不会抑制在ignores-regex中指定的路径上的提取.

谢谢.

git

23
推荐指数
4
解决办法
2万
查看次数