[英]Moving patches in git repository with different directory structure
抱歉,標題有些冗長和混亂。 我們有一個具有以下目錄結構的git存儲庫(根代表存儲庫根;名稱是虛構的):
/
/dir1/
/dir2/
/dir2/subdir1/
/dir2/subdir2/
一個團隊同事用/dir2/subdir1
的副本創建了一個新的git存儲庫,即/dir2/subdir1
成為了新存儲庫的根。 我們在該新存儲庫中做了一些(〜15)次提交,然后我們決定要在舊存儲庫中復制新提交。
什么是執行此操作的最佳方法?
當然,我們可以從新存儲庫中創建一個補丁並將其作為舊提交中的單個提交應用,但是這樣做會丟失歷史的詳細程度。
在此期間,舊存儲庫中沒有觸及/dir2/subdir1
提交,因此絕對不應有沖突。
解決方案是使用git format-patch
和git am
。 在新的存儲庫中,我做了一個
git format-patch $revision
,其中$revision
是新存儲庫中與舊存儲庫狀態相對應的修訂,即添加/dir2/subdir1
的修訂。 這大約創建了15個文件,其中包含每個提交的補丁。
然后,我移至舊的存儲庫,並使用git am
應用剛剛創建的補丁。 我只需要指定必須應用這些補丁的目錄:
git am --directory dir2/subdir1 $patches
,其中$patches
是在上一步中創建的文件。
現在,提交已從新存儲庫移到舊存儲庫,我很高興!
選項1 :分別創建每個提交git format-patch
( git format-patch
),然后按順序應用於舊倉庫
選項2 :將新存儲庫添加為舊存儲庫的遠程存儲庫,獲取分支,在本地存儲庫中檢出該分支,並選擇所有提交(使用gitk
則更容易)。
選項3 :將新存儲庫添加為舊存儲庫的遠程存儲庫,獲取分支,並將其與舊存儲庫中的分支合並。
希望能幫助到你!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.