[请益] 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