似乎在“(无分支)”中,然后丢失了我的更改

Jok*_* 00 1 git

我试图将我的Git工作区推到Github,但是我添加和提交的更改似乎没有上载。

然后,做一个“ git branch”,我得到的东西看起来像这样:

git branch
* (no branch)
  master
Run Code Online (Sandbox Code Playgroud)

愚蠢的,我以为我可以重新掌握

git checkout master
Run Code Online (Sandbox Code Playgroud)

现在我的改变似乎已经消失了。我的主分支大约成立了三天。而且似乎没有办法切换回此位置(无分支)。

我检查了这个问题Git:似乎在“(无分支)”中,然后丢失了我的更改,其中答案提示先进行git reflog show结帐。我尝试了,我得到了:

$ git reflog
    0f27ae7 HEAD@{1}: checkout: moving from HEAD to master
    7b8ee7b HEAD@{2}: commit: 14/05/2017 3:33pm
    ff60409 HEAD@{3}: commit: 14/05/2017 3:33pm
    0f27ae7 HEAD@{4}: checkout: moving from master to 0f27ae7236aabbe8cccfba82e201e36368a05054
    0f27ae7 HEAD@{5}: commit: 11/05/2017 2:33pm
    3e4c616 HEAD@{6}: merge origin/master: Fast-forward
    1e79818 HEAD@{7}: commit: 10/5//2017 UI
Run Code Online (Sandbox Code Playgroud)

我尝试从中进行结帐,0f27ae7236aabbe8cccfba82e201e36368a05054但是我的更改没有恢复。我想要的是恢复我在(无分支)中所做的最后一次提交(commit:14/05/2017 3:33 pm)

这是结果git branch -a

$ git branch -a
* (HEAD detached from 0f27ae7)
  UI_linking
  master
  remotes/ado/newBranch
  remotes/origin/UI_linking
  remotes/origin/frogs1
  remotes/origin/master
  remotes/origin/newBranch
  remotes/origin/newMas
Run Code Online (Sandbox Code Playgroud)

我的更改丢失了吗?还是有办法恢复它们?

axi*_*iac 5

从输出的结果来看,git reflog您的更改是在commit 7b8ee7bHEAD@{2})上进行的。

以下命令:

git branch lost 7b8ee7b
git checkout lost
Run Code Online (Sandbox Code Playgroud)

应该lost在上述提交上创建一个新分支(名为),然后将其签出。

然后,您可以执行以下操作:

git rebase master
git checkout master
git merge --ff lost
Run Code Online (Sandbox Code Playgroud)

将您恢复的两个提交移到master分支顶部,并使它们显示为master分支历史的一部分。

如果一切看起来不错,那么您可以运行git branch -d lost以删除该lost分支。