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

Git 如何将远程主机合并到本地分支,git,branch,pull,Git,Branch,Pull,我有一个项目的本地分支(“configUpdate”),它是我从其他人的项目中派生出来的,我对它做了大量的更改,希望将他们所做的更改合并到我的本地分支中 我试过了 git pull --rebase origin configUpdate 但它没有抓住最新的变化-我如何才能合并这两个?(另外,为了获得额外积分,我对功能分支的pull--rebase命令做了什么?(例如configUpdate)运行: 或简称: git pull --rebase 为什么这样做: git merge bra

我有一个项目的本地分支(“configUpdate”),它是我从其他人的项目中派生出来的,我对它做了大量的更改,希望将他们所做的更改合并到我的本地分支中

我试过了

git pull --rebase origin configUpdate

但它没有抓住最新的变化-我如何才能合并这两个?(另外,为了获得额外积分,我对功能分支的
pull--rebase
命令做了什么?

(例如
configUpdate
)运行:

或简称:

git pull --rebase

为什么这样做:

  • git merge branchname
    从分支
    branchname
    获取新提交,并将其添加到当前分支。如有必要,它会自动在顶部添加“合并”提交

  • git-rebase-branchname
    从分支
    branchname
    获取新的提交,并将它们插入更改的“下方”。更准确地说,它修改当前分支的历史记录,使其基于
    branchname
    的提示,并在此基础上进行任何更改

  • git pull
    git fetch基本相同;git合并源代码/主代码

  • git pull--rebase
    git fetch基本相同;git rebase origin/master

那么,为什么要使用
git-pull--rebase
而不是
git-pull
?下面是一个简单的例子:

  • 您开始使用新功能

  • 当您准备好推送更改时,其他开发人员已经推送了几个提交

  • 如果您
    git pull
    (使用merge),除了自动创建的合并提交之外,您的更改将被新提交掩埋

  • 如果您改为
    git pull--rebase
    ,git会将您的主机快速转发到上游主机,然后在上面应用您的更改

我发现它是:

$ git fetch upstream
$ git merge upstream/master

切换到您当地的分支机构

>git签出配置更新

将远程主机合并到您的分支

>git rebase主配置更新

如果有任何冲突,请更正它们,并对每个冲突的文件执行以下命令

>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签出
git合并
如果你像我一样是初学者,这里有一篇关于git merge vs git rebase的好文章。
这适用于使用Visual Studio的开发人员

  • 单击Git菜单>管理分支>远程/源
  • 右键单击主节点>将“源节点/主节点”合并到[本地分支]
  • 注意:在最近的git存储库中,master被称为main


    我在正确的分支上执行了此操作,但我仍然可以看到我的本地文件与原始项目的远程主分支之间的差异(尽管它说所有内容都是最新的!)也许我设置的项目不正确?有什么办法可以检查吗?@Martyn:区别应该是你的本地变化。创建远程分支的另一个分支,并检查该分支是否具有正确的文件内容。我知道这是一个旧的答案,但请注意,您可能更喜欢进行合并,而不是重新基础。如果您以后必须合并到已经有一些更改的远程回购,则不希望执行重新基础。如何(假设您当前正在进行分支configUpdate)。。。  git pull与git fetch基本相同;git合并源/主。  @克丽丝:从什么意义上说这不是真的?假设起点/船长为上游?或者git pull已经改变了吗?所以,如果您还没有弄清楚,那么您的
    pull--rebase
    无法工作,因为
    origin
    指向您的fork。如果您执行了git pull--rebase upstream/master,它就会起作用。请尝试:git merge origin/masterI缺少一个获取,这个答案为我解决了问题。不要害怕使用rebase而不是merge。如果您觉得这个问题中存在差距,请花一些时间调查差异可能的重复项
    git checkout <local_branch>
    git merge <master>