Git - 来回移动并变得致命:你目前不在分支机构?

Git - moving back and forth and getting fatal: You are not currently on a branch?

前后移动以跟踪我的回购中的错误,例如:

$ git reset --hard fcf9818

发现错误然后我想前进到最新的提交,例如:

$ git checkout 32764bf   

然后,我开始修改,想要提交:

$ git status
HEAD detached at 32764bf
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

我以为我已经是最新的提交了?

但我继续提交它:

$ git add -A
$ git commit
[detached HEAD ccf8009] Fixed gird bug on Safari - removing bootstrap grid css. Added code to centralise the image.
 2 files changed, 6 insertions(+), 1 deletion(-)

现在我有这个错误:

$ git push
fatal: You are not currently on a branch.
To push the history leading to the current (detached HEAD)
state now, use

    git push origin HEAD:<name-of-remote-branch>

那回退后想转发到最新的commit应该怎么办才好呢?

我现在该如何修复错误?

编辑:

$ git checkout 32764bf
Warning: you are leaving 1 commit behind, not connected to
any of your branches:

  6015d59 Fixed gird bug on Safari - removing bootstrap grid css. Added code to centralise the image.

If you want to keep it by creating a new branch, this may be a good time
to do so with:

 git branch <new-branch-name> 6015d59

HEAD is now at 32764bf... Added template for finally - only image.

我仍然得到 HEAD detached at 32764b:

$ git status
HEAD detached at 32764bf
nothing to commit, working tree clean

如果您签出修订版(不是分支)并从那里更正,那么您处于 分离 HEAD 状态。为了推送到远程分支,您可以创建一个分支并将其推送到远程或(如消息中所述)推送指定要推送到哪个远程分支:git push a-remote HEAD:remote-分支名称

假设有一个分支 master 并且它指向一个提交 32764bf.

  1. git checkout master

现在你在分支 master 上了。当您进行新提交时,ref master 将移至新提交。裁判头也是如此。当您 运行 git reset --hard <commit> 时,master 和 HEAD 都将移至该提交。 git push表示git push origin master:master,相当于git push origin HEAD:master.

  1. git checkout 32764bf

现在你在一个独立的 HEAD 上。把它当成一个无名的分支,对master来说是新的。当您进行新提交时,HEAD 会移动到新提交,但 master 仍指向 32764bf。当你运行git reset --hard <commit>。只有 HEAD 移动到那个提交而 master 保持不动。 git push 不能暗示 git push origin master:master 因为你现在不在分支 master 上。假设现在 HEAD 指向 8977abf。你可以运行git push origin HEAD:mastergit push origin 8977abf:master更新远程仓库中的master,但是本地master没有变化,仍然指向32764bf。显然这两次推送与 git push origin master:mastergit push origin 32764bf:master 不同,因为现在 HEAD 和 master 指向不同的提交。即使现在 HEAD 和 master 指向同一个提交,在分离的 HEAD 上和在分支 master 上是两种不同的状态。