[英]Can I use Git Rebasing when the remote Master Branch is protected from direct pushing?
[英]Pushing branch when rebasing from master
我們是一個由5人組成的開發團隊。 我們有一個主分支,每當我們處理新事物時,我們就會創建一個新的分支。 當我們完成更改后,我們將分支推送到GitLab並執行合並/拉取請求,以便它再次與主服務器合並。
我的機器上有一個分支,我已經工作了大約一個星期。 在那一周,主人有變化,所以我在我的分支上執行此命令:
git rebase master
一旦完成,我這樣做是為了推動我的新分支:
git push origin some-branch
當我這樣做時,我收到此錯誤:
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
我做它的建議,我做一個git pull origin some-branch
。 現在,我更改的文件已使用===HEAD>
文本進行了修改。 所以我解決了這個問題,並重新開始工作。
然后,我嘗試再次執行git push origin some-branch
,並出現完全相同的錯誤。
為了使它更清晰,某些分支返回的git status
:
# On branch some-branch
# Your branch and some-branch have diverged,
# and have 3 and 3 different commits each, respectively.
我怎么能解決這個問題,或者我做錯了什么?
你應該強制推動你的分支,而不是合並更改。也就是說,在你重組之后使用git push -f
。
當你執行rebase時,你告訴Git將master的歷史重放到你的分支上,然后,你的分支的提交需要在重放的工作之后到位。
這改變了該分支的歷史記錄 ,這解釋了為什么你在git status
看到分歧消息,但這完全是故意的。 但是,在與遠程分支合並時,您的歷史很混亂; 它現在包含應該永遠不存在的合並提交。
下次使用強制推送,但要確保您已重新設置的工作通過測試,無論是冒煙測試,單元/集成測試,還是其他。
您可以嘗試為本地更改創建一個存儲區,然后再進行拉動...
$ git commit -m "your commit"
$ git stash
$ git pull
$ git stash apply
$ git push
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.