我进行了一次提交,拉取并合并了一些更改,然后进行了第二次提交。当我想回到第一次提交时,我运行了命令
git reset --hard <sha hash>
虽然响应是“HEAD 现在位于 ”,但我的代码看起来与运行该命令之前一样。通常,它会更改为我之前的样子,但看起来有些东西无法正常工作。在重置 head 之前,我是否需要运行不同的命令来取消合并?
额外信息
当我跑步时git status
它说:
app/assets/images/.DS_Store.orig 未跟踪
我可以添加它。
根据git reflog
,我在提交 hash1 之前拉取了(我认为是“合并之前”)。有一个用于拉取的 sha hash2(其中git log
没有显示)。当我挖掘 hash1 和 hash2 时,我看到了我所做的更改,并且可以从中重建我的原始代码。不过,这似乎很奇怪。如果我尝试git reset
对于他们中的任何一个,我都无法在合并之前获取我的代码。
The:
git reset --hard <sha-hash>
在以下情况下将不起作用:
- 您正在尝试重置未跟踪的文件(它们不是您的 git 存储库的一部分),
- 一些属性被你的 git 规范化文件覆盖(.gitattributes https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html),
- 您使用了错误的哈希值,或者哈希值是在您更改之后的。
也许解决方案是通过以下方式返回远程分支上的内容:
git reset origin/master --hard
and rebase
散列在其顶部或git cherry-pick
您真正需要的提交。
如果上述方法没有帮助,您还应该:
- 确保您在正确的分支上进行测试(
git branch -a
),而不是在独立的一个上,
- 检查
git reflog
有关您的历史的更多详细信息,
- run
git blame some/file
显示您的代码行被修改的版本,这可以帮助您跟踪代码提交时出现的问题,这与您不期望的情况相同,
- 如果您不喜欢之前进行的特定提交,您可以
revert
it.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)