假设我有一个具有以下结构的远程存储库(git@server:project.git
):
./client
./server
然后我使用~/myproject/test
在目录git init; git add . ; git commit -m "init check in "
中创建了一个本地存储库。我想将此本地存储库作为与test
和client
并行的子目录server
推送到远程存储库,即
./client
./server
./test
我希望本地的所有签到历史记录都可以保存在远程存储库中。有没有办法实现这个目标?谢谢!
答案 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完成了一步一步的方法。它还解释了合并/丢弃历史的两种方法。