git教學 github教學 - 如何更新GitHub分叉存儲庫?





8 Answers

從2014年5月開始,可以直接從GitHub更新分支。 這仍然適用於2017年9月, 它將導致臟的提交歷史。

  1. 在GitHub上打開你的fork。
  2. 單擊Pull Requests
  3. 單擊New Pull Request 。 默認情況下,GitHub會將原始文件與您的fork進行比較,如果您沒有進行任何更改,則不應該進行任何比較。
  4. 如果看到該鏈接,請單擊切換基礎 。 否則,手動將基礎分支下拉到您的分叉,並將分叉下移到上游。 現在GitHub會將你的分叉與原始分析進行比較,你應該看到所有最新的變化。
  5. 創建拉取請求並為拉取請求指定可預測的名稱(例如, Update from original )。
  6. 向下滾動到合併拉取請求 ,但不要點擊任何內容。

現在您有三個選項,但每個選項都會導致一個不太乾淨的提交歷史記錄。

  1. 默認情況下會創建一個醜陋的合併提交。
  2. 如果單擊下拉列表並選擇“Squash and merge”,則所有乾預提交將被壓縮為一個。 這通常是你不想要的。
  3. 如果單擊Rebase並合併 ,所有提交都將“與”你,原始PR將鏈接到您的PR,GitHub將顯示This branch is X commits ahead, Y commits behind <original fork>

所以,是的,您可以使用GitHub Web UI保持您的repo更新其上游,但這樣做會玷污您的提交歷史記錄。 堅持命令行 - 這很容易。

clone new profile

我最近分叉了一個項目並應用了幾個修復程序。 然後我創建了一個拉取請求,然後被接受。

幾天后,另一位撰稿人做出了另一項改變。 所以我的fork不包含那個改變。

我怎樣才能把這個改變變成我的叉子? 當我進行進一步的更改時,是否需要刪除並重新創建我的分支? 或者是否有更新按鈕?




很多答案最終會在父存儲庫之前移動fork 一次提交 。 這個答案總結了here找到的步驟here它們將您的fork移動到與父級相同的提交

  1. 將目錄更改為本地存儲庫。

    • 如果你不是git checkout master切換到master分支
  2. 將父級添加為遠程存儲庫, git remote add upstream <repo-location>

  3. git fetch upstream發出git fetch upstream
  4. 發出git rebase upstream/master

    • 在此階段,您通過鍵入git status來檢查是否提交了要合併的內容
  5. 發出git push origin master

有關這些命令的更多信息,請參閱here




前言:您的fork是“origin”,您分叉的存儲庫是“上游”。

讓我們假設您已經使用以下命令將叉子克隆到計算機:

git clone git@github.com:your_name/project_name.git
cd project_name

如果給出了那麼你需要繼續這個順序:

  1. 將“upstream”添加到克隆的存儲庫(“origin”):

    git remote add upstream git@github.com:original_author/project_name.git
    
  2. 從“上游”獲取提交(和分支):

    git fetch upstream
    
  3. 切換到fork的“master”分支(“origin”):

    git checkout master
    
  4. 存儲“主”分支的更改:

    git stash
    
  5. 將“上游”的“主”分支中的更改合併到“原點”的“主”分支中:

    git merge upstream/master
    
  6. 解決合併衝突(如果有)並提交合併

    git commit -am "Merged from upstream"
    
  7. 將更改推送到fork

    git push
    
  8. 取回你的藏匿變化(如果有的話)

    git stash pop
    
  9. 你完成了! 恭喜!

GitHub還提供了有關此主題的說明: help.github.com/articles/syncing-a-fork










我用這一行更新了我的分叉回購:

git pull https://github.com/forkuser/forkedrepo.git branch

如果您不想將另一個遠程端點添加到項目中,請使用此方法,如此處發布的其他解決方案。




Android Studio現在已經學會了使用GitHub fork存儲庫(您甚至不必通過console命令添加“上游”遠程存儲庫)。

打開菜單VCSGit

並註意最後兩個彈出菜單項:

  • 重新啟動我的GitHub fork

  • 創建拉取請求

試試吧。 我使用第一個來同步我的本地存儲庫。 無論如何,在您單擊“Rebase my GitHub fork”之後,可以在Android Studio中訪問父遠程存儲庫(“上游”)的分支,您將能夠輕鬆地使用它們。

(我使用帶有“Git集成”和“GitHub”插件的Android Studio 3.0。)




這取決於您的存儲庫的大小以及您如何分叉它。

如果它是一個非常大的存儲庫,您可能希望以特殊方式管理它(例如丟棄歷史記錄)。 基本上,您可以獲得當前版本和上游版本之間的差異,提交它們然後櫻桃回歸主人。

試試看這個 。 它描述瞭如何處理大型Git存儲庫以及如何使用最新更改來上游它們。




Related


Tags

git   github