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

我试过了

git pull --rebase origin configUpdate

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


当前回答

我发现它是:

$ git fetch upstream
$ git merge upstream/master

其他回答

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

git fetch
git rebase origin/master

或者更短的形式:

git pull --rebase

为什么这样做有效:

git merge branchname takes new commits from the branch branchname, and adds them to the current branch. If necessary, it automatically adds a "Merge" commit on top. git rebase branchname takes new commits from the branch branchname, and inserts them "under" your changes. More precisely, it modifies the history of the current branch such that it is based on the tip of branchname, with any changes you made on top of that. git pull is basically the same as git fetch; git merge origin/master. git pull --rebase is basically the same as git fetch; git rebase origin/master.

为什么要用git pull。rebase而不是git pull呢?这里有一个简单的例子:

你开始开发一个新功能。 当您准备提交更改时,其他开发人员已经提交了几次。 如果您使用git pull(使用merge),除了自动创建的合并提交外,您的更改将被新的提交隐藏。 如果你使用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

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

点击Git菜单>管理分支> remotes/origin 右键单击master >合并'origin/master'到[本地分支]

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