如何将现有的git存储库移动到新项目的外部目录

时间:2015-09-12 08:57:30

标签: git github

我启动了一个具有以下目录结构的python编码项目

python_proj
 .git
 .gitignore
 some_dir
  some_file
 some_file
 ...

现在我不得不转移到django web框架,其中 python_proj 成为 django_proj

的子目录
django_proj
 manage.py
 django_proj
  some_file
 python_proj (with above structure)
 ...

我如何"移动" python_proj 的.git repo到外部行为 django_proj 以保留 python_proj 的历史记录和"移动" repo成为完整项目的回购 django_proj
注意: django_proj 没有git repo。它是全新的。

3 个答案:

答案 0 :(得分:2)

您可以在现有的t = a.reduce(function(a,b) { return a * b; }, 1); 仓库中移动元素,最终只能使用一个git仓库。

python_proj

或者,这是我的首选方法,您可以将cd /path/to/python_proj mkdir python_proj git mv * python_proj git commit -m "reorg" cp files for django git add -A . git commit -m "django" # rename root folder in django_proj 声明为新python_proj submodule

django_proj

这样,两个项目都可以相互独立发展,而cd /path/to/django_proj git add -A . git commit -m "all django files, except python proj" git submodule add /url/of/python_proj git commit -m "new python_proj submodule " 会引用django_proj的固定版本。

答案 1 :(得分:1)

git不“知道”调用包含.git元数据目录的外部目录的内容。如果你愿意,你可以重命名它,你的回购仍然可以正常工作。由于您的django_proj还没有git历史记录,我建议您执行以下操作:

  • 将外部目录python_proj重命名为django_proj
  • 创建新目录django_proj/python_proj,然后使用git add添加目录。
  • git mv * python_proj
  • 将您的django文件移动到位并git add,或者只需在django_proj目录中重新启动django并添加新文件。

答案 2 :(得分:1)

您不应该将其“移出”,而是将文件移动到新目录中。 在python_proj目录中创建另一个目录python_proj,然后使用git将您在Python项目中需要的所有文件从当前级别移动到该目录:

mkdir python_proj
git mv some_dir python_proj
git mv some_file python_proj
...
git ci -m "Moved stuff"

现在你可以重命名外部目录(即git root,即包含.git)。这不会影响存储库,但您必须在可能正在使用的任何应用程序中更新对该存储库的引用(SourceTree等)。

如果您将文件内容保留在根级别(我想您会这样做),您可能需要查看.gitignore文件内容。如果你有任何相对路径,它们也应该更新。