Git结账 - 切换回HEAD

时间:2017-02-07 05:24:22

标签: git git-checkout

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

跳过"安全的方式是什么?历史承诺?

1 个答案:

答案 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
    
  • 如果您在特定提交中进行了更改但又不想保留更改,则可以执行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