Git push分支从源存储库到目标存储库的子文件夹

时间:2018-06-05 15:41:33

标签: git version-control

我正在尝试将分支sourcebranch从源GIT存储库推送到目标存储库的子文件夹。两个存储库都是远程的。

从源代码库中,我使用以下命令将远程数据库添加到目标存储库:

git remote add origin https://path-to-target-repo.git

然后推开分支:

git push origin sourcebranch

但是这会将它推送到目标存储库的根位置,而实际上我想将它推送到该存储库的子文件夹。

任何指导都将不胜感激。

2 个答案:

答案 0 :(得分:2)

git commit是整个项目版本的不可变快照。对于保存提交的每个repo,该快照中的每个文件的路径都是相同的。你可以尝试通过使用一些疯狂的方案来解决这个问题,当推送完成时重写历史记录,但是如果你能使它完全工作,结果仍然是一个与本地不断同步的遥控器(即你“无法推或拉干净。”

根据您要完成的任务,有两种选择。

如果遥控器包含您想要共享的多个项目,但是您想要单独修改每个项目,那么您可以做的最接近的事情就是创建一个看起来就像您的本地的单独的遥控器,然后推送到它,并将其设置为“更广泛”存储库的子模块或子树。

如果您尝试使用git作为部署工具并且文件没有出现在正确的工作路径中,那么您应该

(a)将远程切换为BARE仓库,并使用挂钩执行chedkout操作,在该操作中指定git工作树目录,或者

(b)移动回购工作树的根目录,使其位于服务器上的位置,或者

(c)[我的建议]使用适当的部署工具,而不是做推送做一些它并非真正设计的东西

答案 1 :(得分:1)

如果您希望将文件放在子目录中,则需要在本地创建一个提交,将文件移动到相应的子目录中,然后将这些更改推送到远程存储库。

mkdir mydirectory
git mv file1 file2 file3 mydirectory
git commit -m 'relocated files'
git push
相关问题