This topic created in 1893 days ago, the information mentioned may be changed or developed.
项目一开始处于提交 A 。此时有一些文件仅仅是被 add 还没有 commit 。
因为要坐飞机,担心笔记本电脑在颠簸过程中搞坏了硬盘,所以先 commit 了下,产生了提交 B,然后将提交 B 推送到了远程仓库。
现在尘埃落定,我希望将提交 B 从 git 历史里除去(远程仓库和本地),形成一个只有提交 A,提交 C (一个功能完整完成了的一个提交)的美丽的直线。
我本来是想在本地 --soft 回到提交 A,然后产生提交 C 后 push force 覆盖远程仓库,形成一条直线。但发现没办法强制推送覆盖远程仓库。所以来请教这种情况下,怎么操作是最合理的?谢谢。
11 replies • 2021-04-11 10:20:28 +08:00
 |
|
1
revlis7 Apr 10, 2021 via iPhone
开个临时分支应该更方便吧,原分支 force 不上去是因为远端有其他同事的 commit 吗?
|
 |
|
2
sfqtsh Apr 10, 2021 via Android
操作并没问题。 git push --force 为何失败?
|
 |
|
3
zouchtssn Apr 10, 2021
pushf 到远程虽然世界线被拉直,但是 commit 会一直存在下去的
|
 |
|
4
2wex Apr 10, 2021 1
合理的做法就是把 B 永久留下 只要推送到了远程仓库,就不应该再改变
下次这种情况应该开临时分支
|
 |
|
5
ayase252 Apr 10, 2021 via iPhone
有人在你分支上改了吧,不建议 push force,merge 回来 push 吧。
|
 |
|
7
ClericPy Apr 10, 2021 1
楼上也提过了, 这种事情要用临时分支, 正式分支别轻易提交, 后面你用到 CI/CD 相关工具会后悔养成不好的习惯的
可以看看 git flow 或者类似的东西(虽然 我更喜欢 Github flow 的分支管理, 足够简单, 原版 git flow 太复杂了, 我做的大部分东西都不会多版本共存, 滚动发布就够了), 正常情况公司里都不允许 force push 的
自己玩的话, reset --hard 然后 push --force 也能用, 但是很少有人推荐这么操作. 没完成的代码正常都在临时分支, 命名一般也是 wip 标记
|
 |
|
8
Dvel Apr 10, 2021
在终端里 push --force 就行了
|
 |
|
9
jotpot Apr 10, 2021 via iPhone
飞机搞坏硬盘?第一次听说
|
 |
|
10
ChangQin Apr 11, 2021 via iPhone
rebase HEAD 然后 push -f
|
 |
|
11
msg7086 Apr 11, 2021
push force 就行了。如果没法 force push 的话去软件的设置里看看。
不要让别人的个人观点影响你。push force 这个功能既然有,就说明有其作用,只要使用得当就不会有问题。
|