2017-02-06 70 views
1

我想將所有文件從Git Repo A移動到Git Repo B,並且具有完整的歷史記錄。 Git B已經包含另一個項目文件。我嘗試了幾種方式,如將Git repo A移動到Git repo B(非空),具有完整的歷史記錄

How to move files from one git repo to another (not a clone), preserving history

How to move files from one git repo to another preserving history using `git format-patch`and `git am`

我試圖通過終端執行的所有提交。但我在執行git filter-branch --subdirectory-filter muDirectory -- --all時得到"git filter-branch fatal:myDirectory/: 'myDirectory' is outside repository Could not get the commits"

我需要一步一步的過程將所有文件從一個回購到另一個的詳細指導。希望有任何幫助,提前致謝。

+1

作爲將回購變爲另一個非空回購的結果,您期望什麼? – Amadan

+0

我的回購B已經有Proj1和Proj2。現在我希望將RepoA作爲Proj3移入RepoB,並提交來自RepoA的所有提交歷史記錄。 –

回答

2
  • 走進repoB並添加一個新的遠程與repoA URL(比如說,repoA)。
  • 結帳新分支(說,branchA)與repoA/master history
  • Git將所有文件夾/文件移動到一個新的子目錄RepoA。命令git mv <src> <dest>
  • branchA提交您的更改。
  • 結帳master分支和合並branchA分支。

按照命令:

# go into repoB master branch 
$ git remote add repoA <repoA-url> 
$ git remote -v      # confirm repoA is added named 'repoA' 

$ git fetch repoA 
$ git checkout -b branchA repoA/master 
$ git mv <folder/file> repoA/<folder/file>  # repeat untill all files/folders are moved 
$ git commit -am 'Moved repoA folder/file into repoA dir' 


$ git checkout master 
$ git merge branchA 

$ git add . 
$ git commit -m 'Added repoA into repoA directory' 
$ git push origin master 

Git的子樹:你可以做到這一點使用git subtree也:

$ git subtree add --prefix=repoA/ <repoA-url> master 

master branch of repoA到一個名爲repoA的子目錄。

+0

我得到致命的:拒絕合併無關的歷史錯誤後git拉回購主 –

+0

你可以附加你的命令和錯誤細節在OP(原郵政)? –

+0

順便說一句,您是否希望將'RepoA'作爲單獨的回購庫添加到您的'RepoB'中,或者只是根目錄中的所有文件夾/文件? –

相關問題