是否可以撤消由以下命令引起的更改?如果是,怎么办?
git reset --hard HEAD~1
是否可以撤消由以下命令引起的更改?如果是,怎么办?
git reset --hard HEAD~1
当前回答
git-relog并返回到最后一个HEAD6a56624(HEAD->master)HEAD@{0}:重置:移动到HEAD~31a9bf73 HEAD@{1}:提交:在模型中添加更改生成二进制
其他回答
git-relog并返回到最后一个HEAD6a56624(HEAD->master)HEAD@{0}:重置:移动到HEAD~31a9bf73 HEAD@{1}:提交:在模型中添加更改生成二进制
帕特·诺茨是正确的。你可以在几天内收回承诺。git只会在大约一个月后收集垃圾,除非您明确告诉它删除更新的blob。
$ git init
Initialized empty Git repository in .git/
$ echo "testing reset" > file1
$ git add file1
$ git commit -m 'added file1'
Created initial commit 1a75c1d: added file1
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 file1
$ echo "added new file" > file2
$ git add file2
$ git commit -m 'added file2'
Created commit f6e5064: added file2
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 file2
$ git reset --hard HEAD^
HEAD is now at 1a75c1d... added file1
$ cat file2
cat: file2: No such file or directory
$ git reflog
1a75c1d... HEAD@{0}: reset --hard HEAD^: updating HEAD
f6e5064... HEAD@{1}: commit: added file2
$ git reset --hard f6e5064
HEAD is now at f6e5064... added file2
$ cat file2
added new file
您可以在示例中看到,由于硬重置,file2被删除,但当我通过reflog重置时,它被放回原位。
答案隐藏在上面的详细响应中,您可以简单地执行以下操作:
$> git reset --hard HEAD@{1}
(参见git-relog show的输出)
这救了我的命:https://medium.com/@CarrieGuss/如何从数字-数字-设置-b830b5e3f60c中恢复
基本上,您需要运行:
for blob in $(git fsck --lost-found | awk ‘$2 == “blob” { print $3 }’); do git cat-file -p $blob > $blob.txt; done
然后手动完成痛苦,将文件重新组织到正确的结构。
注意:千万不要使用git重置,如果你不能100%理解它的工作原理,最好不要使用它。
数字刷新
在列表中找到提交sha,然后将其复制并粘贴到以下命令中:
git cherry pick<the sha>