在推送到远程之前重新定位本地Git分支

时间:2013-09-04 01:28:04

标签: git git-rebase git-push

遥控器:原产地

$ git branch
* master

$ git checkout -b "new_feature"

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

$ git branch
master
* new _feature

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

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

2 个答案:

答案 0 :(得分:3)

您想要使用

git pull --rebase origin master

arguments to git pull必须是可选的遥控器,并且该遥控器上的可选refspec或参考/分支

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

new_feature因为它是本地分支而无法工作,此外,它对rebase没有意义,因为您想要将修订版传递给rebase分支new_feature 位于 之上。如果您已new_feature已签出,则表示您理解/隐含了您想要rebase的分支,rebase正常工作的方式

答案 1 :(得分:2)

创建“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

,正如Cupcake建议的那样,你将以

结束
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”之上重新定位。这些不是您的原始提交,但提交已更改为适合“新”“origin / master”。

执行rebase时,您可能会遇到合并冲突,因为在远程主服务器上进行的更改可能会与您的更改发生冲突。

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

这也会将标签“origin / master”移动到“new_feature”的级别。如果您还想让您的本地“主人”在轨道上,那么您必须检查它并与“origin / master”合并。