Git 结帐 - 切换回 HEAD

Git checkout - switching back to HEAD

我一直在做我的项目,而在某个时候我发现有一件事停止了工作。当我的代码正常工作时,我需要查看它的状态,所以我决定使用 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 吗?

"jumping over" 历史提交的安全方式是什么?

您可以 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 'Commit message'
      $ git push origin HEAD          # push the current branch to remote 
    
      $ git checkout master           # back to master branch now
    
  • 如果您在特定提交中有更改并且不想保留更改,您可以执行 stashreset 然后检出到 master (或者,任何其他分支)。

      # stash
      $ git add -A
      $ git stash
      $ git checkout master
    
      # reset
      $ git reset --hard HEAD
      $ git checkout master
    
  • 检查特定提交后,如果没有未提交的更改,则返回 masterother 分支。

      $ git status          # see the changes
      $ git checkout master
    
      # or, shortcut
      $ git checkout -      # back to the previous state