2012-01-17 98 views
3

我有一個名爲「A」的存儲庫,需要在不丟失歷史的情況下將其移入存儲庫「B」,這就好像它總是在「B」上一樣。將具有歷史記錄的git存儲庫導出到另一個存儲庫中

請注意,我不需要移動文件夾或存儲庫的一部分,而是將完整的存儲庫內容移動到另一個存儲庫中,基本上將存儲庫「A」重命名爲「B」而不會丟失「A」。

任何幫助將不勝感激。

+0

爲什麼不使用簡單的git clone?您始終關注完整的歷史......, – madflow 2012-01-17 20:55:42

+0

問題是,遠程回購已被清除,因此我有一個本地副本「A」,我希望在不丟失歷史的情況下推入「B」。 – Flupkear 2012-01-17 21:13:42

+0

Flupkear,看看下面的@ yuri的答案,那很簡單,效果很好。 – 2014-02-11 19:08:25

回答

2

將A添加爲B上的遠程。在repo B中執行git fetch remote_A,您將導入整個歷史記錄。

+0

問題是,「A」的本地副本不再代表遠程版本,這是我有一個本地副本「A」,將完全擦除,如果我做一個「混帳拉」,所以我想保存本地「A」之前被抹去另一個回購,但不知道如果可能的話。 – Flupkear 2012-01-17 20:57:13

+0

這沒關係。當您執行提取操作時,所有分支將以「remate_A」開頭。如果你喜歡,請使用它們。 Git日誌 - 所有將顯示它們,你可以grep某些事情。如果您在回購B中沒有任何東西,那麼文件副本就足夠了。 – 2012-01-17 21:05:03

+0

謝謝,我仍然試圖讓我的頭在附近。如果我理解得很好,我必須在新文件夾中做一個「B」的克隆,將「A」複製到「B」(沒有我想要的.git文件夾)並且只是提交/推送。 – Flupkear 2012-01-17 21:12:40

1

Git倉庫只是文件夾,你可以複製A到B到「重命名不失」 A.

+0

我試過了,只需將「A」複製到「A-copy」,然後執行git-init,git add-remote ,git commit,git push,但失敗。我在git上編輯過.config文件,並且這兩個版本都存在,如果我只刪除「A」定義並再試一次就行了? – Flupkear 2012-01-17 21:02:06

+0

@Flupkear什麼是'git add-remote'?給出確切的步驟並編輯成你的問題 – manojlds 2012-01-17 21:08:23

+0

對不起,我的意思是「git remote add」,但這是無關緊要的,因爲它只是我做的一個測試。如果我理解的很好,只需將空白的「B」回購克隆到一個文件夾中,並將「A」文件夾內容複製粘貼到「B」即可。 – Flupkear 2012-01-17 21:16:50

1

只需複製所有文件,包括隱藏.git目錄,從迪拉到DIRB。

然後打開DirB/.git/config並將遠程重做位置從RemoteRepoA更改爲RemoteRepoB所在的位置。

從內部DIRB

然後只是做:那麼

git push origin master 

所有與歷史碼應加RemoteRepoB。我只是在GitHub上做了2個回購。

+0

+1我設法做到了這一點 - 這看起來是所有創建/應用補丁等最簡單的方法,它爲我工作,所有看起來完好無損 - 我不知道,如果它有任何缺點。 – 2014-02-11 19:07:20

相關問題