我在项目演示中添加了子树
$ 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
到目前为止,我很满意子树。然后我将文件编辑到子树插件并提交并子树推送 ed
* 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
我注意到,在我从项目演示到git subtree push --prefix=plugins/plugone plugone master
更新 plugone 之后,当我运行时
$ git subtree pull --prefix=plugins/plugone plugone master --squash
我希望这可以没有,但我注意到 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子树推送之后运行 git子树拉,而IMO并没有多大意义
如何防止这种行为?
答案 0 :(得分:0)
另一种方法确实存在,但是以更难的方式(更多命令运行)。 我没有使用git-subtree,而是尝试了 git read-tree / merge ,它给了IMO更好的东西......
优点是我不需要安装额外的工具......
这是一篇有用的文章,详细介绍了如何手动使用子树概念https://delicious-insights.com/en/posts/mastering-git-subtrees/#subtrees-step-by-step