簡體   English   中英

合並缺少提交歷史記錄的git存儲庫到保留歷史記錄的存儲庫

[英]Merge a git repository lacking commits history to a repository that preserved history

下載了C ++項目的源代碼,而不是在git://www.calatk.org/calatk.git克隆其git存儲庫

使用此源代碼(沒有git歷史記錄),我創建了一個git repo,處理了一段時間,然后將所有工作/分支推送到https://github.com/agirault/CalaTK上的 github。

我現在想發出拉取請求,以將我的代碼合並到 calatk.git上的原始git存儲庫中。

我想知道如何才能做到這一點,因為我的存儲庫中沒有以前提交的內容。 從那以后就不應該更新calatk.org上的此存儲庫,這意味着它們的最后一次提交將與我在github上可用的第一次提交相同。

假設您不介意將發布的GitHub存儲庫替換為包含原始項目的歷史記錄†的存儲庫,請嘗試以下操作:

  1. 將上游存儲庫添加為第二個遠程數據庫:

     git remote add upstream <clone-url> 
  2. 從上游獲取:

     git fetch upstream 

    這將生成新的分支指針,包括upstream/master upstream/master不應與您現有的提交共享歷史記錄。 也就是說,您將有兩個root提交:一個來自上游項目,另一個來自您的fork。

  3. 將您的工作基於上游提交(假設我們只需要擔心master ):

     git checkout master git rebase upstream/master 

    此時,您應該只有一個根提交:上游項目中的一個。 您原來的根提交的哈希(現在不再是根提交)應與上游項目中顯示的哈希匹配( 3cee904 )。

    您可以使用git show 3cee904來確保提交正確。

  4. 強制將您的新歷史記錄推送到GitHub:

     git push --force origin master 
  5. 根據他們的貢獻准則將更改提交到上游存儲庫。

    由於它不在GitHub或BitBucket上,因此他們不太可能接受拉取請求(這是專有功能)。 不過,您應該可以請求推送訪問或使用git format-patch 上游維護者也可以從您的公共GitHub存儲庫中fetch

重要說明:如果您在GitHub項目上有合作者,這可能不是最佳選擇。 通常不建議在Git中修改共享提交。 我只推薦它,因為聽起來您的GitHub存儲庫實際上是一個個人存儲庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM