我在Windows上使用git 1.8.3遇到了奇怪的错误。使用
因此,在repo1中,我做了这个:
在这两个仓库中,
在 repo2 中,我做了这件事:
我期望它能获取共享文件并将其放在 repo2 中的目录
更新:在Ubuntu 12.04上,使用来自git存储库约两周前的
有趣的是,
git subtree
,我将一个文件共享给两个项目,并将其推送到另一个存储库中。因此,在repo1中,我做了这个:
# push script
git subtree split --prefix=shared-dir --rejoin --branch split
git push shared-repo split:master
git branch -D split
在这两个仓库中,
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存储库约两周前的
git-subtree
脚本和git 1.7.9.5时,发生了同样的情况。我还尝试将命令更改为--prefix=./shared-dir/
,但没有效果。有趣的是,
git subtree
创建了shared-dir
目录,但将共享文件放在根目录而不是该目录内部。