我有一個項目的本地分支(「configUpdate」),我從別人的項目中分支出來,並且我已經完成了對它的一系列更改並希望合併他們對我的本地分支所做的更改。如何將遠程主機合併到本地分支
我已經試過
git pull --rebase origin configUpdate
,但它並沒有抓住最新變化 - 我該如何合併兩個? (也可加分我做了什麼與pull --rebase
命令?)
我有一個項目的本地分支(「configUpdate」),我從別人的項目中分支出來,並且我已經完成了對它的一系列更改並希望合併他們對我的本地分支所做的更改。如何將遠程主機合併到本地分支
我已經試過
git pull --rebase origin configUpdate
,但它並沒有抓住最新變化 - 我該如何合併兩個? (也可加分我做了什麼與pull --rebase
命令?)
我發現了它是:
$ git fetch upstream
$ git merge upstream/master
所以,如果你還沒有弄明白,你的'pull --rebase'不起作用,因爲'origin'指向你的叉子。如果你做了'git pull --rebase upstream/master',它會起作用的。 –
試試看:git merge origin/master – Chris
如何(假設您目前所分支的ConfigUpdate):
git fetch
git rebase origin/master
一言以蔽之:
git merge branchname
從分支branchname
獲取新的提交,並將它們添加到當前分支。如有必要,它會自動在頂部添加一個「合併」提交。
git rebase branchname
從分支branchname
獲取新的提交,並將它們插入到您的更改「下」。更確切地說,它修改了當前分支的歷史記錄,使其基於branchname
的提示,並對其進行了任何更改。
git pull
基本上與git fetch; git merge origin/master
相同。
git pull --rebase
基本上與git fetch; git rebase origin/master
相同。
那麼,爲什麼要使用git pull --rebase
而非git pull
?這裏有一個簡單的例子:
您開始研究一項新功能。
當您準備推送您的更改時,其他開發人員已推送了多個提交。
如果你使用git pull
(它使用合併),除了自動創建的合併提交之外,您的更改將被新提交掩蓋。
如果git pull --rebase
相反,git會快進你的主人向上遊的,然後適用於頂部更改。
切換到您當地的分行
> git的結帳的ConfigUpdate
合併遠程主你的分支
> GIT中底墊configupdate執行主
如果你有任何衝突,糾正它們併爲每個衝突的文件執行命令
> GIT中添加[文件路徑/ conflicted_file](例如git的添加應用程序/資產/ Java腳本/ test.js)
繼續變基
> git的變基--continue
不要害怕用rebase而不用合併 花點時間調查一下如果你覺得這個問題有差距 –
非常感謝。這個過程爲我工作。 – Fortisimo
混帳底墊中似乎沒有爲我工作。在git rebase之後,當我嘗試將更改推送到本地分支時,我不斷收到錯誤消息(「提示:由於當前分支的提示位於遠程對象的後面,因此更新被拒絕。」集成遠程更改(例如'git pull。 ..')在再次推動之前。「)甚至在git pull之後。最後爲我工作的是git merge。
git checkout <local_branch>
git merge <master>
如果你是一個像我這樣的初學者,這裏是一個關於git merge vs git rebase的好文章。 https://www.atlassian.com/git/tutorials/merging-vs-rebasing
的可能的複製[混帳:合併本地遠程分支(https://stackoverflow.com/questions/21651185/git-merge-a-remote-branch-locally) –