V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Newyorkcity
V2EX  ›  问与答

请教一个 git 问题

  •  
  •   Newyorkcity · 2021-04-10 11:36:15 +08:00 · 1962 次点击
    这是一个创建于 1350 天前的主题,其中的信息可能已经有所发展或是发生改变。
    项目一开始处于提交 A 。此时有一些文件仅仅是被 add 还没有 commit 。
    因为要坐飞机,担心笔记本电脑在颠簸过程中搞坏了硬盘,所以先 commit 了下,产生了提交 B,然后将提交 B 推送到了远程仓库。
    现在尘埃落定,我希望将提交 B 从 git 历史里除去(远程仓库和本地),形成一个只有提交 A,提交 C (一个功能完整完成了的一个提交)的美丽的直线。

    我本来是想在本地 --soft 回到提交 A,然后产生提交 C 后 push force 覆盖远程仓库,形成一条直线。但发现没办法强制推送覆盖远程仓库。所以来请教这种情况下,怎么操作是最合理的?谢谢。
    11 条回复    2021-04-11 10:20:28 +08:00
    revlis7
        1
    revlis7  
       2021-04-10 11:50:44 +08:00 via iPhone
    开个临时分支应该更方便吧,原分支 force 不上去是因为远端有其他同事的 commit 吗?
    sfqtsh
        2
    sfqtsh  
       2021-04-10 11:51:44 +08:00 via Android
    操作并没问题。
    git push --force 为何失败?
    zouchtssn
        3
    zouchtssn  
       2021-04-10 11:54:10 +08:00
    pushf 到远程虽然世界线被拉直,但是 commit 会一直存在下去的
    2wex
        4
    2wex  
       2021-04-10 11:54:15 +08:00   ❤️ 1
    合理的做法就是把 B 永久留下
    只要推送到了远程仓库,就不应该再改变

    下次这种情况应该开临时分支
    ayase252
        5
    ayase252  
       2021-04-10 11:57:14 +08:00 via iPhone
    有人在你分支上改了吧,不建议 push force,merge 回来 push 吧。
    Newyorkcity
        6
    Newyorkcity  
    OP
       2021-04-10 12:22:05 +08:00
    @revlis7
    @ayase252
    这就是我自己一个人写着玩的项目,不会有其他人干扰的。


    @2wex 谢谢建议,学习了。
    @sfqtsh 具体消息没看到,用的是 IDEA 自带的 git 工具,点击 push force 按钮发现按不下去
    ClericPy
        7
    ClericPy  
       2021-04-10 12:57:18 +08:00   ❤️ 1
    楼上也提过了, 这种事情要用临时分支, 正式分支别轻易提交, 后面你用到 CI/CD 相关工具会后悔养成不好的习惯的

    可以看看 git flow 或者类似的东西(虽然 我更喜欢 Github flow 的分支管理, 足够简单, 原版 git flow 太复杂了, 我做的大部分东西都不会多版本共存, 滚动发布就够了), 正常情况公司里都不允许 force push 的

    自己玩的话, reset --hard 然后 push --force 也能用, 但是很少有人推荐这么操作. 没完成的代码正常都在临时分支, 命名一般也是 wip 标记
    Dvel
        8
    Dvel  
       2021-04-10 13:14:22 +08:00
    在终端里 push --force 就行了
    jotpot
        9
    jotpot  
       2021-04-10 15:15:13 +08:00 via iPhone
    飞机搞坏硬盘?第一次听说
    ChangQin
        10
    ChangQin  
       2021-04-11 08:08:50 +08:00 via iPhone
    rebase HEAD 然后 push -f
    msg7086
        11
    msg7086  
       2021-04-11 10:20:28 +08:00
    push force 就行了。如果没法 force push 的话去软件的设置里看看。

    不要让别人的个人观点影响你。push force 这个功能既然有,就说明有其作用,只要使用得当就不会有问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5252 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 08:57 · PVG 16:57 · LAX 00:57 · JFK 03:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.