为什么git pull恢复我从工作目录中删除的文件?

时间:2012-07-23 14:02:01

标签: git

我对git有疑问 当我拉动时,我的问题如下:

git pull origin example

直到完美!!然后我做了

rm -Rf rootdirectory

然后

git commit -am "Delete files"

然后我再次拉,因为我需要这个文件

git pull origin example

但它不会再次出现根目录

这是一条消息:

Already up-to-date.

我怎样才能再次使用git pull获取文件?

4 个答案:

答案 0 :(得分:7)

git pull没有改变的原因是你没有从远程存储库中提取数据,而是提取更改。并且git没有任何变化!

Git不是数据存储。它是版本控制系统

但是,如果您想结帐以前的状态,您可以轻松地执行此操作:

git checkout HEAD~1

这意味着您将工作副本重置为最新提交之前的先前状态。

但是,如果您想完全删除删除文件的提交,您也可以这样做:

git reset --hard HEAD~1

答案 1 :(得分:3)

我是否认为你已经习惯了Subversion,如果你删除了文件,然后做了svn update,文件会被重新填充?我也是。

在git中,您必须执行git checkout才能将文件从回购中删除。您还可以使用git reset --hard更新文件,但这样做会消除工作目录中的任何更改。

答案 2 :(得分:1)

这就是git的工作方式。提取origin/example并提交更改(“删除文件”)后,您的本地仓库将超过{1}提交的那个:

origin/master

A---B---C origin/master \ D master 提交D的位置。另一个Delete files为您git pull提供了Already up-to-date,因为origin/master上没有新的提交可以被提取到您的本地仓库。

要“再次获取文件”,您可以撤消上次提交:

git checkout HEAD~1

或者您可以重置本地存储库以匹配远程存储库:

git reset --hard origin/master

答案 3 :(得分:1)

转到删除文件的目录,确保您在所需的分支上并输入" git checkout。"这将带回您在当前分支上删除的文件。