所以這是你需要知道的:
- 存盤庫 A 是一個大型遺留存盤庫,在其他幾個專案中用作 GitHub Enterprise 上的子模塊。
- 在將 Repo A 遷移到 GitLab 時,我們發現歷史深處的一些提交的資料已損壞并導致遷移失敗。
- 為了洗掉這些損壞的檔案,我們必須圍繞損壞的提交重寫 git 歷史記錄。
- Repo B 使用 Repo A 作為子模塊。
我一直在嘗試通過執行以下操作來更新 Repo B:
- 從 GitLab 克隆回購 B
- 更新 .gitmodules 中的路徑以指向 Repo A 的新 (GitLab) 位置
git submodule init- 確認 Repo A 的 url 正確并指向新的 (GitLab) Repo A
cd repo-b/repo-agit checkout $hash哪里$hash是我們過去指向的回購 A 中完全相同的提交,但是使用新的哈希,因為歷史被重寫了。
我不斷收到此錯誤:
fatal: reference is not a tree: 01b517847508dd5942887950e4a5ab1468bb21b4
我不知道我做錯了什么,我看到的每個答案似乎都暗示我應該能夠檢查子模塊中的特定哈希,然后將該更改提交到 repo。
另外,為了澄清起見,我確實通過在新的(GitLab)回購 A 中檢查它來確認我的哈希是正確的并且存在,所以它就在那里。
uj5u.com熱心網友回復:
我找到了解決辦法!我無法解釋它為什么起作用,但它修復了錯誤。
我之前曾git submodule update在第 3 步和第 5 步之間嘗試過,但這似乎不起作用。然而:
git submodule init
git submodule update --checkout
實際上是否允許哈希簽出在子模塊中成功。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/484667.html
下一篇:JSON統一加密的最佳方法?
