Dav*_*nts 19 git merge git-subtree
我们一直试图让git-subtree处理一个项目(使用git版本1.7.9.4)并且遇到了一些复杂问题.几个月前,其他人之前使用此命令添加了子树:
git subtree add --prefix=foo git@example.com:foo.git master
Run Code Online (Sandbox Code Playgroud)
现在已经有了实质性的变化foo,我们想要合并这些变化,最好将它们压缩.自导入文件以来,没有任何文件被修改过.
我已经尝试了三件事来尝试合并更改.
第一:
git subtree pull --squash -P foo git@example.com:foo.git master
Run Code Online (Sandbox Code Playgroud)
抛出异常: Can't squash-merge: 'foo' was never added.
第二:
git subtree pull -P foo git@example.com:foo.git master
Run Code Online (Sandbox Code Playgroud)
这有点工作(但有一些问题,但是存在拉入所有提交的问题,并且与已修改的文件有冲突.
最后,我尝试了这个:
git pull --squash -s subtree git@example.com:foo.git master
Run Code Online (Sandbox Code Playgroud)
这给了我想要的结果,输出Automatic merge went well; stopped before committing as requested和所有文件显示为已修改(具有正确的内容).
理想情况下,我想继续使用第一个git-subtree版本并获得接近上一版本的输出.如果我们必须始终使用最后一个版本,我们会,但我有点困惑为什么最后一个不产生合并冲突,而中间版本.
任何帮助表示赞赏.
Jac*_*ask 11
我有同样的问题,在我的情况下,似乎是由于初始子树提交被合并压缩到主分支.
通过子树源我找到了这个:https://github.com/git/git/blob/master/contrib/subtree/git-subtree.sh#L224
它看起来像子树greits你的git日志,git-subtree-dir: foo但没有找到合适的提交.尝试git log --grep="git-subtree-dir: foo/*\$",如果有一些奇怪的提交,例如它是一个合并提交,这可能是问题.
除了烦人的合并冲突之外,只是拉着没有挤压为我工作.我在一个临时分支中这样做,然后我git merge --squash进入另一个分支,以避免更糟糕的历史.当然,它也可能已被改造.
| 归档时间: |
|
| 查看次数: |
12123 次 |
| 最近记录: |