遥控器:起源
$ 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 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
to的参数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
,正如纸杯蛋糕建议的那样,你将以
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”进行合并。