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

417
推荐指数
15
解决办法
49万
查看次数

在Git中查看子目录?

是否可以在Git中检出存储库的子目录?

想象一下,我正在设置一个新的WordPress安装.我将为我的插件和主题自定义创建两个新目录:

  • wordpress/wp-content/plugins/myplugins/
  • wordpress/wp-content/themes/mytheme/

我想通过Git维护这些目录.在Subversion中,我将通过拥有trunk/myplugins/trunk/mytheme/目录并检查子目录来实现这一目标.Git是否有办法使用单个存储库完成相同的任务?

我可能只是在一些Git范例中错过了这条船,因为很长一段时间的SVN用户很少接触Git.

编辑: 存储不同内容的多个分支是处理此问题的有趣方式.

git sparse-checkout

154
推荐指数
5
解决办法
12万
查看次数

在GitHub上有一个公共仓库的私人分支?

我在GitHub仓库中有一个公共PHP项目,它只包含一个分支(主).

我想要一个独立的分支/分支对我来说是私有的(我已经支付了私人GitHub回购).我希望能够将私有分支/分支的更改合并到公共仓库,反之亦然.

考虑到这一点,这是我的问题:

  1. 我可以在公共回购中拥有一个私人分支机构吗?
  2. 我可以将自己的公共仓库分配到我自己的私有分支/分支中吗?
  3. 如果以上两种方法都可行,哪种方式最好?如果不是,我该怎么办?

fork github git-branch

105
推荐指数
3
解决办法
6万
查看次数

为什么要使用SVN?有没有隐藏的专业人士(通过GIT/Mercurial/Bazaar)?

可能重复:
为什么git比Subversion更好?

关于版本控制系统,我已经阅读了很多(虽然不足以得到完美的图片),显而易见的结论是GIT是最好的.或者是Bazaar.或Mercurial.但如果是这样,那么没有人会使用SVN,但他们仍然这样做.为什么?由于缺乏经验,我自己对vcs通常是最好的没有自己的看法.你能分享一下你的想法吗?

svn git version-control mercurial bazaar

22
推荐指数
6
解决办法
1万
查看次数

将Git子模块设置为浅克隆和稀疏检出?

许多供应商的Objective-C库(例如facebook-ios-sdk)指示您将其repo的文件/目录的某个子集复制到Xcode项目中.这样做的一个问题是你不知道你有什么版本的供应商代码.另一个原因是,如果您对供应商代码进行更改,则通过Git提交更改并不容易.

作为一个解决方案,我想将每个供应商库添加为我项目的repo的Git子模块,并带有一些额外的设置(例如,在.gitmodules文件中).这样,如果另一个人克隆我的项目git submodule update --init,他们的repo和子模块将具有与我相同的状态,因为他们将使用我设置的相同默认设置:

  1. 稀疏结账:仅查看子模块的某些文件.
  2. 浅克隆:只克隆子模块的某个SHA1.

如何为Git子模块设置上述设置?

git clone github git-submodules sparse-checkout

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

是否有支持部分结账/克隆的分布式版本控制系统?

据我所知,所有分布式版本控制系统都要求您克隆整个存储库.因此,将大量内容放入一个存储库并不明智(感谢您的回答).我知道这不是一个bug而是一个功能,但我想知道这是否是所有分布式版本控制系统的要求.

在分布式rcs中,文件(或一大块内容)的历史记录是有向无环图,那么为什么不能克隆这个单个DAG而不是存储库中所有图形的集合?也许我想念一些东西,但以下用例很难做到:

  • 克隆只是存储库的一部分
  • 合并两个存储库(保留它们的历史!)
  • 将一些文件从一个存储库复制到另一个存储库

如果我从多个项目中重用其他人的代码部分,我无法保留其完整的历史记录.至少在git中我可以想到一个(相当复杂的)解决方法:

  1. 克隆完整的存储库
  2. 删除我不感兴趣的所有内容
  3. 重写历史记录以删除主文件中没有的所有内容
  4. 将剩余的存储库合并到现有存储库中

我不知道Mercurial或Bazaar是否也可以这样做,但至少它根本不容易.那么是否有任何支持部分检出/克隆的分布式rcs?它应该支持一个简单的命令,从一个存储库获取包含其历史记录的单个文件,并将其合并到另一个存储库 这样您就不需要考虑如何将内容构建到存储库和子模块中,但您可以根据需要快乐地拆分和合并存储库(极端情况是每个文件的一个存储库).

git version-control mercurial dvcs bazaar

15
推荐指数
4
解决办法
3121
查看次数

Git稀疏结账,排除

根据这个帖子,Git的sparse-checkout功能中的排除应该被实现.是吗?

假设我有以下结构:

papers/
papers/...
presentations/
presentations/heavy_presentation
presentations/...
Run Code Online (Sandbox Code Playgroud)

现在我想presentations/heavy_presentation从收银台中排除,而将其余部分留在收银台.我没有设法让这个运行.什么是正确的语法?

git sparse-checkout

12
推荐指数
4
解决办法
7858
查看次数

使用git作为集中版本服务器

我目前在工作中使用svn.

我们的设置是:每个人都有一个工作副本,我们承诺由apache2服务的svn服务器.

所以我提交了更改,另一个更新,每个人都可以按照自己的意愿处理副本.

因此部署非常简单.

但现在,我想用Git做同样的事情.可能吗?

我想在我的主服务器上有一个git repo,在家里开发,提交对服务器的更改等等.

谢谢你的帮助

svn apache git version

7
推荐指数
1
解决办法
2229
查看次数

git svn clone除特定文件夹外

我想git克隆一个svn存储库,除了svn的根文件夹中的一个文件夹.

我该怎么做?

git svn clone svnrepo/dir/sb-dir/如果我只sb-dir需要,我可以做,但我需要dirdesign文件夹之外的所有文件夹(和文件)

svn git version-control git-svn

7
推荐指数
1
解决办法
4257
查看次数