推送到远程之前重新设置本地Git分支

7

远端: origin


$ 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个回答

4

你想使用

git pull --rebase origin master

git pull的参数必须是可选的远程仓库和可选的引用或分支在该远程仓库上:

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

new_feature不会起作用,因为它是一个本地分支,在使用rebase时也没有意义,因为你想要将修订版本传递给rebase,以便在new_feature分支的顶部进行重定位。如果你已经查看了new_feature,那么可以理解/隐含地认为这就是你想要rebase的分支,这是rebase正常工作的方式。


我不理解这个。我的理解是,由于我必须将new_feature分支推送到远程,所以我想在推送之前更新new_feature。因此,我目前正在使用new_feature分支进行工作。那么,gir pull --rebase origin master如何更新“new_feature”?那会更新主分支,对吗?很抱歉,但出于某种原因,我没有理解最后一部分。 - script_kiddie
你需要澄清你的问题。你是想用origin中对new_feature所做的更改来更新它吗?还是你是想用originmaster所做的更改来更新它? - user456814

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
|
...

Doing a

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"进行了变基。这些不是您的原始提交,而是已更改以适合于"new" "origin/master"。

进行变基可能会导致合并冲突,因为在远程主分支上所做的更改可能会与您的更改发生冲突。

但是,由于"new_feature"现在是"根据" "origin/master",因此您可以将其推送到远程主分支。

这也将使标记"origin/master"移动到"new_feature"的级别。如果您还想跟踪本地"master",则需要将其提取并使用"origin/master"进行合并。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接