我一直在从事我的个人项目(我是唯一的开发人员)。最近两个月我已经扩展了业务。现在,我试图将分支合并回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专家。我该如何保存?
答案 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
那应该没事的