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.
git checkout master
现在你在分支 master 上了。当您进行新提交时,ref master 将移至新提交。裁判头也是如此。当您 运行 git reset --hard <commit>
时,master 和 HEAD 都将移至该提交。 git push
表示git push origin master:master
,相当于git push origin HEAD:master
.
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:master
或git push origin 8977abf:master
更新远程仓库中的master,但是本地master没有变化,仍然指向32764bf。显然这两次推送与 git push origin master:master
或 git push origin 32764bf:master
不同,因为现在 HEAD 和 master 指向不同的提交。即使现在 HEAD 和 master 指向同一个提交,在分离的 HEAD 上和在分支 master 上是两种不同的状态。
前后移动以跟踪我的回购中的错误,例如:
$ 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.
git checkout master
现在你在分支 master 上了。当您进行新提交时,ref master 将移至新提交。裁判头也是如此。当您 运行 git reset --hard <commit>
时,master 和 HEAD 都将移至该提交。 git push
表示git push origin master:master
,相当于git push origin HEAD:master
.
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:master
或git push origin 8977abf:master
更新远程仓库中的master,但是本地master没有变化,仍然指向32764bf。显然这两次推送与 git push origin master:master
或 git push origin 32764bf:master
不同,因为现在 HEAD 和 master 指向不同的提交。即使现在 HEAD 和 master 指向同一个提交,在分离的 HEAD 上和在分支 master 上是两种不同的状态。