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

Git将分支从源存储库推送到目标存储库的子文件夹,git,version-control,Git,Version Control,我试图将一个分支sourcebranch从源GIT存储库推送到目标存储库的子文件夹。这两个存储库都是远程的 在源repo中,我使用以下命令向目标repo添加了一个远程端口: git remote add origin https://path-to-target-repo.git 然后推了推树枝: git push origin sourcebranch 但这会将其推送到目标存储库的根位置,而实际上我希望将其推送到该存储库的子文件夹中 mkdir mydirectory git mv fil

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

在源repo中,我使用以下命令向目标repo添加了一个远程端口:

git remote add origin https://path-to-target-repo.git
然后推了推树枝:

git push origin sourcebranch
但这会将其推送到目标存储库的根位置,而实际上我希望将其推送到该存储库的子文件夹中

mkdir mydirectory
git mv file1 file2 file3 mydirectory
git commit -m 'relocated files'
git push

任何指导都将不胜感激。

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

mkdir mydirectory
git mv file1 file2 file3 mydirectory
git commit -m 'relocated files'
git push

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

mkdir mydirectory
git mv file1 file2 file3 mydirectory
git commit -m 'relocated files'
git push

git提交是整个项目版本的不可变快照。对于保存提交的每个repo,该快照中的每个文件的路径都是相同的。您可以尝试通过使用一些疯狂的方案来绕过这个问题,在推送完成时重写历史记录,但是如果您能够让它工作,那么结果仍然是远程设备与本地设备不同步(即,您将无法干净地推送或拉送)

有两种选择,这取决于您要完成的任务

如果远程包含多个您希望共享在一起的项目,但您希望单独修改每个项目,那么您可以做的最接近的事情可能是制作一个与您的本地项目类似的单独远程项目,然后将其推送到远程项目,并将其设置为“更广泛”存储库的子模块或子树

mkdir mydirectory
git mv file1 file2 file3 mydirectory
git commit -m 'relocated files'
git push
如果您试图使用git作为部署工具,但文件没有显示在正确的工作路径中,那么您应该

(a) 将远程操作切换为裸repo,并使用hook执行
chedkout
操作,在该操作中指定git工作树目录,或

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


(c) [我的建议]使用一个合适的部署工具,而不是让push做它不是真正为之设计的事情。

git commit是整个项目版本的不可变快照。对于保存提交的每个repo,该快照中的每个文件的路径都是相同的。您可以尝试通过使用一些疯狂的方案来绕过这个问题,在推送完成时重写历史记录,但是如果您能够让它工作,那么结果仍然是远程设备与本地设备不同步(即,您将无法干净地推送或拉送)

有两种选择,这取决于您要完成的任务

如果远程包含多个您希望共享在一起的项目,但您希望单独修改每个项目,那么您可以做的最接近的事情可能是制作一个与您的本地项目类似的单独远程项目,然后将其推送到远程项目,并将其设置为“更广泛”存储库的子模块或子树

mkdir mydirectory
git mv file1 file2 file3 mydirectory
git commit -m 'relocated files'
git push
如果您试图使用git作为部署工具,但文件没有显示在正确的工作路径中,那么您应该

(a) 将远程操作切换为裸repo,并使用hook执行
chedkout
操作,在该操作中指定git工作树目录,或

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


(c) [我的建议]使用适当的部署工具,而不是让推送执行它并非真正为之设计的操作

可能的重复您的问题解决了吗?可能的重复您的问题解决了吗?