我即将部署基于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即使我升级到当前的稳定版本,命令仍然无法正常工作?
我们使用子树部署这个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选择.
我在源代码控制下有一个很大的代码库(是subversion,现在是git).为了编译代码并运行测试,我使用了一组第三方库.这些库可以分为几个类别L.
每个库都有{Windows,Linux} X {调试,发布} X {32位,64位}配置.此外,这些库随着时间的推移而发展,我的项目的不同版本使用这些库的不同版本/构建.
我的问题是存储这些第三方的最佳方式是什么?
这是我的偏好设置:
我试过并考虑了几种解决方案,但都不令人满意:
我很清楚,第三方来源需要存储在供应商分支中的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 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?
编辑:还有
一个问题:
如何更新(自动)两个存储库中的文件更改仍然是相同的?有可能的?
所以,我有一个更大的(闭源)项目,并且在这个项目的上下文中创建了一个在其他地方也可以使用的库,我想.
我现在想要在自己的项目中拆分库,它可以作为github或类似的开源.当然,图书馆(及其历史)应该不包含我们项目的痕迹.
git-subtree在这里似乎是一个解决方案,但它并不完全适合.
我的目录布局是这样的(因为它是一个Java项目):
拆分后,我希望库的目录布局如下所示(包括直接在粗体目录中的任何文件):
历史记录还应该只包含主项目历史中涉及存储库这一部分的部分.
第一眼看到了我git-subtree split --prefix=src/de/fencing_ame/transport,但这会
transport(不会编译)和transport/client,transport/server和transport/fencing目录.第一点可以通过git subtree add --prefix=src/de/fencing_ame/transport <commit>在接收端使用来缓解,但我不认为git-subtree可以对导出这些子目录做很多事情.(这个想法真的是只能在这里分享完整的树).
我必须在git filter-branch这里使用吗?
拆分后,我希望能够导入回库在我的主要项目中,无论是使用Git树或混帐子模块,在一个单独的子目录,而不是它现在是.我想象这样的布局
抱歉,我是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存储库.和所有项目的分支名称相同.
/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) 我终于在我的工作流程中加入了GitHub和Composer依赖管理.这绝对是一个巨大的进步,虽然我仍然对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) 在存储库中,A该文件夹sub作为存储库的git子树包含在内S- 指向master分支.
我已经将存储库分叉A了F.现在我想做以下其中一项F:
sub使用的不同的分支S(即,develop分支)sub为完全使用不同的存储库这些中的任何一种都可能,如果是这样,怎么样?我应该知道会有任何副作用吗?
A当我合并我的更改(拉取请求)时,如何确保我的子树更改不会在存储库中更新?我的意思是除了隔离提交.
git ×10
git-subtree ×10
github ×2
merge ×2
repository ×2
bitbucket ×1
composer-php ×1
git-branch ×1
nested ×1
ubuntu ×1
xbmc ×1
yeoman ×1