git rebase 如何解决 push rejected 问题?

2019-07-11 14:37:00 +08:00
 1oNflow

想问个关于git rebase的问题,如果在本地把 feature_branch rebase 到最新的 dev 上,再 push 到远端 feature_branch 时,就会被拒绝(因为 commit 历史对不上,多了 dev 的 commit ),所以我目前都是把本地 feature_branch 的 commit 先 push 到远端,然后在 gitlab 网页上进行 fast-forward rebase 到 dev,然后删除本地 feature_branch,最后再把 feature_branch pull 回来。

感觉这么操作比较麻烦,但又不想用 push -f,想问下有更优雅的方法吗?

2638 次点击
所在节点    问与答
6 条回复
sanwen
2019-07-11 14:53:39 +08:00
不是总调整 feature_branch 的 commit 顺序的话,直接本地 cherry-pick 新的修改到 dev,在 push☺
1oNflow
2019-07-11 15:12:26 +08:00
@sanwen 这个意思是把 dev 最新的几个 commit cherry-pick 到 feature_branch 的顶端,这样就能 fast-forward 了?不过应该不会有什么副作用吧
rbe
2019-07-11 15:12:39 +08:00
如果是自己管理、开发的 feature-branch,其实 push -f 无所谓吧
rbe
2019-07-11 15:12:39 +08:00
如果是自己管理、开发的 feature-branch,其实 push -f 无所谓吧
msg7086
2019-07-11 15:25:25 +08:00
你描述的就是 force push,然后你又不想用 force push,你就说你想怎么样吧。

GitLab 网页版进行 Rebase 就相当于你本地 rebase + force push 的过程。
momocraft
2019-07-11 15:39:55 +08:00
push --force-with-lease
实质是 CAS,比 force 安全一点点
sanwen
2019-07-11 21:54:38 +08:00
嗯,刚开始我可能理解错了,我以为你得最新 commit 在 feature_branch 上,如果在 dev 上其实意思也就是你回复的这样,因为有共同的历史,所以可以 cherrypick 最新的 commit

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/582021

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX