![](/img/trans.png)
[英]How can I prevent my local files, which are deleted and ignored in remote repo, being deleted when pull from git?
[英]my local git repo has “not staged” deleted files, remote is file, how do I pull the missing files?
我已经读过有关git clean
和git 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.