繁体   English   中英

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

[英]Rebasing local Git branch before push to remote

遥控器: 原产地

$ 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

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

你想用

git pull --rebase origin master

将参数git pull必须是可选的远程, 以及遥控器上的一个可选的Refspec或参考/分支:

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

new_feature不会起作用,因为它是一个地方分支,另外,它没有任何意义的rebase ,因为你想传递一个修订rebase分支new_feature 之上 如果你有new_feature查出来,那么它的理解/隐含的意思就是你要的分支rebase ,这是怎么rebase工作正常。

创建“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”合并。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM