繁体   English   中英

为什么git pull没有带回我删除的目录?

[英]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 pullgit checkoutgit revert也有助于恢复已删除的文件

git reset --hard <commit hash>表示HEAD将指向一个特定的提交,并且在该提交哈希之后你提交的任何提交将不可用。 这样做的原因是因为您将HEAD指向单独的提交HASH。 如果你强行推,那么你将失去所有的提交。

注意:在git中使用git reset --hard命令时要小心。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM