亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將現有的Git存儲庫導入另一個?

如何將現有的Git存儲庫導入另一個?

Git
狐的傳說 2019-08-05 16:49:41
如何將現有的Git存儲庫導入另一個?我在一個名為XXX的文件夾中有一個Git存儲庫,我有第二個名為YYY的 Git存儲庫。我想將XXX存儲庫作為名為ZZZ的子目錄導入YYY存儲庫,并將所有XXX的更改歷史記錄添加到YYY。文件夾結構之前:XXX  |- .git  |- (project files)YYY  |- .git  |- (project files)文件夾結構后:YYY  |- .git  <-- This now contains the change history from XXX  |-  ZZZ  <-- This was originally XXX       |- (project files)  |-  (project files)可以這樣做,還是我必須使用子模塊?
查看完整描述

3 回答

?
慕哥6287543

TA貢獻1831條經驗 獲得超10個贊

如果您想保留第二個存儲庫的確切提交歷史記錄,因此也保留了將來輕松合并上游更改的功能,那么這就是您想要的方法。它導致子樹的未修改歷史記錄被導入到您的倉庫中,加上一個合并提交將合并的存儲庫移動到子目錄。


git remote add XXX_remote <path-or-url-to-XXX-repo>

git fetch XXX_remote

git merge -s ours --no-commit --allow-unrelated-histories XXX_remote/master

git read-tree --prefix=ZZZ/ -u XXX_remote/master

git commit -m "Imported XXX as a subtree."

您可以跟蹤上游更改,如下所示:


git pull -s subtree XXX_remote master

Git在進行合并之前會根據其自身的位置計算出來,因此您無需在后續合并中指定前綴。


2.9之前的Git版本:您不需要將--allow-unrelated-histories選項傳遞給git merge。


使用read-tree和跳過該merge -s ours步驟的另一個答案中的方法實際上與使用cp復制文件并提交結果沒有什么不同。


查看完整回答
反對 回復 2019-08-05
?
炎炎設計

TA貢獻1808條經驗 獲得超4個贊

git-subtree是一個腳本,專門用于將多個存儲庫合并為一個同時保留歷史記錄(和/或拆分子樹歷史,盡管這似乎與此問題無關)的用例。它自1.7.11發布以來作為git樹的一部分進行分發。

要將<repo>版本的存儲庫合并<rev>為子目錄<prefix>,請使用git subtree add以下命令:

git subtree add -P <prefix> <repo> <rev>

git-subtree 以更加用戶友好的方式實現子樹合并策略。

對于您的情況,在存儲庫YYY中,您將運行:

git subtree add -P ZZZ /path/to/XXX.git master


查看完整回答
反對 回復 2019-08-05
  • 3 回答
  • 0 關注
  • 850 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號