解决合并冲突后git出现"not currently on any branch"问题

5
我尝试提交更改,但遇到了很多问题和冲突。最终我成功解决了每一个问题。然而,我提交的代码目前没有在任何分支上(就像git status显示的那样)。我该怎么办?我尝试了几种解决方案,但都没能解决我的问题。我试过使用命令git merge,但它显示已经是最新的了。

更新

git log --all --graph --oneline --decorate的结果如下:
* 7833c31 (HEAD) Changed LI tool
* c205a25 Fixed merge conflicts
*   7b10e48 (vsproj/master, master) 4-7-2013
|\  
| * cc51cb0 3/9/2013
| * 62ea718 Updated mail and added barcode
| * 9a3573a 1-7-2013
| * 96ded0e Updated ExamsPrinter
| * be6638a 12-25-2012
| * 89cba4b Added HTML to PDF and updated Email app
| * fa96aeb Updates
| * 9ffcfcc Changes in CloudDownloader, LinkedIn & Twitter apps
| * 609c555 Added README file
| * bf8a344 Started implementing CloudDownloader, created FileDownloader, updated FacebookInfoBot
| * c3556ce First Commit
* 3a59cd5 4-7-2013

你可能需要解释一下如何进入合并冲突:mergepullrebasestash pop等。看起来你正在进行rebase操作。 - Bert F
请列出您运行的命令 - Chronial
发布 git log --all --graph --oneline --decorate 的结果。 - jthill
如果您不记得命令,至少向我们展示当前状态的日志以及您所在分支的日志。为了方便阅读,我建议使用以下方式的日志命令:git log -5 --oneline HEADgit log -5 --oneline <previous_branch> - eddiemoya
如果您使用的是Linux系统,history命令可以帮助您查找在您惊慌时发生了什么。此外,git reflog可能会刷新您的记忆。当涉及到“不在分支上”时,这通常意味着您正在进行某个操作。git <command> --continue通常是正确的选项。 - HonkyTonk
显示剩余3条评论
3个回答

10

不确定发生了什么,但您可以通过创建新分支然后合并来轻松解决:

git branch lost_changes
git checkout master
git merge lost_changes

太棒了。我创建、切换和合并了分支。现在一切都很好。谢谢。 - Alireza Noori

2

所以您可以在历史记录中看到正在发生的情况。您进行了合并,生成了

*   7b10e48 (vsproj/master, master) 4-7-2013

然后,在明确断开与主分支 tip%1 的连接后,您提交了检出。

* c205a25 Fixed merge conflicts

并且。
* 7833c31 (HEAD) Changed LI tool

所以,如果你只想将当前的结账设置为主分支的最新版本,则执行以下操作:
git checkout -B master HEAD

这看起来是最简单的恢复方法。

为什么你要明确提交合并冲突?在提交前,您必须告诉Git您已解决了所有冲突(通过git add正确的内容),然后它才会接受提交。

%1:我通常获得无引用“分离”的检出方式是git checkout HEAD@{1},有许多方法,Git对分支提示非常随意,因此在您熟悉此过程后,您也将变得很自如。


谢谢。答案非常有帮助。虽然我已经使用@kan的方法修复了存储库。 - Alireza Noori

0
如果你确实没有在分支上,简单的解决方案是创建一个新的分支,方法如下:

git branch <name> 7833c31

或者

git branch <name> HEAD

然后你可以开始解决问题,或者幸运的话,继续你的开发工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接