我創建了一個遠程倉庫的本地副本。由於一些舊的錯誤提交數據導致麻煩,我不得不重寫(過濾分支)本地回購歷史記錄。所以現在我有一個遠程回購的克隆,除了提交哈希都是不同的。沒有歷史的Git pull
有沒有辦法讓本地回購協議仍然可以與遠程協同工作,以便從中提取未來的提交?它永遠不會推動,這不是一個問題。如果我運行git pull,它會嘗試將其全部原始歷史記錄拉出來,這是不需要的,並且會重新破壞本地回購。
我創建了一個遠程倉庫的本地副本。由於一些舊的錯誤提交數據導致麻煩,我不得不重寫(過濾分支)本地回購歷史記錄。所以現在我有一個遠程回購的克隆,除了提交哈希都是不同的。沒有歷史的Git pull
有沒有辦法讓本地回購協議仍然可以與遠程協同工作,以便從中提取未來的提交?它永遠不會推動,這不是一個問題。如果我運行git pull,它會嘗試將其全部原始歷史記錄拉出來,這是不需要的,並且會重新破壞本地回購。
如果你關心的只是拉動,那麼是的。你可以做的是獲取遠程倉庫。然後確定遠程回購中與您最新的本地提交相匹配的提交。然後將該遠程提交合併到本地,並使用-s ours
標誌(設置ours
策略)。這將產生一個將兩個歷史記錄連接在一起的合併提交,同時只使用本地歷史記錄中的樹(因此沒有合併衝突)。
通過此合併,您現在可以安全地從遠程存儲庫中獲取git pull
,並且它只會嘗試合併提交中比您剛創建的虛擬合併更新的提交。
請注意,您仍然必須保留遠程回購的整個歷史記錄,並且可以將其作爲您的虛擬合併的第二個父級訪問。但它不會影響你的本地樹。
因此,這是錯誤的提交數據,並且您仍然希望從上游接收更新,但是您*不希望推送「良好」提交數據?你能解釋一下你的情況嗎?是什麼讓歷史如此糟糕以至於如果你從不推動,你需要重寫它? –
我不控制遠程回購,它是一個公共項目。維護它的人不希望由於某種原因修復不良歷史。當我想將項目推送到新的遠程設備時,這些無效的名稱/電子郵件會導致一些舊的提交出現問題。 – Ryan
對過時的名稱/電子郵件的適當迴應是使用郵件地圖文件,而不是僞造歷史記錄。如果你能提供幫助,歷史應該永遠不會被重寫。 –