相关疑难解决方法(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万
查看次数

使用历史记录在Git中导出子树

我在我的Git存储库中有一个文件夹,我想搬到自己的存储库中.是否可以将该文件夹的历史记录与文件夹一起移动?

我之前一直在做一个git rm -r --cached subfolder/然后git init在子文件夹上.但是,历史记录不会导入新存储库.

git import history export

64
推荐指数
2
解决办法
1万
查看次数

如何在Windows 7中使用Cygwin安装git-subtree?

我正在努力用Cygwin安装git-subtree,并且没有任何好的在线教程专注于从Windows中构建源代码.你有没有遇到这个问题,解决这个问题的最佳策略是什么?

windows git cygwin git-subtree

11
推荐指数
1
解决办法
2239
查看次数

git filter-branches - 最后没有进展

我刚刚使用 cvs2git 在一个 git repo 中转换了一个 10G CVS repo(大约 120 个模块),在 RHEL5 机器上没有任何错误。我想从存储库中拆分一个子目录+历史记录并创建一个新的。(例如:如何在保持历史记录的同时将单个目录从 git 存储库移动到新存储库?

我试过:

git filter-branch --subdirectory-filter xxx.model -- --all
Run Code Online (Sandbox Code Playgroud)

工作正常,直到处理完最后一个项目 - 然后它使用 CPU 挂起而没有任何进展。使用strace,它看起来像这样:[断开的链接]。 strace- 所有分叉最终输出 > 2.5G - 我不知道它是否会变大;我阻止了它。

是什么导致了这种奇怪的行为?是否有任何其他方法可以使用现有存储库的子目录+历史记录创建新存储库?

git

3
推荐指数
1
解决办法
1229
查看次数

从git存储库中拆分一个包含所有分支和历史记录的子文件夹

我想将我的git存储库中的文件夹拆分为新文件夹.但我想保留所有与此文件夹相关的所有打开/关闭分支和历史记录.

\ Source Repo
--\ AAA
--\ BBB
----\ DDD
----\ EEE
--\ CCC


\ New Repo 1
--\ AAA
--\ CCC

\ New Repo 2 (BBB subfolder)
--\ DDD
--\ EEE
Run Code Online (Sandbox Code Playgroud)

我按照此处描述的步骤https://help.github.com/articles/splitting-a-subfolder-out-into-a-new-repository/ - 但这仅适用于单个分支.最后 - 我获得了所有(?)提交的新存储库,但没有分支信息.

我尝试使用--all参数为所有分支执行此操作,但我不清楚如何将所有重写的分支推送到空的远程仓库.

这是我目前的情况:

$ git clone https://github.com/USERNAME/REPOSITORY-NAME
$ cd REPOSITORY-NAME
$ git filter-branch --prune-empty --subdirectory-filter FOLDER-NAME -- --all
Run Code Online (Sandbox Code Playgroud)

在这一点上,如果我看看我的本地回购,我似乎有所有历史和所有分支在遥控器的起源.

$ git remote -v
origin  https://github.com/USERNAME/REPOSITORY-NAME.git (fetch)
origin  https://github.com/USERNAME/REPOSITORY-NAME.git (push)
$ git remote set-url origin https://github.com/USERNAME/NEW-REPOSITORY-NAME.git
$ git remote -v
origin  https://github.com/USERNAME/NEW-REPOSITORY-NAME.git …
Run Code Online (Sandbox Code Playgroud)

git version-control github bitbucket

2
推荐指数
1
解决办法
829
查看次数