因此,我在存储库中做了一些工作,当我准备提交时,我意识到我目前不在任何分支上。
当使用子模块时,这种情况经常发生,我能够解决它,但这个过程很乏味,我一直在想,一定有一种更简单的方法来做到这一点。
是否有一种简单的方法可以在保持更改的同时回到分支上?
因此,我在存储库中做了一些工作,当我准备提交时,我意识到我目前不在任何分支上。
当使用子模块时,这种情况经常发生,我能够解决它,但这个过程很乏味,我一直在想,一定有一种更简单的方法来做到这一点。
是否有一种简单的方法可以在保持更改的同时回到分支上?
当前回答
出现这种情况的一种方法是从远程分支执行rebase之后。在这种情况下,新的提交由HEAD指向,但master并不指向它们——它指向在重新基于另一个分支之前它所在的位置。
你可以这样做,把它托付给你的新主人:
git branch -f master HEAD
git checkout master
这将强制将master更新为指向HEAD(而不将您放在master上),然后切换到master。
其他回答
或者,您可以设置子模块,这样就可以检出分支,而不是处于默认的分离头部状态。
编辑补充:
一种方法是在添加子模块的-b标志时检出子模块的特定分支:
git submodule add -b master <remote-repo> <path-to-add-it-to>
另一种方法是进入子模块目录,然后签出
git checkout master
这帮助了我
git checkout -b newbranch
git checkout master
git merge newbranch
git branch -d newbranch
以下方法可能有效:
git rebase HEAD master
git checkout master
这将使你当前的HEAD改变基于master的顶部。然后你可以切换分支。
另一种方法是先签出分支:
git checkout master
然后Git应该显示你的分离提交的SHA1,然后你可以樱桃选择他们,例如。
git cherry-pick YOURSHA1
或者你也可以合并最新的一个:
git merge YOURSHA1
要查看来自不同分支的所有提交(以确保您拥有它们),请运行:git reflog。
出现这种情况的一种方法是从远程分支执行rebase之后。在这种情况下,新的提交由HEAD指向,但master并不指向它们——它指向在重新基于另一个分支之前它所在的位置。
你可以这样做,把它托付给你的新主人:
git branch -f master HEAD
git checkout master
这将强制将master更新为指向HEAD(而不将您放在master上),然后切换到master。
我发现最好的方法是把我修改过的文件复制到一个单独的文件夹, 然后删除我电脑上现有的存储库文件夹, 然后克隆主存储库并放回文件。