如何在git重置到现有提交哈希后正确放回代码?

时间:2017-09-19 02:57:23

标签: git

情景:

git reset --hard asdfasdfadsfasdfasdfasdf

git push -f origin master

现在我的提交还不能推动,所以我很难重置使用A的提交

123423423423423423423423

然后重置后,我注意到此提交(B < 3)*5 中的代码仍在我的文件中。现在的问题是,如果git添加这些并重新提交和推送,如果它们显示为未修改,因为它们之前已经提交并在硬重置之前被推送。

1 个答案:

答案 0 :(得分:1)

看起来您的强制推送被服务器拒绝,然后当您再次关闭主分支时,您的本地分支已更新到远程并且原始提交已恢复。

git reset --hard可能是git工具箱中最清晰的工具,也是唯一可以永久删除代码的非管道命令之一。大致翻译为“移动我的分支,删除所有本地修改,重置我的索引,并检查该代码的版本。”任何未提交的代码都将永久丢失。

git push -f是非常接近的第二名,增加的乐趣在于它最有可能搞砸你团队的其他成员。粗略地翻译这个是“我不在乎其他人是否已经推动对服务器的更改,我希望我的更改在那里,所以删除它们以实现它。”这非常危险,大多数git服务器默认禁用此功能,或者至少需要管理员级别权限才能完成此功能。在某些情况下,这是可取的,但需要非常谨慎并充分了解其后果。

如果您的代码已被推送到远程并且您想要将其删除,那么使用git revert将更改作为新提交进行反转并将其推送到服务器几乎总是更好。让你到同一个地方而没有那么大的风险。