因此,我在存储库中做了一些工作,当我准备提交时,我意识到我目前不在任何分支上。

当使用子模块时,这种情况经常发生,我能够解决它,但这个过程很乏味,我一直在想,一定有一种更简单的方法来做到这一点。

是否有一种简单的方法可以在保持更改的同时回到分支上?


当前回答

另一种方式

git branch newbranch
git checkout master 
git merge newbranch 

其他回答

git checkout master

结果是这样的:

Warning: you are leaving 2 commits behind, not connected to
any of your branches:

1e7822f readme
0116b5b returned to clean django

If you want to keep them by creating a new branch, this may be a good time to do so with:
git branch new_branch_name 1e7822f25e376d6a1182bb86a0adf3a774920e1e

让我们开始吧:

git merge 1e7822f25e376d6a1182bb86a0adf3a774920e1e

另一种方式

git branch newbranch
git checkout master 
git merge newbranch 

或者,您可以设置子模块,这样就可以检出分支,而不是处于默认的分离头部状态。

编辑补充:

一种方法是在添加子模块的-b标志时检出子模块的特定分支:

git submodule add -b master <remote-repo> <path-to-add-it-to>

另一种方法是进入子模块目录,然后签出

git checkout master

我知道我在2012年告诉过babay,我认为不太可能有人不会意识到他们不在一个分支上并做出承诺。这件事刚刚发生在我身上,所以我想我必须承认我错了,但考虑到直到2016年这件事才发生在我身上,你可以说这实际上不太可能。

无论如何,在我看来,创建一个新的分支是多余的。你所要做的就是:

git checkout some-branch
git merge commit-sha

如果你在签出另一个分支之前没有复制commit-sha,你可以通过运行以下命令轻松找到它:

git reflog

我发现最好的方法是把我修改过的文件复制到一个单独的文件夹, 然后删除我电脑上现有的存储库文件夹, 然后克隆主存储库并放回文件。