我有一个开发服务器和几个生产服务器。我确实从开发人员提交到远程存储库并进行git push production
设置,从生产服务器发出拉动。
我需要删除一些带有静态文件的目录,因此我做了这个
Remove an Existing File from a Git Repo
(摘要:做了git rm --cached myfolders
,之后添加了.gitignore文件夹)
我还没有做出改变。执行git status
# deleted: file1.jpg
# deleted: file2.jpg
# deleted: file3.jpg
# deleted: file4.jpg
# deleted: file5.jpg
我担心的是:在执行git pull
时,是否会从生产服务器(从磁盘)中删除“已删除”文件?
我只是希望它们不被跟踪,但不会从磁盘中删除。
由于
答案 0 :(得分:11)
是的,如果您提取包含删除的提交,则会删除这些文件。您需要手动恢复文件。
答案 1 :(得分:4)
是的,如果您执行git pull
,则会删除这些文件。 Git无法做任何其他事情 - 假设存储库中的某些代码依赖于某个文件的存在或不存在。删除文件可能会产生严重的结果,因此Git必须在提取时删除该文件。
答案 2 :(得分:0)
正如其他人回答的那样,您需要手动恢复已删除的文件。你可以这样做
git checkout sha1 -- file1.jpg file2.jpg
其中 sha1
是合并前的提交。有多种方法可以获取该方法,例如使用 HEAD~1
或从拉取输出中最简单的副本。有类似的东西
Updating bea26f6..d5a6bc6
第一个提交是您之前在本地提交的那个。