缺少以下内容:我想将提交消息推送到子树,但只推送适用于该树的消息.我该怎么做呢?
我有两个项目,Master和Slave. Slave被签出作为签出的子树通过哪里是Master检查到的分支:lib/slavegit subtree merge --prefix=lib/slave --squash projects/slaveprojects/slaveSlave
分行:
掌握项目/奴隶→奴隶
现在我正在我的master分支上工作,提交属于两个项目的文件,一切顺利.现在我想将更改推回到Slave:
如果我进行正常合并,则每次提交都会获得提交,无论是否lib/slave修改了任何文件.或者我可以做一个--squash只获得一次提交,但我丢失了日志消息.
那么我该如何获得相应的日志消息呢?例如,如果我的master日志历史是:
我希望这个添加到Slave:
我有一个已安装另一个存储库的存储库
git subtree add -P some/path otherremote otherbranch
Run Code Online (Sandbox Code Playgroud)
开发已经发生了一些局部变化,但也进行了几轮合并:
git fetch otherremote
git subtree merge -P some/path otherremote/otherbranch
git commit
Run Code Online (Sandbox Code Playgroud)
现在我想在otherremote/otherbranch的HEAD和某些/ path的树之间获得差异.我怎样才能做到这一点?
我正在努力用Cygwin安装git-subtree,并且没有任何好的在线教程专注于从Windows中构建源代码.你有没有遇到这个问题,解决这个问题的最佳策略是什么?
我在子目录“gempak/tables”中有一个名为“gempak-tables”的git子树模块:
$ git config -l | grep -i gempak
remote.gempak-tables.url=git@github.com:Unidata/GEMPAK-Tables.git
remote.gempak-tables.fetch=+refs/heads/*:refs/remotes/gempak-tables/*
$
Run Code Online (Sandbox Code Playgroud)
但是,我无法将子树模块的更改推送到 GitHub:
$ git subtree push --prefix=gempak/tables gempak-tables master
git push using: gempak-tables master
X11 forwarding request failed on channel 0
To git@github.com:Unidata/GEMPAK-Tables.git
! [rejected] 89d8f94d010e6677f146608674cf7408eecb4a61 -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:Unidata/GEMPAK-Tables.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the …Run Code Online (Sandbox Code Playgroud) 我正在使用git-subtree(来自Avery Pennarun).在我目前的git repo中,我当然拥有所有项目文件/文件夹和一个名为"lib"的子树.如果我现在克隆这个git repo使用git clone我得到所有的项目文件和子树"lib"(一切都应该是).我现在尝试了:我在克隆的repo中的子树"lib"中更改了一些东西并试图将更改推回到子树"lib"的远程仓库中
git subtree push,但是它没有用.问题是什么?我是否必须首先使用git子树添加将其添加为子树?
Thx提前
既然git子树已经合并到核心git发行版(它也是1.8.0版本的Msysgit上),有没有人知道git svn是否与git子树一起工作?
注意:我不是在谈论子树合并策略,而是关于此.
使用git svn时,不能直接使用Git子模块.相反,它需要另一层次的间接.此外,当您跟踪第三方存储库时,git子树工作流更方便,这也是您在使用svn时发生的事情.
我的问题是,当与git svn一起使用时,如何确定git子树是否有任何问题?
我正在尝试创建现有存储库的gitsubtree,例如:
- > projectA/projectB
项目A是父项,我想将项目B添加为git子树.
git subtree -P projectB ssh://git@github.com/projectB.git master
但它失败了,并显示以下消息:
前缀'projectB'已经存在.
我不想再次下载所有存储库,我只想将此目录添加到我的gitsubtree.
Project A git不跟踪此目录项目B.
提前致谢
我有一个相当大的git存储库,它有一个我维护库代码的目录.该目录包含许多子目录.
repo
+--- lib
| +--- A
| +--- B
...
| +--- Z
Run Code Online (Sandbox Code Playgroud)
现在让我们假设我想要打开源子目录A,...,M并保持子目录的N,...,Z源代码.我们还假设我想:
A,...,M在一个开源存储库中.原因是这些目录A,...,M具有相互依赖性,将它们分成单独的存储库会很困惑.lib/pub和lib/pvt,但这将有级联需要改变其他地方引用效应或将需要大量的符号链接(lib/A -> lib/pub/A).git subtree我可以在我的封闭源代码库或开源代码库中修改代码的解决方案,我可以轻松地同步两个存储库之间的更改.我已经在stackoverflow和google中搜索了一个解决方案,但似乎没有明显的解决方案.从概念上讲,这是git subtree应该能够做到的事情,但它只适用于单个子目录.
我已经查看了git-subtree脚本,目的是修改它.
https://github.com/git/git/blob/master/contrib/subtree/git-subtree.sh
在我看来,如果我要修改,subtree_for_commit()我应该能够说服git subtree split考虑不止一个目录进行拆分.但是我对git的了解还不足以理解脚本正在做什么并在不破坏事情的情况下修改它.
如果您对上述问题或任何其他修改指针有任何解决方案git-subtree,请告诉我.
我一直在使用git subtree split将一个巨大的存储库(从另一个VCS导入Git)分成更小的存储库.
$ git subtree split -P ./path/to/folder/ -b folder-only
Run Code Online (Sandbox Code Playgroud)
这已经工作了,我已经将几个文件夹移动到新的存储库中,但是在运行所有可用的提交之后,他们的兄弟姐妹的尝试没有创建分支.
最后的信息是
"没有找到新的修订"
我不知道这是否重要,但运行时--debug会发出如下消息
处理提交:ca9d25944cf34bbe7aa356248a166ac1fb813f2a
parent:fc0e5a621ab871b8a11071eec321f4b40b8dcce0
newparents:
tree is:
为什么git subtree split失败了,我能做些什么呢?
我有一个dotfiles存储库.我想将另一个与子模块(prezto)合并到其中,因此我可以方便地将所有内容放在一个存储库中,而不会出现子模块的不便.
我怎样才能将prezto与其所有子模块合并到我的dotfiles存储库中?
我可以使用子模块,我可以使用"老式"方式或使用较新的git子树工具拆分和合并子树.
我只是不知道如何做这个具体案例.
git ×10
git-subtree ×10
cygwin ×1
git-diff ×1
git-svn ×1
merge ×1
pretzo ×1
repository ×1
subtree ×1
windows ×1