【问题标题】:git subtree useless mergegit subtree 无用合并
【发布时间】: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

我注意到,当我从我的项目 demogit 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


    【解决方案1】:

    确实存在另一种方式来做到这一点,但方式有点困难(运行更多命令)。 我没有使用,而是尝试了git read-tree/merge,它给了IMO更好的东西......

    优势是我不需要安装额外的工具...

    这是一篇有用的文章,很好地描述了如何手动使用子树概念https://delicious-insights.com/en/posts/mastering-git-subtrees/#subtrees-step-by-step

    【讨论】:

      猜你喜欢
      • 2014-10-07
      • 2021-10-12
      • 1970-01-01
      • 2013-03-01
      • 1970-01-01
      • 2012-01-30
      • 2012-04-04
      • 1970-01-01
      • 2012-07-29
      相关资源
      最近更新 更多