![](/img/trans.png)
[英]Why doesn't git pull restore files I've deleted from my working directory?
[英]Why doesn't git pull bring back directories that I've deleted?
我刚刚开始学习如何使用git
,进展顺利。
作为一个实验,我使用push
来上传两个目录(每个包含两个文件)和根目录中的两个文件。 这很好。
然后我删除了我在本地的两个目录之一(但没有在git上)。 当我使用git status
,似乎意识到这一点:
deleted: test/Testfile.as
deleted: test/Testile2.as
但是当我使用git pull
来恢复我的文件时,它们似乎没有返回到我的本地文件夹。 我也试过git fetch
。
我似乎能够获得所有东西的唯一方法是git clone
,但这似乎不合逻辑,因为我需要在本地删除我的主目录,然后再次克隆它(或者为克隆文件指定一个新位置) 。
从github检索已在本地删除的文件和文件夹的适当方法是什么?
git pull
只是合并你工作目录中提取的提交,不会恢复你删除的目录(但可能会警告你有关冲突。)
如果您删除了工作目录中的文件夹,则必须执行以下操作:
git checkout -- test
把它拿回来。
或者你可以使用git reset --hard
来完全将你的工作目录带到HEAD状态。
您希望将存储库返回到以前的工作版本。 这是git-reset的工作。
git reset --hard
一定要仔细阅读git-reset的这个有用的解释
你还可以查看这些文件,如果你想:
git checkout -- test/
git pull将合并更改。 把它想象成你修改过的文件。 如果您修改了它,则git pull不会用遥控器副本替换文件的内容。 即使存在相互矛盾的变化,它也只是警告你一个快进的。
如果您的存储库处于删除是唯一未提交的更改的状态,并且您想要撤消它,那么执行git reset head --hard
或者,如果您想要留下其他更改,请执行git checkout -- test
除了git pull
和git checkout
, git revert
也有助于恢复已删除的文件
git reset --hard <commit hash>
表示HEAD将指向一个特定的提交,并且在该提交哈希之后你提交的任何提交将不可用。 这样做的原因是因为您将HEAD指向单独的提交HASH。 如果你强行推,那么你将失去所有的提交。
注意:在git中使用git reset --hard
命令时要小心。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.