我刚刚制作了一个简单的脚本,并在 GitHub 上为它创建了一个新的存储库。初始化本地存储库,将脚本移动到存储库并pull
调用 GitHub 存储库(仅包含一个README.md
文件)后,脚本消失了。这是正常行为吗?有没有办法恢复文件?
以下是执行时的命令:
$ mkgithub ~/dev/cr2meta2jpg
Initialized empty Git repository in /home/username/dev/cr2meta2jpg/.git/
$ mv test.sh ~/dev/cr2meta2jpg/cr2meta2jpg.sh
$ cd ~/dev/cr2meta2jpg/
$ ls
cr2meta2jpg.sh
$ git pull
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From github.com:l0b0/cr2meta2jpg
* [new branch] master -> origin/master
$ ls
README.md
Run Code Online (Sandbox Code Playgroud)
Jon*_*yJD 11
Agit pull
不会覆盖本地更改,除非您git add
之前使用过。即使在这种情况下,您仍然可以恢复数据。
当你git add
在 pull 之前发出:
mkgithub blub
cp test.sh blub/
cd blub/
git add test.sh
git pull
Run Code Online (Sandbox Code Playgroud)
拉将删除test.sh
. 只有在本地存储库中没有提交时,它才会执行此操作。添加提交后,这不会删除test.sh
(git 要么忽略它,要么报告合并冲突)
文件不会丢失。它仍然作为一个悬空的 blob 存在于 Git 存储库中。
要恢复文件:
$ git fsck
Checking object directories: 100% (256/256), done.
Checking objects: 100% (401/401), done.
dangling blob 541060d8292ff808c9715265d063f1bae220da7c
$ git show 541060d8292ff808c9715265d063f1bae220da7 > test.sh
Run Code Online (Sandbox Code Playgroud)
只要您之后没有发出此问题,此方法git gc --prune=now
就有效。
归档时间: |
|
查看次数: |
10287 次 |
最近记录: |