如何合并远程主机到本地分支

我有一个项目的本地分支(“configUpdate”),我已经从别人的项目中分叉,我已经对它做了大量的更改,并希望将他们所做的更改合并到我的本地分支。

我试过了

git pull --rebase origin configUpdate

但它没有抓住最新的变化-我如何将两者合并?(也是为了加分,我对pull --rebase命令做了什么?)

446433 次浏览

从你的特征分支(例如configUpdate)运行:

git fetch
git rebase origin/master

或者更短的形式:

git pull --rebase

为什么这样做有效:

  • git merge branchname从分支branchname获取新的提交,并将它们添加到当前分支。如果有必要,它会自动在上面添加一个“Merge”提交。

  • 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

切换到您本地的分支机构

> git checkout configUpdate

合并远程主机到您的分支

> git rebase master configUpdate

如果您有任何冲突,请纠正它们,并对每个冲突的文件执行该命令

> git add [path_to_file/conflicted_file](例如git add app/assets/javascripts/test.js)

继续变基

> git rebase—继续

Git rebase似乎对我不起作用。git改基后,当我试图将更改推到本地分支时,我一直得到一个错误(“提示:更新被拒绝,因为当前分支的尖端落后于远程分支。集成远程更改(例如:'少不要脸的拉…')然后再推。”)即使是在少不要脸的拉之后。最后对我有用的是git合并。

git checkout <local_branch>
git merge <master>
如果你和我一样是初学者,这里有一篇关于git merge和git rebase的好文章。 https://www.atlassian.com/git/tutorials/merging-vs-rebasing < / p >

这适用于使用Visual Studio的开发人员。

  1. 点击Git菜单>管理分公司;遥控器/来源
  2. 右键单击master >将“origin/master”合并到[本地分支]

注意:master在最近的git存储库中被称为main。

enter image description here