簡體   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