代码之家  ›  专栏  ›  技术社区  ›  Houman

通过push消除git提交并没有像预期的那样起作用

git
  •  0
  • Houman  · 技术社区  · 6 年前

    我一直致力于我的个人项目(我是唯一的开发人员)。过去两个月我一直在分店。现在我正试图将分支合并回主分支,我注意到主分支上还有一个不必要的提交,这导致了冲突。我想最好是把它全部删除,而不是合并并试图解决冲突。

    revert 而之前的实际承诺完全来自历史。

    所以我做了这个: git push -f origin HEAD^:master

    但是,当我做git日志时,我仍然可以看到旧的提交,只有origin/master已经移到下面的一步。

    commit 9b7a71ec22f45eb319aec18b47bc56405a50534f (HEAD -> master)
    Date:   Sun Oct 7 19:39:53 2018 +0330
    
        Revert "changes due to new laptop"
    
        This reverts commit d267cfa4eea1ac54700850ff056f0a86be79730d.
    
    commit d267cfa4eea1ac54700850ff056f0a86be79730d (origin/master, origin/HEAD)
    Date:   Wed Aug 1 07:26:53 2018 +0100
    
        changes due to new laptop
    
    commit ca930bf6ea64ba73a429c371b37654c5d5acc2eb
    Date:   Sat Jul 28 12:31:04 2018 +0100
    
        completed more tests
    

    2 回复  |  直到 6 年前
        1
  •  0
  •   DUman    6 年前

    如果我理解正确,你的 origin/master 指向你想要的承诺, d267cfa . 现在您可以放弃本地 master 承诺, 9b7a71ec 通过在 主人

    git reset --hard origin/master

    那会让你 主人 指向 原点/主 . 确保这就是你想做的 git reset --hard 是git中永久丢失提交的少数方法之一。

        2
  •  0
  •   OznOg    6 年前

    您在远程主机上按了头^(whuch是d267cfa),但没有在本地将其移除,也没有“拉”,因此一切正常。

    我真的想让你的主人点@ca930bf6ea64ba73a这样做:

    (假设您没有未分级的内容。)

    git checkout master
    git reset --hard ca930bf6ea64ba73a
    git push -f origin master:master
    

    那应该没问题