git 子树无用合并
git subtree useless merge
我用这种方式在我的项目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 plugone 中并提交并 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
我原以为这 什么都不会做 ,但我注意到 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 子树拉取 50=] subtree push 在我看来没有多大意义。
如何防止这种行为?
好吧,确实存在另一种方法可以做到这一点,但方法有点困难(更多命令 运行)。
我没有使用 git-subtree,而是尝试了 git read-tree/merge,它给了 IMO 更好的东西...
优点是我不需要安装额外的工具...
这是一篇有用的文章,很好地描述了如何手动使用子树概念https://delicious-insights.com/en/posts/mastering-git-subtrees/#subtrees-step-by-step
我用这种方式在我的项目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 plugone 中并提交并 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
我原以为这 什么都不会做 ,但我注意到 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 子树拉取 50=] subtree push 在我看来没有多大意义。
如何防止这种行为?
好吧,确实存在另一种方法可以做到这一点,但方法有点困难(更多命令 运行)。 我没有使用 git-subtree,而是尝试了 git read-tree/merge,它给了 IMO 更好的东西...
优点是我不需要安装额外的工具...
这是一篇有用的文章,很好地描述了如何手动使用子树概念https://delicious-insights.com/en/posts/mastering-git-subtrees/#subtrees-step-by-step