簡體   English   中英

重置后恢復git中的文件-難以添加文件(未提交!)

[英]Recover files in git after reset --hard on added files(not committed!)

我只有很少的文件從未提交過。 我添加了這些文件,並且錯誤地執行了“ git reset --hard”

我想恢復那些文件。

請幫助我任何人。

這是不可能的。 這些文件丟失。

如果您此后未做任何操作,仍然可以保存它們。 git垃圾收集器不會立即運行。 嘗試遵循

我只從stackoverflow找到了答案。

from: 如何撤消git reset --hard HEAD〜1?

(:)這個答案在該頁面中提到的所有答案中都獲得了倒數第二個投票。。。但是我必須說..這是唯一一個拯救我的答案...。

我這樣做:

第1步:

manan@manan-pc:~/new_cms/abc/.git$ GIT_DIR! $ git fsck
Checking object directories: 100% (256/256), done.
Checking objects: 100% (94312/94312), done.
dangling blob 34122c30800b0fd91bb8418efbbb230e75fe3dbe
dangling blob 0e25ccea407f3c19abc1433e5732a5f2a20191f6
dangling blob 90afe07d111640d86f02e09e4939d02bbf3f5d56
dangling blob e8b4dcb611257ddb13c29c09d39cc660a6bace02
dangling blob 3ad660983baa3608cd333daa8c6d9d47420d5e0b
dangling commit 8932f1f0c8df1917f38a6847a1f21fa54c6d6355
dangling blob 86548593d0f3337ecb7bc5d665a9f48148d9d157
dangling commit 6cf531cad6822132fd183e7e336a13f38d8fd8bd
dangling commit 0c025ebf3fe8d1632ec11b4734fb504deb06aa0a
dangling blob 6260329668086042177aab9f9a1e2a3720204bd8
dangling blob 887732bd14017d1d4558160e12a3666b131a9604
dangling blob f08e12e5724f7976f1596f963ac60e2ebd11b44c
dangling blob 079077a183e8450ab35670b92fd2ce6a8a4b7a9a
dangling commit 6dd8f3cddfc45340c6d0e0dc5fbaa2bd39b11fdb
dangling blob 1ee3ffc72b23bfcfc08dcc0fee8eac10cd4ea6e2

第2步:

git show 34122c30800b0fd91bb8418efbbb230e75fe3dbe

這將顯示在該文件中進行的提交/更改。 (就像正常的'git show commit_no'一樣工作)

但這只會終端上顯示前幾行 ...

一旦執行了“ git reset--hard”,就無法自動恢復該文件...

所以我騙了

第三步:

manan@manan-pc:~/new_cms/abc/.git$ GIT_DIR! $ git show 1ee3ffc72b23bfcfc08dcc0fee8eac10cd4ea6e2 > /home/manan/Desktop/sample.txt
manan@manan-pc:~/new_cms/abc/.git$ GIT_DIR! $ git show 079077a183e8450ab35670b92fd2ce6a8a4b7a9a > /home/manan/Desktop/sample1.txt
manan@manan-pc:~/new_cms/abc/.git$ GIT_DIR! $ git show f08e12e5724f7976f1596f963ac60e2ebd11b44c > /home/manan/Desktop/sample2.txt
manan@manan-pc:~/new_cms/abc/.git$ GIT_DIR! $ git show 887732bd14017d1d4558160e12a3666b131a9604 > /home/manan/Desktop/sample3.txt
manan@manan-pc:~/new_cms/abc/.git$ GIT_DIR! $ git show 6260329668086042177aab9f9a1e2a3720204bd8 > /home/manan/Desktop/sample4.txt
manan@manan-pc:~/new_cms/abc/.git$ GIT_DIR! $ git show 0c025ebf3fe8d1632ec11b4734fb504deb06aa0a > /home/manan/Desktop/sample5.txt
manan@manan-pc:~/new_cms/abc/.git$ GIT_DIR! $ git show 6cf531cad6822132fd183e7e336a13f38d8fd8bd > /home/manan/Desktop/sample6.txt
manan@manan-pc:~/new_cms/abc/.git$ GIT_DIR! $ git show 86548593d0f3337ecb7bc5d665a9f48148d9d157 > /home/manan/Desktop/sample7.txt
manan@manan-pc:~/new_cms/abc/.git$ GIT_DIR! $ git show 8932f1f0c8df1917f38a6847a1f21fa54c6d6355 > /home/manan/Desktop/sample8.txt
manan@manan-pc:~/new_cms/abc/.git$ GIT_DIR! $ git show 3ad660983baa3608cd333daa8c6d9d47420d5e0b > /home/manan/Desktop/sample9.txt
manan@manan-pc:~/new_cms/abc/.git$ GIT_DIR! $ git show e8b4dcb611257ddb13c29c09d39cc660a6bace02 > /home/manan/Desktop/sample10.txt
manan@manan-pc:~/new_cms/abc/.git$ GIT_DIR! $ git show 90afe07d111640d86f02e09e4939d02bbf3f5d56 > /home/manan/Desktop/sample11.txt
manan@manan-pc:~/new_cms/abc/.git$ GIT_DIR! $ git show 0e25ccea407f3c19abc1433e5732a5f2a20191f6 > /home/manan/Desktop/sample12.txt
manan@manan-pc:~/new_cms/abc/.git$ GIT_DIR! $ git show 34122c30800b0fd91bb8418efbbb230e75fe3dbe > /home/manan/Desktop/sample13.txt
manan@manan-pc:~/new_cms/abc/.git$ GIT_DIR! $ git show 6dd8f3cddfc45340c6d0e0dc5fbaa2bd39b11fdb > /home/manan/Desktop/sample14.txt

(感謝我的大學教授……他聰明地教我們如何在* NIX操作系統上使用輸入/輸出重定向。)

步驟4:將這些文件替換為原始文件。

這樣,您可以在“ git reset --hard”之后“手動”恢復以前的更改。

希望您永遠不會遇到這種情況...

:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM