基本上,我在我的本地计算机上有一个代码库,我运行了:
git init
git add .
在这一点上,我意识到我想要添加一个.gitignore文件。
所以我认为我需要取消暂存的提交,在一个业余的操作中,执行了以下命令:
git reset --hard
现在我的整个代码库都不见了...
这能够被撤销吗?!
基本上,我在我的本地计算机上有一个代码库,我运行了:
git init
git add .
在这一点上,我意识到我想要添加一个.gitignore文件。
所以我认为我需要取消暂存的提交,在一个业余的操作中,执行了以下命令:
git reset --hard
现在我的整个代码库都不见了...
这能够被撤销吗?!
git add .
命令已将你的文件内容添加到git中;不过,它没有创建列出文件名和它们的名称的“目录结构”。
您可以执行以下操作:
运行
git fsck --full --unreachable --no-reflog | grep blob > blobs.txt
# the content of blobs.txt will look like :
unreachable blob 08bf360988858a012dab3af4e0b0ea5f370a2ae8
unreachable blob 21bf7ea93f9f9cc2b3ecbed0e5ed4fa45c75eb89
unreachable blob 08c12ef37075732cf4645269ab5687ba6ba68943
...
cat blobs.txt | awk '{ print $3 }' | while read blobid; do
git show $blobid > $blobid.txt
done
08bf360988858a012dab3af4e0b0ea5f370a2ae8.txt
21bf7ea93f9f9cc2b3ecbed0e5ed4fa45c75eb89.txt
08c12ef37075732cf4645269ab5687ba6ba68943.txt
...
git add .
命令中包含的所有文件都应该在这里表示。node_modules/
文件夹,因此您将拥有您添加的所有js库的代码...),
src/my_controller.js
,src/model/my_model.js
等。
node_modules/
文件排除在外:
grep -e some_package_I_remember
),
package.json
(您也可能会找到lockfile),然后运行npm install
或yarn install
node_modules/
文件夹,看起来非常像之前的那个node_modules/
文件夹,并创建一个提交,git fsck ... > blobs.txt
命令,您应该会得到一个列表,其中包含node_modules
之外的内容...
rm *
的命令。 - chepner