Answers:
在您的功能分支(例如configUpdate
)中运行:
git fetch
git rebase origin/master
或更短的形式:
git pull --rebase
工作原理:
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,它将把您的master快进到上游,然后在顶部应用您的更改。
我发现是:
$ git fetch upstream
$ git merge upstream/master
pull --rebase
就没有用,因为origin
它指向您的叉子。如果你这么做会奏效的git pull --rebase upstream/master
。
切换到本地分支
> git checkout configUpdate
将远程主服务器合并到您的分支机构
> git rebase主configUpdate
如果您有任何冲突,请更正它们,并对每个冲突的文件执行以下命令
> git add [path_to_file / conflicted_file](例如git add app / assets / javascripts / test.js)
继续改基
> git rebase-继续
git rebase似乎不适合我。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