我检查了另一个更新的分支,然后进行了一些更改,切换回主git,现在更改消失了!我能把它们还给他们吗?终端基本上是:
$ git commit
[detached HEAD 7c09e17] Fixed some stuff
files changed, insertions(+), deletions(-)
$ git push master
fatal: 'master' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
$ git checkout master
Previous HEAD position was 7c09e17... Fixed some stuff
Switched to branch 'master'
$ git merge theother/directory
Run Code Online (Sandbox Code Playgroud)
Mat*_*hen 36
假设你还在掌握:
git merge 7c09e17
Run Code Online (Sandbox Code Playgroud)
应该够了.git如果你看终端,通常会告诉你提交ID.
Ian*_*Gow 11
我遇到了类似的问题.我发现git reflog是一个救生员.如果它有助于说明它的使用,这里是输出:
e3191c5 HEAD@{0}: checkout: moving from ec31ccf0735240d0cdc5a44fd443039c3caa43f0 to master
ec31ccf HEAD@{1}: commit: Added code and data for simulation.
781b9ee HEAD@{2}: checkout: moving from 3bd804e635b913840c71b7f8a33665460580d45f to 781b
3bd804e HEAD@{3}: checkout: moving from master to 3bd804
Run Code Online (Sandbox Code Playgroud)
我的情况有点不同,因为我从一个非常旧的提交开始在一个独立的HEAD状态下进行了提交.
如果我只是想合并ec31ccf0735240d0cdc5a44fd443039c3caa43f0(也ec31ccf就是我曾经去过的地方)master,我认为git merge ec31ccf或者git rebase ec31ccf可能有效.但这主要是在我的案例中合并古代历史(合并冲突等).
相反,我只是想恢复我所做的ec31ccf,并且git cherry-pick ec31ccf工作得很好.