简体   繁体   中英

git subtree useless merge

I added a subtree into my project demo this way

$ 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

So far so good, I'm happy with subtree . Then I edited a file into the subtree plugone and committed and subtree push 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

I noticed that after I updated plugone from my project demo through git subtree push --prefix=plugins/plugone plugone master , when I run

$ git subtree pull --prefix=plugins/plugone plugone master --squash

I expected this to do nothing , but I noticed new commits in the demo project:

*   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

This is very embarrassing because it means that my colleagues and I have to run git subtree pull after every git subtree push which IMO doesn't make much sense.

How to prevent this behavior ?

Well another way does exist to do that but in a bit harder way (more command to run). Instead of using , I tried git read-tree/merge and it gives something IMO nicer...

The advantage is that I don't need to install extra tools...

Here is a helpful article that describes well how to use subtree concept manually https://delicious-insights.com/en/posts/mastering-git-subtrees/#subtrees-step-by-step

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM