繁体   English   中英

我的本地git repo已“未暂存”已删除的文件,远程是文件,如何提取丢失的文件?

[英]my local git repo has “not staged” deleted files, remote is file, how do I pull the missing files?

我已经读过有关git cleangit reset但我认为它们不能满足我的需要。 我尝试了git pull但未能解决问题(git pull导致: Already up-to-date.

我在github上的远程仓库很好。

我只是将所有Rails项目从旧PC复制到新Mac,Mac也具有正常工作的Rails开发环境。

其他一切都正常,但是不知何故,我的许多数据库/迁移文件在本地都丢失了。 (不知道为什么...没有其他丢失。)

当我cd到该目录并运行git status我看到同样的事情:

# On branch master
# Changes not staged for commit:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   deleted:    db/migrate/20110330064532_init_user_guids.rb
#   deleted:    db/migrate/20110330065055_init_master_report_key.rb
#   deleted:    db/migrate/20110331001956_create_recurly_accts.rb

无论如何,我正在寻找将所有缺少的(未暂存和未删除的)文件从远程(来源)拉到本地的命令,而不在本地删除任何未跟踪的文件(例如我的sqlite数据库)。

还是一个git命令可以将它们从我的本地git存储库中恢复,因为删除操作是“未暂存”的?

(我应该补充一点,我没有其他未分级的更改……只是那些我需要替换的丢失的文件。)

如果唯一的更改是丢失的文件,则可以使用git reset --hard HEAD ,这将使所有内容恢复到原始状态。 但是,它不会删除任何未跟踪的文件(为此需要git clean )。 因此,这应该可以安全地运行,因为它可以还原丢失的文件,而无需跟踪数据库。

尝试:

git checkout db/migrate/20110330064532_init_user_guids.rb

等等

这种状态只告诉您文件在存储库中,而不在工作副本中。 存储库也随您一起在计算机上。 git status认为您将rm db/migrate/...做为您可能要提交的更改(就像您编辑文件一样)。 要撤消这些更改,您可以使用git checkout db/migrate/...从本地存储库中获取未经修改(在这种情况下,未删除)的副本。 如果您没有其他未决的更改,则可以使用git reset --hard

您不需要从远程存储库中获取代表这些文件的对象,除非由于某种不可思议的原因,这些对象也丢失了。 在这种情况下,简单的git fetch会将对象移到本地存储库,您可以如上所述恢复工作副本。

暂无
暂无

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

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