2014-12-13 73 views
0

我將GitHub項目分叉到我自己的存儲庫中。我的存儲庫只包含一個「主」分支,我在其中提交自己的代碼。分叉項目也只包含一個「主」分支。Git:與原始分叉主同步分支

有時,我發現並修復了原始代碼中的一些錯誤,我想創建一個拉請求,以便原始項目的開發人員可以添加修補程序。但是,我不想在此請求中添加所有我更改的代碼,只是修復。

我認爲在這裏繼續的正確方法是在我的資源庫中創建一個新分支,將其與原始分叉主同步,提交修復並創建請求。我的問題是:我如何創建一個分支並擺脫我所有的提交與分叉主同步?

另一方面,這實際上是這樣做的最實際的方法嗎?

+0

小心解釋downvote? – ChronoTrigger 2014-12-14 03:31:49

回答

1

我可以建議接下來的步驟用於解決問題的方法:

  1. 配置遠程地址到叉形主

git remote add upstream <url_to_forked_project>;

  • 取來自上游的所有變化
  • git fetch upstream;

  • 創建新修復分支和下載分叉主
  • git checkout upstream/master -b fix;

  • 申請你固定
  • git cherry-pick <commit_hash>;或以某種方式進行新的提交

  • 推更改到遠程的github庫
  • git push origin fix:fix;

    git branch -d fix; - 刪除未使用的分支

  • 之後,您可以從遠程創建新的請求修復分支
  • +0

    謝謝,它工作。步驟5中的'fix:fix'和'fix'有什麼區別? – ChronoTrigger 2014-12-14 03:30:33

    +1

    當您需要爲遠程分支定義另一個名稱時,它是更復雜的語法。您可以閱讀這篇文章以獲得更多信息'如何運行PUSH命令'https://help.github.com/articles/pushing-to-a-remote/ – 2014-12-14 14:05:02

    2

    您可以使用git revert命令創建一個分支並恢復所有提交,您希望擺脫該分支。

    然後sync forked repository獲取在上游存儲庫中完成的所有更改。