我正在学习新的 Git 子树命令,它是在 Git1.7.11中添加的。在添加子树之后,我似乎失去了重定基的能力。我有一个包含 README 文件的主存储库和一个也包含 README 文件的库存储库。我用 subtree add
将它添加到 lib 目录:
$ git subtree add -P lib/mylib myliborigin master
这种做法行之有效,但现在的历史是这样的:
* 22c1fe6 (HEAD, master) Merge commit 'b6e698d9f4985825efa06dfdd7bba8d2930cd40e' as 'lib/mylib' -
|\
| * b6e698d Squashed 'lib/mylib/' content from commit d7dbd3d
* b99d55b Add readme
* 020e372 Initial
现在,当我想根据 origin/master
重新定义我的回购协议时,它失败了,因为压缩提交直接应用于它的父提交,而这不适用,因为它应用于回购协议的根,而不是我在添加子树时给它的前缀。
如果我观察壁球提交,其中的原因非常清楚。没有关于前缀的信息。这只是原来的 mylib 提交压缩在一起。只有下一次合并提交知道它的任何信息,但是 rebase 在这里不考虑它。
是否有任何变通方法(除了永远不要在子树提交上重定基) ?