标签: git-subtree

为什么即使我在Ubuntu 12.10上安装了git 1.8.3.2,`git subtree`也无法正常工作?

我即将部署基于AngularJS的静态站点作为与Yeoman的Github页面.部署说明的第3步告诉我要做

git subtree push --prefix dist origin gh-pages

但当我进入时,我得到了

git: 'subtree' is not a git command. See 'git --help'.

这个SO答案提供了有关如何升级到最新git-core的说明,并确保它始终升级到最新的稳定版本.

sudo add-apt-repository ppa:git-core/ppa
sudo apt-get update
sudo apt-get install git
Run Code Online (Sandbox Code Playgroud)

运行这些命令后,我git --version确保我有最新版本,显然我做git version 1.8.3.2了输出.现在,当我尝试跑步

git subtree push --prefix dist origin gh-pages

我仍然得到同样的跟随错误

git: 'subtree' is not a git command. See 'git --help'.

最后我刚刚重新启动Ubuntu 12.10并尝试再次运行该命令,但是再一次,我得到了同样的错误.

为什么git subtree即使我升级到当前的稳定版本,命令仍然无法正常工作?

git ubuntu git-subtree

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

如何强制子树推送覆盖远程更改?

我们使用子树部署这个Gist来部署我们的Yeoman项目的子目录.在我们的例子中,分支称为生产,而不是gh-pages.

直到昨天Git服务器拒绝了命令时git subtree push --prefix dist origin production,这种情况还算完美

 ! [rejected]        9fe1683aa574eae33ee6754aad702488e0bd37df -> production (non-fast-forward)
error: failed to push some refs to 'git@gitlab.sdstate.edu:web-and-new-media/graduation2015.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart.
Run Code Online (Sandbox Code Playgroud)

如果我在本地切换到生产分支(这是干净的),即使我使用该选项也会git pull返回.Your branch is up-to-date with 'origin/production'.--rebase

我可以通过我们的Web UI在服务器上看到生产分支的内容,并且没有什么不应该是,只是dist我期望的目录的编译输出.

为此,似乎我应该能够安全地强制覆盖这些文件,但是如何?git subtree push没有--force选择.

git git-subtree yeoman

34
推荐指数
2
解决办法
9659
查看次数

管理源代码管理下的代码使用的第三方源和二进制文件

我在源代码控制下有一个很大的代码库(是subversion,现在是git).为了编译代码并运行测试,我使用了一组第三方库.这些库可以分为几个类别L.

  • 仅限二进制文件
  • 第三方来源
  • 第三方来源+本地修改

每个库都有{Windows,Linux} X {调试,发布} X {32位,64位}配置.此外,这些库随着时间的推移而发展,我的项目的不同版本使用这些库的不同版本/构建.

我的问题是存储这些第三方的最佳方式是什么?

这是我的偏好设置:

  1. 保持项目源存储库的大小
  2. 保持项目源与第三方同步,这样我就可以随时编译和运行旧版本
  3. 易于管理
  4. 跨平台

我试过并考虑了几种解决方案,但都不令人满意:

  1. 使用版本化脚本从手动管理的ftp服务器获取二进制文件,该服务器包含所有版本的库.这可行,但需要仔细管理服务器上的目录结构.由于有人可能会使用新版本覆盖其中一个二进制文件,因此容易出错.
  2. SVN外部 - 当时SVN外部无法引用特定标签.今天我正在使用git.
  3. Git子模块 - 拉动整个外部存储库,这可能是巨大的.或者,它需要为每个库管理一个单独的存储库.在一个特定的标签的子模块点,这意味着要么我得到的所有外部组件,当我需要一部分还是我模仿git的树一些奇怪的文件系统.

我很清楚,第三方来源需要存储在供应商分支中的git中,但二进制文件和标题是不同的故事.

git git-submodules git-subtree

29
推荐指数
1
解决办法
7542
查看次数

git按子文件夹拆分存储库并保留所有旧分支

我有一个带有2个目录和多个分支的git仓库,我想拆分它们并创建所有分支

`-- Big-repo
    |-- dir1
    `-- dir2

Branches : branch1, branch2, branch3 ...
Run Code Online (Sandbox Code Playgroud)

我想要的是

我想将dir1和dir2拆分为两个独立的repos并在两个存储库中保留branch branch1,branch2 ....

dir1
Branches : branch1, branch2, branch3 ...

dir2
Branches : branch1, branch2, branch3 ...
Run Code Online (Sandbox Code Playgroud)

我尝试了什么:

我能够将它们分成2个回购

git subtree split -P dir1 -b dir1-only 
git subtree split -P dir2 -b dir2-only 
Run Code Online (Sandbox Code Playgroud)

但是,分离后不会创建任何分支.

要获得所有分支:

git checkout branch1 (in Big-repo)
git subtree split -p dir1 -b dir1-branch1

git checkout branch2 (in Big-repo)
git subtree split -p dir1 -b dir1-branch2

And push these branches to newly created …
Run Code Online (Sandbox Code Playgroud)

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

26
推荐指数
2
解决办法
6732
查看次数

Git Subtree只有一个文件或目录

我使用Git Subtree如下:

git subtree add --prefix=directory_destination_path --squash git@bitbucket.org:kicaj/projectname.git master
Run Code Online (Sandbox Code Playgroud)

但在路径:directory_destination_path复制所有回购projectname.git

如何复制到directory_destination_path只有子目录或只有一些文件projectname.git

编辑:还有
一个问题:
如何更新(自动)两个存储库中的文件更改仍然是相同的?有可能的?

git bitbucket git-subtree

24
推荐指数
3
解决办法
7599
查看次数

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
查看次数

在GitHub上分配存储库的子目录并使其成为我自己的repo的一部分

抱歉,我是Git和GitHub的新手,我已经阅读了一些内容,但我不确定我尝试做的事情是否完全有可能.

基本上我想分叉XBMC上使用的Confluence Skin并修改位于此处的各种元素:

https://github.com/xbmc/xbmc/tree/master/addons/skin.confluence

但是我不想分叉整个XBMC存储库,所以一个简单的fork操作不会这样做.

以下是我的一般要求:

  • 我想获取skin.confluence文件夹的内容并将其放入我自己的GitHub帐户的存储库中

  • 我需要能够在原始XBMC仓库中保持链接以接收上游提交,因为我的修改通常是基于主题的,而不是功能.

感谢tbekolay发布的响应,我已经能够进行子树拆分,只采用repo的skin.confluence部分并基本上创建一个分支,但我不确定如何保持它与原始的XBMC repo链接我修改后推到了自己的仓库.

git github repository xbmc git-subtree

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

将多个git存储库合并为一个,保留分支历史记录

我有四个独立的项目.他们有自己的git存储库.和所有项目的分支名称相同.

 /project/
 /project/projA/
 /project/projA/.git/
 /project/projB/
 /project/projB/.git/
 /project/projC/
 /project/projC/.git/
 /project/projD/
 /project/projD/.git/
Run Code Online (Sandbox Code Playgroud)

所有git存储库都具有相同的分支名称,当然还有它们自己的主分支.

我想将所有项目合并为一个如此:

  /Project/.git/
  /project/projA/
  /project/projB/
  /project/projC/
  /project/projD/
Run Code Online (Sandbox Code Playgroud)

我想保留所有分支的历史.

ps - >我对所有回购都有相同的分支名称.例如:用于所有四个项目的分支名称:V6-004

细节

我尝试了子模块子树,但两者都没有解决问题.

我也尝试了这个.

  $ mkdir new_parent_project
  $ cd new_parent_project
  $ git init
  # Now we need to create the initial commit. This is essential.
  $ touch README.md
  $ git add README.md
  $ git commit -am "initial commit"
Run Code Online (Sandbox Code Playgroud)

  # merge project ProjA into subdirectory ProjA
  $ git remote add -f ProjA http://GitUrl
  $ …
Run Code Online (Sandbox Code Playgroud)

git merge github git-subtree git-branch

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

GIT嵌套存储库:Composer vs. SubModules vs. Subtree vs.?

我终于在我的工作流程中加入了GitHubComposer依赖管理.这绝对是一个巨大的进步,虽然我仍然对GIT管理"嵌套"家属感到困惑.

当我使用一个很棒的Wordpress Stack ROOTS/BEDROCK时,我的简化目录结构如下所示:

|-- /project
|   |-- /.git                    // git repository for the skeleton/stack of the project
|   |-- composer.json            // list of dependencies, most of them are my own repositories on GitHub
|   |-- /vendor
|   |   |-- /php-dependency-1    // 3rd party dependencies not directly related to Wordpress
|   |-- /web
|   |   |-- /app                 // acts as "wp-admin" folder
|   |   |   |-- /mu-plugins       
|   |   |   |   |-- /SUBREPOSITORY-1    // my own …
Run Code Online (Sandbox Code Playgroud)

git nested git-submodules git-subtree composer-php

21
推荐指数
1
解决办法
8083
查看次数

git子树:可以在分叉存储库中更改子树分支/路径吗?

在存储库中,A该文件夹sub作为存储库的git子树包含在内S- 指向master分支.

我已经将存储库分叉AF.现在我想做以下其中一项F:

  • 改变sub使用的不同的分支S(即,develop分支)
  • 或:更改sub为完全使用不同的存储库

这些中的任何一种都可能,如果是这样,怎么样?我应该知道会有任何副作用吗?

A当我合并我的更改(拉取请求)时,如何确保我的子树更改不会在存储库中更新?我的意思是除了隔离提交.

git merge repository git-subtree

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