相关疑难解决方法(0)

Git和Mercurial - 比较和对比

有一段时间我一直在为我的个人项目使用subversion.

我越来越多地听到关于Git和Mercurial以及DVCS的一般情况.

我想给整个DVCS带来一些旋转,但我对这两种选择都不太熟悉.

Mercurial和Git有什么区别?

注意:我不是要找出哪一个是"最好的",甚至不应该从哪个开始.我主要寻找他们相似的关键领域,以及他们不同的关键领域,因为我有兴趣知道他们在实施和理念方面有何不同.

git version-control mercurial dvcs

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

在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 - 将分支存储在单独的本地目录中

我对git很新,我正试图以正确的方式设置我的存储库.

基本上我的应用程序是各种平台,因此该平台的实现基于主分支,但对这些文件以及一些其他文件进行了一些小的修改.

我尝试将其设置为分支,因此我有一个master分支,implementation_1并且implementation_2.

但据我所知,这意味着本地所有分支都存储在一个目录中,它们的分离只能通过git.

我想是有3个本地目录,master,imp_1,和imp_2.如果我对imp_1目录中的一个核心文件进行了更改,我希望能够将该更改合并到master分支中并从那里合并到imp_2.

我开始认为这些需要是3个不同的存储库(实现是核心的分支).这是要走的路吗?在那种情况下,我将如何处理上述情况?

git version-control github

31
推荐指数
3
解决办法
2万
查看次数

git:如何从项目中分离库?filter-branch,subtree?

所以,我有一个更大的(闭源)项目,并且在这个项目的上下文中创建了一个在其他地方也可以使用的库,我想.

我现在想要在自己的项目中拆分库,它可以作为github或类似的开源.当然,图书馆(及其历史)应该不包含我们项目的痕迹.

git-subtree在这里似乎是一个解决方案,但它并不完全适合.

我的目录布局是这样的(因为它是一个Java项目):

  • 击剑比赛 (git workdir)
    • SRC
        • fencing_game
          • 运输 (我的图书馆)
            • 协议 (图书馆的一部分)
            • fencing (与库连接的主项目的一部分)
            • 客户端(与库连接的主项目的一部分)
            • server (与库连接的主项目的一部分)
          • 客户(主要项目的一部分)
          • 服务器(主项目的一部分)
          • ...... (主要项目的一部分)
    • 其他文件和目录(构建系统,网站等 - 主要项目的一部分)

拆分后,我希望库的目录布局如下所示(包括直接在粗体目录中的任何文件):

  • 我的图书馆(名字待定)
    • SRC
        • fencing_game
          • 运输 (我的图书馆)
            • 协议 (图书馆的一部分)

历史记录还应该只包含主项目历史中涉及存储库这一部分的部分.

第一眼看到了我git-subtree split --prefix=src/de/fencing_ame/transport,但这会

  1. 给我一棵树根transport(不会编译)和
  2. 包括transport/client,transport/servertransport/fencing目录.

第一点可以通过git subtree add --prefix=src/de/fencing_ame/transport <commit>在接收端使用来缓解,但我不认为git-subtree可以对导出这些子目录做很多事情.(这个想法真的是只能在这里分享完整的树).

我必须在git filter-branch这里使用吗?

拆分后,我希望能够导入回库在我的主要项目中,无论是使用Git树或混帐子模块,在一个单独的子目录,而不是它现在是.我想象这样的布局

  • 击剑比赛 (git workdir)
    • SRC
        • fencing_game
          • 运输 (空)
            • fencing (与库连接的主项目的一部分)
            • 客户端 …

git git-submodules git-filter-branch git-subtree

23
推荐指数
1
解决办法
5501
查看次数