6

遥控器:起源

$ git branch
* master

$ git checkout -b "new_feature"

现在我在“new_feature”分支上做了几次提交,并希望在更新后将其推送到原点。

$ git branch
master
* new _feature

$ git pull --rebase origin new_feature    
$ git push origin new_feature

这是在推送到远程之前更新本地分支的正确方法吗?

4

2 回答 2

4

你想用

git pull --rebase origin master

to的参数git pull必须是一个可选的遥控器,以及该遥控器上的一个可选的 refspec 或引用/分支

git pull [options] [<repository> [<refspec>…]]

new_feature不起作用,因为它是本地分支,此外,它对 , 没有意义rebase,因为您想将修订传递. 如果您已签出,则可以理解/暗示这是您想要的分支,这就是通常的工作方式。rebasenew_feature new_featurerebaserebase

于 2013-09-04T01:32:28.023 回答
3

创建“new_feature”分支后,您将拥有类似的状态

o   <master> <origin/master> <new_feature>  most recent commit
|
...

然后,在将更改提交到本地分支后,您的存储库将如下所示

o   <new_feature>   your last commit
|
o   your first commit
|
o   <master> <origin/master>    most recent commit
|
...

做一个

git pull --rebase origin master

,正如纸杯蛋糕建议的那样,你将以

o   <new_feature>   your last commit
|
o   your first commit
|
o   <origin/master> something meanwhile commited on remote master
|
o   <master>    most recent commit
|
...

您的更改基于“origin/master”之上。这些不是您的原始提交,而是更改为适合“新”“原点/主”的提交。

执行 rebase 可能会导致合并冲突,因为在远程 master 上所做的更改可能会与您的更改发生冲突。

但是因为“new_feature”现在“在”“origin/master”之上,所以你可以推送到远程主机。

这也会将标签“origin/master”移动到“new_feature”级别。如果你还想让你的本地“master”走上正轨,那么你必须检查它并与“origin/master”进行合并。

于 2013-09-04T20:12:32.013 回答