我使用兩臺遠程服務器。Git不同的歷史在多個遙控器
是否有可能創建不同的歷史起點?
例如:
Remote 1: commit1 -> commit2 -> commit3 -> commit4
Remote 2: commit3 -> commit4
在這種情況下,我想commit3能夠在遠程2.
我使用兩臺遠程服務器。Git不同的歷史在多個遙控器
是否有可能創建不同的歷史起點?
例如:
Remote 1: commit1 -> commit2 -> commit3 -> commit4
Remote 2: commit3 -> commit4
在這種情況下,我想commit3能夠在遠程2.
在你描述的情況下,回購2是一個「淺」存儲庫。如果你有回購1
A -- B -- C -- D
,那麼你可以創建回購2作爲
git clone --mirror --depth=2 --no-single-branch file://localhost/path/to/repo1 repo2
,現在回購2
C -- D
在這種回購可以看到C
有父,並且您可以看到B
的SHA ID列爲C
的父項;但承諾B
本身(及其歷史)不存在。
我使用了mirror
,因爲您將其描述爲第二個遙控器。因此,這使它裸露,並將分支設置爲本地分支,而不是遠程分支引用。您可以創建一個不是鏡像的淺表回收(有或沒有--bare
),具體取決於您的需求。真正的關鍵是depth
段。
默認情況下只depth
拷貝單個分支和配置回購僅僅是特定分支對裁判獲取更新。 no-single-branch
恢復映射所有引用的正常行爲。也就是說,如果在Repo1中有大量或複雜的歷史記錄,那麼準確地包含您想要的內容可能並不像我在這裏展示的那樣容易。
請注意,如果您使用本地路徑,depth
將被忽略;這就是爲什麼我使用上面的網址file://
。
這絕對是一個特例。提交的身份對其完整歷史進行編碼(這是查看爲什麼C
必須「知道」其父母SHA ID的一種方式),因此通常具有不同的歷史意味着在回購中具有不同的提交(可能碰巧具有類似的TREE
) 1比回購2;所以他們不能共存作爲一個單一的,連貫的本地回購的遙控器。但在特定的情況下,你只是想排除最早的歷史,現代git提供了這個解決方案。
你可以,如果不是你想要的歷史起點在同一本地存儲庫上執行此操作。
如果您克隆存儲庫兩次,您可以。保留第一個遠程的第一個克隆,第二個克隆將保留第二個遠程。 在第二個克隆中,您需要重寫歷史記錄:https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History
這是我唯一想到的解決方案。您將無法爲同一個存儲庫(本地/遠程)創建不同的歷史記錄。