长话短说*,我用我的git存储库做了一些我不知道该怎么做的事情,并最终解开了我的脑袋,也就是说,当我提交时master
不是最新的
我该如何解决这个问题?我必须合并吗? (如果是这样,我想要运行的确切命令是什么?)
当我运行git branch时,它告诉我我目前没有分支
$ git branch
* (no branch)
master
答案 0 :(得分:5)
最简单(安全)的方法是创建一个指向你的HEAD,checkout master的临时分支,合并临时分支,然后删除它:
git branch temp
git checkout master
git merge temp
git branch -d temp
您也可以避免使用临时分支,只需使用reflog从无分支获取提交:
git checkout master
git merge HEAD@{1}
HEAD@{1}
这里指的是您之前签出的提交; HEAD@{0}
与HEAD
相同,是您正在使用的当前提交。如果您想查看HEAD
指向的所有先前提交(尚未过期),您可以执行以下操作:
git reflog
你说这是因为你试图撤消提交。正如mletterle指出的那样,您可以使用git reset
执行此操作。 git reset --hard rev
会将您所在的分支,HEAD,索引和工作副本设置为特定修订版。请注意,这会消除未提交的更改,因此只有在您确实知道自己在做什么的情况下才会这样做。更安全通常是git reset rev
,这不会影响您的工作副本,然后选择性地使用git checkout
还原工作副本中的单个文件,以确保您不会意外破坏某些文件你正在做的工作。
此外,git reset
通常只应用于未提交的提交。如果您尝试撤消已推送的内容,而其他人已合并,则通常需要git revert
。
答案 1 :(得分:2)
你可以通过几种方式结束(没有分支),但实质上它是用于检查事物的垃圾分支,例如旧的承诺。如果您错误地编辑了文件(无分支),您可以像切换任何其他分支一样切换回主文件。查看git-checkout的帮助,但是你想要做一些像git-checkout -m
这样的事情来回到master并将你当前的索引与它合并。
答案 2 :(得分:1)
我喜欢Brian Campbell的回答。至于撤消提交,git reset --hard rev应该是你想要的。 http://git-scm.com/docs/git-reset
答案 3 :(得分:0)
也许您应该回到您正在处理的分支机构。如果它是主人那将是
$ git checkout master