【问题标题】:Git pull - deleted filesgit pull - 删除的文件
【发布时间】:2011-10-29 05:46:36
【问题描述】:

我有一个开发服务器和几个生产服务器。我确实从开发人员提交到远程存储库并设置了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 时,是否会从生产服务器(从磁盘)中删除“已删除”文件? 我只是希望它们不被跟踪,而不是从磁盘中删除。

谢谢

【问题讨论】:

  • 我不禁想到以这种方式管理部署到生产环境不是一个好主意。
  • 我同意你的看法。不知道您是否会认为 pull 不是真正自动的更好,我从 dev 执行“git push production”。编辑了问题。我个人更喜欢使用 rsync 脚本来完成所有这些工作。

标签: git repository pull


【解决方案1】:

是的,如果您拉取包含删除的提交,则文件将被删除。之后您需要手动恢复文件。

【讨论】:

    【解决方案2】:

    是的,如果您执行git pull,文件将被删除。 Git 不能做任何其他事情——假设存储库中的某些代码取决于某个文件的存在或不存在。删除文件可能会产生重大影响,因此 Git 在拉取文件时必须删除该文件。

    【讨论】:

    • 谢谢!在这种情况下要犯一个大错误:)
    【解决方案3】:

    正如其他人回答的那样,您需要手动恢复已删除的文件。你可以这样做

    git checkout sha1 -- file1.jpg file2.jpg
    

    sha1 是合并前的提交。有多种方法可以得到那个,比如HEAD~1 或从 pull 的输出中最简单的副本。有类似的东西

    Updating bea26f6..d5a6bc6
    

    第一次提交是你之前本地的那个。

    【讨论】:

      猜你喜欢
      • 2018-02-02
      • 1970-01-01
      • 2019-11-01
      • 1970-01-01
      • 2019-08-14
      • 1970-01-01
      • 2016-10-28
      • 2020-12-30
      • 2016-09-13
      相关资源
      最近更新 更多