想问个关于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,想问下有更优雅的方法吗?
1
sanwen 2019-07-11 14:53:39 +08:00 via Android
不是总调整 feature_branch 的 commit 顺序的话,直接本地 cherry-pick 新的修改到 dev,在 push☺
|
2
1oNflow OP @sanwen 这个意思是把 dev 最新的几个 commit cherry-pick 到 feature_branch 的顶端,这样就能 fast-forward 了?不过应该不会有什么副作用吧
|
3
rbe 2019-07-11 15:12:39 +08:00
如果是自己管理、开发的 feature-branch,其实 push -f 无所谓吧
|
4
rbe 2019-07-11 15:12:39 +08:00
如果是自己管理、开发的 feature-branch,其实 push -f 无所谓吧
|
5
msg7086 2019-07-11 15:25:25 +08:00
你描述的就是 force push,然后你又不想用 force push,你就说你想怎么样吧。
GitLab 网页版进行 Rebase 就相当于你本地 rebase + force push 的过程。 |
6
momocraft 2019-07-11 15:39:55 +08:00
push --force-with-lease
实质是 CAS,比 force 安全一点点 |
7
sanwen 2019-07-11 21:54:38 +08:00 via Android
嗯,刚开始我可能理解错了,我以为你得最新 commit 在 feature_branch 上,如果在 dev 上其实意思也就是你回复的这样,因为有共同的历史,所以可以 cherrypick 最新的 commit
|