簡體   English   中英

Git-推后功能分支變基

[英]Git - push after feature branch rebase

我有一個git repo,目前正在Feature分支工作。

我有這樣的事情:

dev: ---1--2--3--
                \
fb:              --f1

當我在功能分支上工作時,發生了更多對dev的提交,因此我重新建立了基礎,現在我的提交已更改

dev: ---1--2--3--4--5----
                      \
fb:                    --f1(another)

所以現在我不能將其推送到遠程功能分支,因為SHA無效。 不能用力推動 ,因為它被服務器禁止。

那么,在這種情況下正確的工作流程是什么,我該怎么辦?

我的建議是merge remote/dev into local/fbdelete remote/fb然后使用git歷史記錄推送local / fb。

  • 撤消變基, 並將remote / dev合並到local / fb中

     # undo rebase: reset your local/fb with remote/fb $ git checkout fb $ git reset --hard origin/fb # merge and push to remote/fb $ git pull origin dev $ git push origin fb 
  • 刪除remote / fb分支,然后使用歷史記錄推送本地/ fb

     $ git push origin --delete fb # delete remote/fb branch $ git push origin fb 

例如,您可以執行以下一項操作:

  • 刪除遠程分支,然后推送本地分支
  • 將本地分支推送到新命名的遠程分支
  • 撤消變基並改為合並
  • 說服存儲庫托管者允許強制推送,然后強制推送本地分支

這取決於公司/團隊的總體工作流程。 但是,他們可能還沒有完全考慮過。

防止在所有分支上強制推送,並要求重新設置要素分支是矛盾的。 兩者都是工作流程的合理組成部分,但不是同一工作流程。

兩種選擇

如果必須在公司內部拒絕強行推入功能分支,那么后果就是您無法為這些功能分支建立基礎。 您將需要執行非快進合並。

如果您的公司希望您重新建立功能分支的基礎,則他們必須使存儲庫接受對這些功能分支的強制推送。 git拒絕只在某些分支而不是所有分支上強制推送是很容易的。

馬虎的解決方法

當然,您每次重新設置基准時都可以刪除功能分支,並且每次都可以創建一個新分支。 這很草率,並且會導致大量不必要的分支。 您的公司/團隊應仔細考慮其工作流程策略,以免發生這種情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM