[請益] git rebase的問題

作者: VivianAnn (薇薇安安)   2022-03-15 12:31:11
各位好
本人在近來在公司需要將專案中某個pull request的commit統合成一個
下圖為pull request,本公司用的是bitbucket
https://ibb.co/6gWQPnf
我看了一些網路教學和youtube,仍然想不出解法。我的做法如下:
先在local的branch中執行git rebase -i HEAD~5
在interactive mode中將之前5個commits壓成一個
https://ibb.co/VDqvhxv
有時會執行完後會出現conflict。將conflict resolve後使用以下指令push到remote
git push <local_branch>:<remote_name> -f
然而,push 之後,不僅失敗,我看到的還是pull request被decline:
如果我要re-open這pull request,則會出現以下error:
https://ibb.co/sV8P4dW
我的mentor是和我說,如果bitbucket的pull request出現大變動時,會自動decline
必須要重新push最新的commit才能解開
請問版上有沒有大神能指點我如何合併bitbucket中遠端pull request的commit?
問題描述不清楚的地方我會再補充,謝謝!
作者: xxi511 (少北)   2022-03-15 12:38:00
Push -f ?
作者: godddddd (howudoing)   2022-03-15 12:55:00
整合一個commit squash 我都用這個
作者: ChiuTW (Chiu)   2022-03-15 12:57:00
push 後的錯誤訊息是什麼?
作者: wulouise (在線上!=在電腦前)   2022-03-15 13:03:00
一個一個應該用squash吧?不太建議rebase public
作者: acgotaku (otaku)   2022-03-15 13:09:00
用squash 他就會幫你自動內部rebase了
作者: ChiuTW (Chiu)   2022-03-15 13:26:00
所以 push 沒錯誤,只有 or 被拒絕,而且是說 merge 的 target branch 跟 source 一樣新?要不要檢查一下是不是 rebase 的時候出問題了?但是為什麼 rebase 過的 branch 可以推上去?應該要被 decline 才對另外 squash 出現 conflict 是不是有調整 commit 順序?還是 rebase 的頭跟 PR 裡的不一樣?如果直接 pull PR 裡的branch,直接 rebase,應該不會有衝突,這部分是怎麼做的?換句話說是怎麼把 PR 裡的 commit 撈下來的
作者: acgotaku (otaku)   2022-03-15 13:42:00
你要不要先開個branch把會衝突的先merge不然squash 後產生conflict 不是好事
作者: ChiuTW (Chiu)   2022-03-15 14:20:00
先都用 cli 不要用 vs code,才可以確定打的指令git pullgit rebase -i (不應該有衝突,有衝突的話可能是解衝突解錯)git push origin new_branch (推到新的 branch 不要推到原本的、不要用 -f)開新的 PR
作者: honochung (http://lol.moa.tw)   2022-03-15 15:06:00
你的pull request怪怪的
作者: MoonCode (MoonCode)   2022-03-15 15:44:00
你為何不叫你mentor幫你...自己開一個repo在bitbucket練一下不就好了
作者: alan5 (小安)   2022-03-15 16:23:00
bitbucket有設定branch能不能被force update
作者: TheWhack (我是德華)   2022-03-15 17:28:00
branch不給force update的話,那就不能rebase+squash了?
作者: ChiuTW (Chiu)   2022-03-15 21:00:00
都忘記 merge 可以 merge squash 了
作者: mike8469 (mike8469)   2022-03-15 22:06:00
local rebase 完以後推新的 remote branch, 不要用-f覆寫掉原本那條, 除非確定那條只有你在用, 推上去後在用新建的 remote branch 發PR 到 master branch 並設定squash merge 應該可以解掉你提到的問題~重看一次發現我理解錯你的問題, -f 被拒感覺跟bitbucket branch permission 設定比較有關
作者: ChiuTW (Chiu)   2022-03-17 10:18:00
再說一次,rebase squash 只要沒有動 commit 的順序就不應該衝突不過都 force push 了除非會 reflog 不然應該沒救了,找 mentor 救你吧
作者: xluds24805 (狼)   2022-03-26 23:44:00
不應該 conflict,應該是哪裡有操作錯誤

Links booklink

Contact Us: admin [ a t ] ucptt.com