首页
学习
活动
专区
圈层
工具
发布

复活
EN

Stack Overflow用户
提问于 2021-02-04 10:38:14
回答 1查看 23关注 0票数 0

我一直致力于我的进步,并希望推动今天。出于某些原因,我发现了一个错误,一个独立的头部和(deny updating a hidden ref)。现在,在做了不同的步骤,以重新连接它,我的工作已经没有了。我无法恢复它,甚至无法找到这些提交。我经常犯错误,但没有用力。现在我有点不知所措了。

这是历史,我以为我在Feature_SaveAs_Unfinished分行。

代码语言:javascript
复制
 2004  git commit -am "Removing old logs"
 2005  git push
 2006  git pull origin Feature_SaveAs_Unfinished 
 2007  git push origin origin/Feature_SaveAs_Unfinished 

所有这些都不起作用是因为头被分离了。

代码语言:javascript
复制
 2007  git push origin origin/Feature_SaveAs_Unfinished 
 2008  git push --mirror
 2009  git pull
 2010  git pull origin Feature_SaveAs_Unfinished 
 2011  git push origin Feature_SaveAs_Unfinished 
 2012  git status
 2013  git checkout origin/Feature_SaveAs_Unfinished

这里我收到一条信息,如果我想保存我的工作,我应该为它创建一个额外的分支。

代码语言:javascript
复制
 2014  git branch Feature_SaveAs_040221_Automerge
 2015  git checkout origin/Feature_SaveAs_Unfinished 
 2016  git status
 2017  git pull
 2018  git pull origin Feature_SaveAs_Unfinished 
 2019  git checkout origin/Feature_SaveAs_Unfinished 

此时,我在SO:https://stackoverflow.com/a/5772882/2516892上查找了一些解决方案,接下来的步骤是根据该帖子:

代码语言:javascript
复制
 2021  git branch temp
 2022  git checkout temp
 2023  git log --graph --decorate --pretty=oneline --abbrev-commit master origin/master temp
 2024  git diff master temp
 2025  git diff origin/master temp
 2026  git branch -f master temp
 2027  git checkout master
 2028  git status
 2029  git branch -d temp

我正试着回到我工作的分支,因为我不是主人。

代码语言:javascript
复制
 2030  git status
 2031  git branch -f Feature_SaveAs_040221_Automerge master
 2032  git checkout Feature_SaveAs_040221_Automerge 
 2033  git status
 2034  git pull

现在我找不到我的工作了。我修改的文件是一些很旧的版本。(可能来自师父)。我不知道怎么回去找他们。

我知道我最近在调试消息中使用了,所以我检查了一下。

代码语言:javascript
复制
$ rgrep -rni ☆
Binary file .git/objects/98/9574bda27235aa00dd6ad2846512c69a87a2a3 matches
Binary file .git/objects/9d/c18eb8bba4d381ad0a96c782fec57928dc92d2 matches
Binary file .git/objects/pack/pack-ca6560ce8bd83b69093cea6fbd492ff9ef1a54c0.pack matches

这是另一回事:

代码语言:javascript
复制
$ ll 9574bda27235aa00dd6ad2846512c69a87a2a3 
-r--r--r-- 1 qohelet qohelet 2244035 Nov  3 17:38 9574bda27235aa00dd6ad2846512c69a87a2a3

但仅此而已:

代码语言:javascript
复制
$ ll c18eb8bba4d381ad0a96c782fec57928dc92d2
-r--r--r-- 1 qohelet qohelet 3581541 Feb  2 16:51 c18eb8bba4d381ad0a96c782fec57928dc92d2

我使用了一些像gitk这样的工具来显示最后一次提交。我什么都找不到。即使是当前创建的分支Feature_SaveAs_040221_Automerge也指向几周前完成的提交(尽管我半小时前创建了分支)。

该怎么办呢?我将如何获得我的更改并提交到一个已退出的提交?

编辑(1):

代码语言:javascript
复制
$ git reflog 
b21832d (HEAD -> Feature_SaveAs_Unfinished, origin/Feature_SaveAs_Unfinished, master, Feature_SaveAs_040221_Automerge) HEAD@{0}: checkout: moving from Feature_SaveAs_040221_Automerge to Feature_SaveAs_Unfinished
b21832d (HEAD -> Feature_SaveAs_Unfinished, origin/Feature_SaveAs_Unfinished, master, Feature_SaveAs_040221_Automerge) HEAD@{1}: reset: moving to HEAD
b21832d (HEAD -> Feature_SaveAs_Unfinished, origin/Feature_SaveAs_Unfinished, master, Feature_SaveAs_040221_Automerge) HEAD@{2}: checkout: moving from Feature_SaveAs_Unfinished to Feature_SaveAs_040221_Automerge
b21832d (HEAD -> Feature_SaveAs_Unfinished, origin/Feature_SaveAs_Unfinished, master, Feature_SaveAs_040221_Automerge) HEAD@{3}: checkout: moving from Feature_SaveAs_040221_Automerge to Feature_SaveAs_Unfinished
b21832d (HEAD -> Feature_SaveAs_Unfinished, origin/Feature_SaveAs_Unfinished, master, Feature_SaveAs_040221_Automerge) HEAD@{4}: checkout: moving from master to Feature_SaveAs_040221_Automerge
b21832d (HEAD -> Feature_SaveAs_Unfinished, origin/Feature_SaveAs_Unfinished, master, Feature_SaveAs_040221_Automerge) HEAD@{5}: checkout: moving from Feature_SaveAs_040221_Automerge to master
b21832d (HEAD -> Feature_SaveAs_Unfinished, origin/Feature_SaveAs_Unfinished, master, Feature_SaveAs_040221_Automerge) HEAD@{6}: checkout: moving from Feature_SaveAs_Unfinished to Feature_SaveAs_040221_Automerge
b21832d (HEAD -> Feature_SaveAs_Unfinished, origin/Feature_SaveAs_Unfinished, master, Feature_SaveAs_040221_Automerge) HEAD@{7}: pull: Fast-forward
5ac1604 HEAD@{8}: checkout: moving from Feature_SaveAs_040221_Automerge to Feature_SaveAs_Unfinished
b21832d (HEAD -> Feature_SaveAs_Unfinished, origin/Feature_SaveAs_Unfinished, master, Feature_SaveAs_040221_Automerge) HEAD@{9}: checkout: moving from Feature_SaveAs_040221_Automerge to Feature_SaveAs_040221_Automerge
b21832d (HEAD -> Feature_SaveAs_Unfinished, origin/Feature_SaveAs_Unfinished, master, Feature_SaveAs_040221_Automerge) HEAD@{10}: checkout: moving from master to Feature_SaveAs_040221_Automerge
b21832d (HEAD -> Feature_SaveAs_Unfinished, origin/Feature_SaveAs_Unfinished, master, Feature_SaveAs_040221_Automerge) HEAD@{11}: checkout: moving from temp to master
b21832d (HEAD -> Feature_SaveAs_Unfinished, origin/Feature_SaveAs_Unfinished, master, Feature_SaveAs_040221_Automerge) HEAD@{12}: checkout: moving from b21832d0d8e5b9b58aa33cd8fd1c11815f635756 to temp
b21832d (HEAD -> Feature_SaveAs_Unfinished, origin/Feature_SaveAs_Unfinished, master, Feature_SaveAs_040221_Automerge) HEAD@{13}: checkout: moving from bb442dfc6900031ab9a17be4f3ea465a90d7b86f to origin/Feature_SaveAs_Unfinished
bb442df HEAD@{14}: commit: Removing old logs
f7ef5de HEAD@{15}: commit: SaveAs sollte gehen. Test fehlt noch

吉特秀

代码语言:javascript
复制
git show bb442df
commit bb442dfc6900031ab9a17be4f3ea465a90d7b86f
Author: qohelet
Date:   Thu Feb 4 09:03:16 2021 +0000

    Removing old logs

diff --git a/DjangoMoP/settings.py b/DjangoMoP/settings.py
index 3e81225..316d976 100755
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-04 10:48:54

运行git reflog以使Git溢出HEAD重新触发器的内容。这将使您可以提交散列ID(左边)、编号为@{...}后缀的名称(在散列ID旁边),以及关于HEAD标识的提交内容的信息(用于提交,即提交主题行)。

如果其中一个主题行看起来很有希望,请尝试提交散列ID:例如,git show hash。如果这是您要寻找的提交,您已经找到它:为它创建一个分支名称。如果没有,那就继续用重装枪。若要创建指向给定提交散列hash的新分支名称newname,请使用git branch newname hash

考虑到您可以搜索一些数据(或者像9dc18eb8bba4d381ad0a96c782fec57928dc92d2-see这样的blob哈希ID,例如git show 9dc18eb8bba4d381ad0a96c782fec57928dc92d2的输出,以查看是否是感兴趣的文件),您也可以搜索reflog中的提交,以查看其中任何一个在快照中是否有一个带有blob哈希ID的文件。这通常不如快速“查看最上面的几个重发条目”方法那么有效,但请注意,git ls-tree -r hash | grep 9dc18eb8bba4d381ad0a96c782fec57928dc92d2是一种查找给定提交散列ID hash是否引用该文件版本的方法。

附带注意:您链接的答案指的是某个人,他们在执行分离头设置时正处于git rebase的中间,然后丢失了它;您引用的命令在您设置了一个分支名以找到提交后非常有用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66043933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档