Git:将本地项目转移到其他仓库,保留历史记录

时间:2016-07-19 12:30:25

标签: git github

我需要以某种方式移动一个现有的maven项目,该项目受git控制,位于另一个已经有另一个项目所在的git repo中。

为什么呢?在过去的几周里,我独自完成了一个项目。我在本地使用git(有没有远程存储库!)来跟踪我的更改。所以我身边的基本结构就是:

myRepo
  |--.git
  |--myProject
  |--.gitignore

其中myProject是一个maven项目。

与此同时,我的一位同事自己创建了一个仓库,也是另一个项目。这个仓库是远程的,在GitHub上。结构如下所示:

commonRepo
  |--.git
  |--hisProject
  |--.gitignore
  |--pom.xml
  |--.project
  |--.settings

正如你所看到的,这个想法是在这个repo中有一个父pom,它指定了所有的模块。 hisPoject是其中一个模块。

我现在想在那里移动myProject,这将是另一个maven模块。我不想在此过程中丢失我的提交历史记录。所以我希望最终结构看起来像:

commonRepo
  |--.git
  |--hisProject
  |--myProject
  |--.gitignore
  |--pom.xml
  |--.project
  |--.settings

我找到了一些将一个目录移动到另一个目录的方法,但似乎这些都不适合我的问题。看起来这些解决方案需要myRepo才能拥有一个遥控器,然后将其拉入commonRepo并合并。

那么,如何才能实现我的目标呢?

1 个答案:

答案 0 :(得分:0)

假设可以从同一台计算机访问myRepocommonRepo,请执行以下操作:

cd /path/to/commonRepo
git remote add -f other_repo /path/to/myRepo
git merge other_repo/master

# The following commands need to be executed only if there are conflicts.
# Your description suggests that the only conflict may be in .gitignore.
# Run these commands after resolving the conflicts manually.
git add .
git commit -m "Merged with myRepo"
# End of commands needed in case of conflicts

git remote remove other_repo