【发布时间】:2017-11-06 13:57:14
【问题描述】:
我以这种方式在我的项目demo中添加了一个子树
$ git subtree add --prefix=plugins/plugone plugone master --squash
$ tree .
demo
|___.git
|___plugins
|___plugone
$ git log --oneline --all --graph --decorate
* 200e94c (HEAD -> master, origin/master) Merge commit 'f9a745bb60b3e5816f918c0ec736714bd362bce7' as 'plugins/plugone'
| \
| * f9a745b Squashed 'plugins/plugone/' content from commit 5c4a153
* 947ebfe bla bla
到目前为止一切顺利,我对 subtree 很满意。然后我将一个文件编辑到 subtree 插件中并提交并 subtree pushed
* 07b3046 (HEAD -> master, origin/master) plugone append #1
* 200e94c Merge commit 'f9a745bb60b3e5816f918c0ec736714bd362bce7' as 'plugins/plugone'
| \
| * f9a745b Squashed 'plugins/plugone/' content from commit 5c4a153
* 947ebfe bla bla
我注意到,当我从我的项目 demo 到 git subtree push --prefix=plugins/plugone plugone master 更新 plugone 后,当我运行时
$ git subtree pull --prefix=plugins/plugone plugone master --squash
我预计这不会做 nothing,但我注意到 demo 项目中有新的提交:
* a5ab686 (HEAD -> master) Merge commit 'c8cd6206950dc45196cf6fd1f17e8587a115fee6'
|\
| * c8cd620 Squashed 'plugins/plugone/' changes from 5c4a153..1fd84fe
* | 07b3046 (origin/master) plugone append #1
* | 200e94c Merge commit 'f9a745bb60b3e5816f918c0ec736714bd362bce7' as 'plugins/plugone'
|\ \
| |/
| * f9a745b Squashed 'plugins/plugone/' content from commit 5c4a153
* 947ebfe blabla
这很尴尬,因为这意味着我和我的同事必须在每次 git subtree push 之后运行 git subtree pull,而 IMO 没有多大意义。
如何防止这种行为?
【问题讨论】:
标签: git shell git-subtree