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

Mar*_*ahn 11 git subtree git-subtree

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


我有两个项目,MasterSlave. Slave被签出作为签出的子树通过哪里是Master检查到的分支:lib/slavegit subtree merge --prefix=lib/slave --squash projects/slaveprojects/slaveSlave

分行:

掌握项目/奴隶→奴隶

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

  • git checkout奴隶
  • git merge ??? 主

如果我进行正常合并,则每次提交都会获得提交,无论是否lib/slave修改了任何文件.或者我可以做一个--squash只获得一次提交,但我丢失了日志消息.

那么我该如何获得相应的日志消息呢?例如,如果我的master日志历史是:

  • 添加图像到掌握
  • 仅在slave中修改了文件
  • 只有掌握的更多变化
  • 主站和从站中修改过的文件

我希望这个添加到Slave:

  • 仅在slave中修改了文件
  • 主站和从站中修改过的文件

bla*_*lah 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)
Run Code Online (Sandbox Code Playgroud)

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

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