我检查了另一个有更新的分支,然后做了一些更改,切换回主git,现在更改消失了!我可以取回它们吗?终端基本上是:$gitcommit[detachedHEAD7c09e17]Fixedsomestufffileschanged,insertions(+),deletions(-)$gitpushmasterfatal:'master'doesnotappeartobeagitrepositoryfatal:Theremoteendhungupunexpectedly$gitcheckoutmasterPreviousHEADpositionwas7c09e17...Fixedsomest
问题很简单:refs/heads/master和refs/remotes/origin/master是一回事吗?如果在某些情况下不是,我怎么知道什么时候不是,然后又是什么? 最佳答案 它们是两个不同的符号名称,可以指向不同的事物。refs/heads/master是您工作副本中名为master的一个分支。通常这是refs/remotes/origin/master的跟踪分支,因为origin是由gitclone及其创建的远程的默认名称主分支通常也被命名为master。你可以通过gitrev-listrefs/heads/master
我经常引用gitlog--graph--decorate--oneline--all--full-history来查看我的分支的当前状态,但它不显示分离的头/匿名分支。有没有办法让分离的头出现在这个图中?我知道gitreflog存在,但它很难阅读,因为没有结构-你所要做的就是提交消息,如果我没有,它仍然可能是WIP'尚未完成提交。一些背景(这不是回答问题所必需的,但有助于解释它的动机):我是Mercurial用户,我的工作流程涉及很多匿名分支。我倾向于大量使用hgheads来检查这些heads,并且经常使用hgrebase根据对目的有意义的内容来分离或组合一系列提交易于理解的代码审查。
我和我的friend有一个他创建的代码库。然后他创建了一个名为“词法分析器”的分支供我们处理。问题是虽然他可以在master和lexer之间来回切换,但对我来说根本不起作用。最终我只是重新开始(rm-rfrepo然后克隆了repo)但是仍然无法检查lexer分支?在新克隆的repo上:gitbranch给出:$gitbranch*mastergitcheckoutlexer给出:$gitcheckoutlexer$gitstatusOnbranchmasterYourbranchisup-to-datewith'origin/master'.我可以检查origin/lexer但我最终处
在git中,如果你直接checkout一个提交,你会得到一个很大的警告,开头是:"Youarein'detachedHEAD'state.Youcanlookaround..."没关系-我打算处于分离的HEAD状态。但是我在脚本中使用它,我不想在输出日志中出现这个警告,但我确实想要正常输出。我现在的“丑陋”解决方法是运行相同的命令两次,第一次使用-qstash警告,再一次获得正常输出:HEADisnowatdeadbeef...Message因为警告只打印一次。是否可以禁用警告以便我可以避免解决方法或解析输出? 最佳答案 无耻地复制
我有一个非常简单的Git项目,只有一个主分支,没有源。我不小心在我的项目中创建了一个分离的HEAD,然后在对该分离的HEAD进行了一系列提交之后,试图将它merge回我的Master分支。我在SourceTree中这样做,起初merge似乎有效(图表显示master进入头部,并且存在我修复的merge冲突),但后来我双击Master切换到那个分支然后我的HEAD突然消失了。我无法在所有分支下的SourceTree中的任何地方找到它,命令行上的gitbranch和gitlog也只显示我的Master分支。有没有办法从我丢失的分离HEAD中取回我的提交? 最佳答
我正在为Eclipse使用EGit插件,但每当我将我的项目添加到Git时,该插件都会在Eclipse目录View中我的项目文件夹旁边放置一个“NO-HEAD”指示。难道我做错了什么?这是什么意思? 最佳答案 它可以简单地意味着,在您进行第一次添加和第一次提交之前,您没有分支(甚至没有master分支),因此没有HEAD引用任何分支机构。在“WhydoIneedtoexplicitlypushanewbranch?”中查看更多信息。 关于Git"NO-HEAD"语句,我们在StackOve
我不得不承认我没有使用过gits的高级功能,但在我当前的项目中我不得不使用。情况:有人试图实现一些功能并将它们提交给master,现在我被要求做另一个人试图做的(但失败了),因此,我做的第一件事是gitcheckout-bclean_startHASHHash是一个正确的SHA1散列,在当前master之前大约有20次提交并且有效。我现在对该分支进行了一些更改,现在我想将远程存储库的当前主分支(具有其他人所做的更改)更改为我的本地分支。换句话说,我想将master20提交的头部移回,然后将我的新干净分支merge到其中。这正是我必须做的吗?使用revertHEAD~20等,或者是否有一
如果我执行gitcheckoutHEAD^,我会得到:$gitcheckoutHEAD^Note:checkingout'HEAD^'.Youarein'detachedHEAD'state.Youcanlookaround,makeexperimentalchangesandcommitthem,andyoucandiscardanycommitsyoumakeinthisstatewithoutimpactinganybranchesbyperforminganothercheckout.Ifyouwanttocreateanewbranchtoretaincommitsyoucr
我意识到我在HEAD上犯了一些错误,检查了一个较旧的提交并从那里开始编码。当我尝试推送时,我被告知我当前的提交已经落后,我需要与HEADmerge。Git推荐“gitpull”。但是,HEAD有我想忽略的代码。我该如何解决这个问题?流程图:--------HEAD(bad)----------------------+(behindconflict,requires\/mergewithHEAD,whichis\-------Currentcommit(good)----/badandneedstobeignored) 最佳答案 以