我一直在做我的项目,但在某些时候我发现有一件事停止了工作。当我的代码工作正常时,我需要查看代码的状态,所以我决定使用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?
跳过"安全的方式是什么?历史承诺?
答案 0 :(得分:15)
您可以stash
(保存临时框中的更改)然后返回master
分支HEAD。
$ git add .
$ git stash
$ git checkout master
跳过提交回来:
转到特定的commit-sha
。
$ git checkout <commit-sha>
如果此处有未提交的更改,则可以签出新分支,添加,提交,将当前分支推送到远程。
# checkout a new branch, add, commit, push
$ git checkout -b <branch-name>
$ git add .
$ git commit -m 'Changes in the commit'
$ git push origin HEAD # push the current branch to remote
$ git checkout master # back to master branch now
如果您在特定提交中进行了更改但又不想保留更改,则可以执行stash
或reset
,然后结帐到master
(或者,其他分支)。
# stash
$ git add -A
$ git stash
$ git checkout master
# reset
$ git reset --hard HEAD
$ git checkout master
如果您没有未提交的更改,则在签出特定提交后,只需返回master
或other
分支。
$ git status # see the changes
$ git checkout master
# or, shortcut
$ git checkout - # back to the previous state