git reset - hard后Git状态头分离

时间:2017-05-13 02:11:32

标签: android git github version-control

所以我对git很新,但我对它的运作方式有基本了解,而且我最近一直在玩Android源码(更具体地说是LineageOS,但它对我来说并不重要)问题)。

基本上,我遵循Android和Lineage指南来设置Linux(Xubuntu 16.04 LTS)的构建环境,下载源代码,获得我手机的专有blob并成功构建它。接下来,我开始挑选一些功能。

根据AOSP的Google文档,我应该转移到项目文件夹并执行" repo start BRANCH_NAME。"创建一个主题分支,然后进行我的更改,git添加它们并提交它们。问题是,我不想将这些变化推向任何地方。我只是想在本地工作,只是在保留我的樱桃选择时拉动新的变化。所以我做了一堆樱桃选择并再次运行了一个版本,这很成功,但我选择的其中一个问题导致了我的问题,我想完全恢复它。

我首先进行了repo sync并移动到了一个项目文件夹,当我做了" git branch"时,它返回" *(没有分支)"绿色,当我做了" git status"时,它告诉我,我目前不在分支机构上,工作目录是干净的。

现在,因为我在其中一个项目中创建了一个主题分支,并且选择了几个提交,git status告诉我我提前2,所以要删除它们,我做了#34; git reset --hard github /cm-14.1",完成后我验证文件已恢复到原始状态。我跑了" repo prune"摆脱现在不需要的主题分支,当我运行" git branch"再次,它说" *(HEAD在12f0903分离)"绿色,当我跑步" git status"它还说HEAD在12f0903以红色分离,但也告诉我没有什么可以提交,我的工作目录是干净的。

最后,在所有这些之后,如果我现在只创建一个新的分支,状态和分支返回干净,正常输出没有分离的头消息。有没有办法回到最初的状态,不是在一个分支中,没有一个独立的头,或者我完全困惑并做错了什么?

1 个答案:

答案 0 :(得分:2)

  

有没有办法回到不在分支中并且没有分离头的最初状态

只需查看SHA1 referenced by your current branch

即可
git checkout $(git rev-parse HEAD)

如前所述,处于detached HEAD mode并不是什么大问题,除非你想添加新的提交(在这种情况下,创建一个专门的分支,你会推到一个分支是一个好主意)< / p>

Android Lineage guide提到命令

repo init -u https://github.com/LineageOS/android.git -b cm-14.1

这意味着您可以使用

返回本地分支cm-14.1
git reset --hard cm-14.1