将更改推回子树项目的git子树推送

13
我想将提交消息推送到子树中,但只有适用于该子树的消息。我该如何做?两个项目Master和Slave,Slave作为Master的子目录,通过git subtree merge --prefix=lib/slave --squash projects/slave检出到Master中。现在我想将更改推回到Slave,但我仅想看到与Slave相关的提交消息。如何获得适当的提交消息?

Gitslave(http://gitslave.sourceforge.net/)可能是你的情况下一个有趣的替代选择。 - VonC
@VonC -- 我认为gitslave的主要问题之一是它似乎将命令分叉到每个repo上,实际上在每个repo上执行git commit -m“commit message”。因此,如果有任何开发人员不使用它,我们将遇到同步问题,对吗? - user578895
也许这是世界上最愚蠢的问题,但为什么 git log <folder> 在这里不够用呢?当您在目录中发出命令时,它将只提供与从属分支相关的更改。您的痛苦是来自于更改混乱,还是仅仅是显示方面的问题? - MrGomez
@MrGomez -- 因为我想实际将这些更改推送到不同的存储库。 - user578895
1个回答

7

针对您所需的行为,我认为您需要从Master推送,我不知道如何从Slave拉取子树更改。

要进行推送更改:

(in Master)
$ git subtree split --prefix=lib/slave -b split-branch
$ git push <bare Slave repo> split-branch:master
$ git branch -d split-branch
$ cd /path/to/Slave/working/copy
$ git pull  # (now in Slave)

第一条命令基于目录创建一个新的子树,然后将其推送到其他项目中。

理论上,您应该能够直接推送到工作副本,但实际上对我来说并没有奏效。


我不确定为什么你没有展示 git subtree push 命令,但是后来我从 git subtree 文档中明白了,一个 subtree push 只是一个子树分离(subtree split)后跟着向备用代码库进行正常推送。 - yoyo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接