添加本地存储库作为远程存储库的子目录

时间:2011-12-14 07:05:04

标签: git

假设我有一个具有以下结构的远程存储库(git@server:project.git):

./client
./server

然后我使用~/myproject/test在目录git init; git add . ; git commit -m "init check in "中创建了一个本地存储库。我想将此本地存储库作为与testclient并行的子目录server推送到远程存储库,即

./client
./server
./test

我希望本地的所有签到历史记录都可以保存在远程存储库中。有没有办法实现这个目标?谢谢!

2 个答案:

答案 0 :(得分:6)

通常的解决方案是使用subtree merge strategy

有关详细信息,请参阅“Git subtree merge strategy, possible without merging history?”。


另一个解决方案是将您的本地仓库声明为远程仓库的子模块。

为此,你需要:

  • 将您的本地仓库作为远程服务器上的独立仓库推送
  • 在本地克隆git@server:project.git
  • git@server:test.git添加为a submodule

但如果您的测试文件与您的项目紧密相关,那可能不是最好的解决方案。

答案 1 :(得分:1)

之前的答案对我不起作用(需要更多详细信息:Git初学者在这里;-),而https://git-scm.com/book/en/v2/Git-Tools-Submodules完成了一步一步的方法。它还解释了合并/丢弃历史的两种方法。

相关问题