我一直在做我的项目,而在某个时候我发现一件事停止了工作。当我的代码正常工作时,我需要查看它的状态,所以我决定使用 git checkout (因为我想检查一些东西)。所以我已经完成了
git checkout SHA
几次回到我无法转到 HEAD 的点时,输出如下:
git checkout SHA-HEAD
error: Your local changes to the following files would be overwritten by checkout:
[list of files]
Please, commit your changes or stash them before you can switch branches.
Aborting
我很确定我没有改变任何东西。命令
git checkout master
给出相同的输出。
有没有办法回到 HEAD?
“跳过”历史提交的安全方式是什么?
git clean -f
将清除所有未跟踪的文件。然后结帐给大师
error: ...
消息表示您(或您所做的某事,可能是间接地)确实 更改了文件。您可以告诉 Git 放弃或覆盖这些更改,或使用 git status
和/或 git diff
来查看确切的更改内容。它可以像某种行尾修改一样简单,或者在后台运行的某个命令写入文件。 (旁白:“回到 HEAD”在 Git 中没有意义,因为您 总是 在 HEAD:HEAD
字面意思是“当前提交”。您可以更改 HEAD,之后你仍然在 HEAD,只是一个不同的 HEAD。这......很难说。:-))
git reset --hard HEAD
表示“重置索引和工作树以匹配 HEAD”,即丢弃更改。或者:git checkout -f master
表示“将 HEAD 更改为 master
,即使这意味着放弃一些工作”:-f
表示“强制”。
您可以stash
(将更改保存在临时框中)然后返回 master
分支 HEAD。
$ git add .
$ git stash
$ git checkout master
来回跳过提交:
转到特定的 commit-sha。 $ git checkout
如果您在此处有未提交的更改,则可以结帐到新分支 |添加 |提交 |将当前分支推送到远程。 # 签出一个新分支,添加,提交,推送 $ git checkout -b
如果您在特定提交中有更改并且不想保留更改,则可以执行 stash 或 reset 然后检出到 master(或任何其他分支)。 # stash $ git add -A $ git stash $ git checkout master # reset $ git reset --hard HEAD $ git checkout master
如果您没有未提交的更改,则在检查特定提交后,只需返回主分支或其他分支。 $ git status # 查看变化 $ git checkout master # 或者,快捷方式 $ git checkout - # 回到之前的状态
不定期副业成功案例分享
add
、commit
和push
分支到origin
。你的解决方案奏效了。git checkout master
=> “错误:pathspec 'master' 与 git 已知的任何文件都不匹配”但git checkout -
很好。