![](/img/trans.png)
[英]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.