我一直致力于我的进步,并希望推动今天。出于某些原因,我发现了一个错误,一个独立的头部和(deny updating a hidden ref)。现在,在做了不同的步骤,以重新连接它,我的工作已经没有了。我无法恢复它,甚至无法找到这些提交。我经常犯错误,但没有用力。现在我有点不知所措了。
这是历史,我以为我在Feature_SaveAs_Unfinished分行。
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 所有这些都不起作用是因为头被分离了。
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这里我收到一条信息,如果我想保存我的工作,我应该为它创建一个额外的分支。
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上查找了一些解决方案,接下来的步骤是根据该帖子:
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我正试着回到我工作的分支,因为我不是主人。
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现在我找不到我的工作了。我修改的文件是一些很旧的版本。(可能来自师父)。我不知道怎么回去找他们。
我知道我最近在调试消息中使用了☆,所以我检查了一下。
$ 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这是另一回事:
$ ll 9574bda27235aa00dd6ad2846512c69a87a2a3
-r--r--r-- 1 qohelet qohelet 2244035 Nov 3 17:38 9574bda27235aa00dd6ad2846512c69a87a2a3但仅此而已:
$ ll c18eb8bba4d381ad0a96c782fec57928dc92d2
-r--r--r-- 1 qohelet qohelet 3581541 Feb 2 16:51 c18eb8bba4d381ad0a96c782fec57928dc92d2我使用了一些像gitk这样的工具来显示最后一次提交。我什么都找不到。即使是当前创建的分支Feature_SaveAs_040221_Automerge也指向几周前完成的提交(尽管我半小时前创建了分支)。
该怎么办呢?我将如何获得我的更改并提交到一个已退出的提交?
编辑(1):
$ 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吉特秀
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发布于 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的中间,然后丢失了它;您引用的命令在您设置了一个分支名以找到提交后非常有用。
https://stackoverflow.com/questions/66043933
复制相似问题