[英]How to move existing git repository to new repository and preserve commit history
[英]how to move an existing git repository to an outer directory of a new project
我使用以下目录结构启动了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的回购协议外diectory django_proj保持python_proj的历史和“感动”回购将成为整个项目django_proj的回购?
注意: django_proj没有git repo。 这是全新的。
您可以在现有的python_proj
库中移动元素,最后只有一个git存储库。
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
声明为新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
将引用固定版本的python_proj
。
git不“知道”包含.git
元数据目录的外部目录是什么。 您可以根据需要将其重命名,并且您的存储库仍然可以正常工作。 由于您的django_proj
还没有git历史记录,因此建议您执行以下操作:
python_proj
重命名为django_proj
。 django_proj/python_proj
,并使用git add
将其git add
。 git mv * python_proj
git add
它们,或者只是在django_proj
目录中django_proj
django并添加新文件。 您不应将其“移出”,而应将文件移到新目录中。 在您的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
文件内容放在根级别,则可能需要检查它(我想会)。 如果那里有任何相对路径,也应该对其进行更新。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.