通过推送消除git commit未能按预期进行

时间:2018-10-07 16:29:08

标签: git

我一直在从事我的个人项目(我是唯一的开发人员)。最近两个月我已经扩展了业务。现在,我试图将分支合并回master,我注意到我在master分支上留下了不必要的提交,这引起了冲突。我认为最好将其完全删除而不是合并并尝试解决冲突。

我最终将其还原,看起来还不错。但是我想为什么不完全从历史记录中消除revert和先前的实际提交。

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

但是,当我执行git log时,我仍然可以看到旧的提交,只有原点/主目录已将其移到下面。

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

在我变得一团糟之前,我想我会问一些git专家。我该如何保存?

2 个答案:

答案 0 :(得分:0)

如果我的理解正确,那么您的origin/master指向您想要的提交d267cfa。现在,您可以通过进入master分支并执行以下操作来丢弃本地9b7a71ec提交master

git reset --hard origin/master

这将使您的master指向origin/master。确保这就是您想要的-做git reset --hard是在git中永久丢失提交的几种方法之一。

答案 1 :(得分:0)

您在d267cfa主机上,您还原了该提交,因此您的主机已移至9b7a71e;

您在远程主服务器上推了HEAD ^(当时是d267cfa),但没有在本地将其删除或“拉出”,因此一切正常。恕我直言。

我真的希望您的主人指向@ ca930bf6ea64ba73a这样做:

(假设您没有舞台上的东西。)

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

那应该没事的