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

时间:2012-04-10 00:45:46

标签: git subtree git-subtree

缺少以下内容:我想将提交消息推送到子树,但只推送适用于该树的消息。我该怎么做?


我有两个项目MasterSlaveSlaveMaster通过lib/slave签出git subtree merge --prefix=lib/slave --squash projects/slave的子树,其中projects/slaveSlave签出的master分支:

分支机构:

主 projects / slave→slave

现在我正在我的Slave分支上工作,提交属于两个项目的文件,一切顺利。现在我想将更改推回到lib/slave

  • git checkout slave
  • git merge ???主

如果我进行正常合并,那么无论是否修改--squash中的任何文件,我都会为每次提交提交提交。或者我可以执行master并且只获得一次提交,但是我丢失了日志消息。

那么如何获取相应的日志消息?例如如果我的Slave日志历史记录是:

  • 将图片添加到主人
  • 仅限奴隶中的修改文件
  • 仅限主人更改
  • 修改了主人和奴隶的文件

我希望将其添加到{{1}}:

  • 仅限奴隶中的修改文件
  • 修改了主人和奴隶的文件

1 个答案:

答案 0 :(得分: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)

第一个命令根据目录创建一个新的子树,然后将其推送到另一个项目。

理论上,你应该能够直接推送到工作副本,但在实践中这对我不起作用。