[英]Merging between forks in GitHub
我分叉了一個 GitHub 存儲庫。 然后我對我的叉子進行了一些更改。 然后原始存儲庫合並了我的更改和其他一些更改。 現在,我想合並我遺漏的那些更改。 我嘗試了一個簡單的 pull 和 push,但這產生了我的重復提交。 最好的方法是什么?
您可能對每個存儲庫都有一個“遠程”。 您需要從一個遙控器拉動並推到另一個遙控器。
如果您最初是從 fork 克隆的,那么該遙控器將被稱為“原點”。 如果您尚未添加它,則需要將另一個存儲庫添加為另一個遠程存儲庫:
git remote add <shortname> git://github.com/<ownerName>/repo.git
全部設置完成后,您確實應該能夠(github 將默認分支從master
更改為main
,根據需要進行更改)
git pull <shortname> master
git push origin
請記住, git pull
只不過是一個按該順序執行git fetch
和git merge
的宏。 您只需要從另一個存儲庫中獲取提交列表,然后將他的分支合並到您的樹中。 合並應該對你在兩個分支上的提交做正確的事情。
當然,GitHub 以其永恆的魅力為您提供了一條捷徑。 如果您完全合並到另一側,您的存儲庫分支上有一個“快進”按鈕,您可以使用它來趕上您的分支。
所以上面接受的答案對我來說並不完美。 也就是說,它在工作時似乎失去了原始 github 作者的鏈接,然后似乎不再工作了。 我認為問題在於答案遺漏了遠程名稱和分支之間的 / 。 所以它會從遠程獲取一個名為 master 的分支,但隨后無法對它做任何事情。 不太確定為什么。
這是github 從他們的網站推薦的方式。
克隆分叉存儲庫后,您確實需要像之前的答案所說的那樣添加指向原始存儲庫的遠程存儲庫。 他們喜歡稱其為上游,但這並不重要。
git remote add upstream git://github.com/octocat/Spoon-Knife.git
然后你取
git fetch upstream
你會看到可用於合並的版本
From git://github.com/octocat/Spoon-Knife.git
* [new branch] gh-pages -> upstream/gh-pages
* [new branch] master -> upstream/main
然后你只需要選擇你想要合並的分支。請注意,這些不是本地分支,它們存儲在遙控器下。 但是如果您沒有名為 upstream/master 的本地分支(這是允許的),您應該可以與下面的行合並:
git merge upstream/main
或者,您可以使用以下行快捷方式提取/合並(至少在初始提取之后):
git pull upstream/main
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.