![](/img/trans.png)
[英]How to move a file from one git repository to another while preserving history
[英]Is it possible to move a bunch of files from one git repository to another while preserving (most) history?
我將一些文件添加到錯誤的存儲庫中,直到后來才知道它們已經有了相當多的歷史(只是線性修訂,沒有分支或任何東西)。
是否有可能獲取這些文件並將它們與歷史記錄一起移動到另一個git存儲庫? 我不在乎他們的殘余物是否留在他們現在的殘余物中,只要新的殘余物具有它。
使用git log -p <filename> > <patchfile>
(參見doc ),您可以導出文件的整個歷史記錄,然后通過git apply --reverse --index <patchfile>
其應用到其他repo。 但是這不會重新創建提交,我還沒有想出 git-apply
的開關來做這件事。
如果您想要刪除原始倉庫中的文件,請參閱“如何從git的歷史記錄中刪除敏感文件?” 。
您可以執行以下操作。
git fetch
將分支的提示與錯誤的存儲庫中的所需文件一起提取到正確的存儲庫中。 git filter-branch
和--tree-filter
或--index-filter
從提取的分支中刪除除所需文件之外的所有內容。 git rebase
或將整理后的提交重新應用到右側存儲庫中的相應主分支上。 您可以在重新編寫的分支上嘗試使用git format-patch
,以便為在該repo上不正確地進行的最后一次提交生成補丁。
看到這個問題 。
然后,您將在正確的倉庫上應用這些路徑。
你會reset --hard
你當前的分支,以擺脫額外的提交。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.