我在 Windows 上使用 git 1.8.3 时遇到了一个奇怪的错误。使用git subtree
,我将一个文件在两个项目之间共享并将其推送到另一个存储库。
所以,在 repo1 我这样做了:
# push script
git subtree split --prefix=shared-dir --rejoin --branch split
git push shared-repo split:master
git branch -D split
在这两个 repos 中,shared-repo
指的是包含共享代码的远程。共享代码将驻留在同名目录中。
在 repo2 我这样做了:
# pull script
git fetch shared-repo
git subtree merge --prefix=shared-dir shared-repo/master
我期望它做的是获取共享文件并将其放在目录下的 repo2 中./shared-dir/
。发生的事情是该文件被放在存储库的根目录中!
将文件移动到正确的文件夹,提交和执行类似于 repo1 的推送脚本的内容会导致推送被拒绝,因为它表示推送不是快进的。再次运行拉取脚本表明一切都是最新的。
我被踩到了,在互联网上搜索并没有发现其他人有类似的问题。出了什么问题,我该怎么办?
更新: Ubuntu 12.04 上的 git 1.7.9.5 也发生了同样的情况,两周前该git-subtree
脚本取自 git 存储库。我也改变了命令说--prefix=./shared-dir/
无济于事。
有趣git subtree
的是,创建shared-dir
目录,但将共享文件放在根目录而不是该目录中。