git subtree push changes back to subtree project

冷暖自知 提交于 2019-12-04 07:59:46

问题


The short of what's below: I want to push commit messages to a subtree, but only the messages that apply to that tree. How do I do this?


I have two projects, Master and Slave. Slave is checked out as a subtree of Master checked out to lib/slave via git subtree merge --prefix=lib/slave --squash projects/slave where projects/slave is a branch that Slave is checked out into:

Branches:

master projects/slave → slave

Now I'm working on my master branch, making commits to files that are part of both projects, everything is going smoothly. Now I want to push changes back to Slave:

  • git checkout slave
  • git merge ??? master

If I do a normal merge I get commits for every commit to master, whether or not any files in lib/slave were modified. Or I can do a --squash and only get a single commit, but I lose the log messages.

So how do I get the appropriate log messages? e.g. if my master log history is:

  • added images to master
  • modified files in slave only
  • more changes to master only
  • modified files in master and slave

I'd want this added to Slave:

  • modified files in slave only
  • modified files in master and slave

回答1:


For the behavior you want, I think you'll have to push from Master, I don't know of a way to pull subtree changes from Slave.

To push changes:

(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)

The first command creates a new subtree based on the directory, which is then pushed to the other project.

In theory, you should be able to push directly to a working copy, but in practice that didn't work for me.



来源:https://stackoverflow.com/questions/10081681/git-subtree-push-changes-back-to-subtree-project

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!