【问题标题】:Git and Rails: ignore database.ymlGit 和 Rails:忽略 database.yml
【发布时间】:2023-03-04 18:02:01
【问题描述】:

我终于迈出了一大步,放弃了 SVN 转而使用 Git 并爱上了它。它一定在某个地方,但我真的找不到如何做到这一点,gitosis 友好。

我将我的存储库“站点”存储在远程计算机上。我推送我的工作副本并将这些数据拉到生产机器上。一个主要的区别是“一个”文件:database.yml,它在生产机器上永远不会改变。

当从存储库中提取数据时,是否有可能(如果有,如何)只“忽略”这个文件?在这一点上,我正在手动执行此操作,但我将不胜感激。

谢谢。

【问题讨论】:

    标签: git macos gitosis


    【解决方案1】:

    是的,有可能。

    git update-index --skip-worktree FILENAME

    git update-index --assume-unchanged FILENAME

    对于您的情况,FILENAME 将是 config/database.yml

    如果您使用第二个命令(假设不变),文件将在git reset 命令之后恢复。

    【讨论】:

      【解决方案2】:

      如果“database.yml”在您在忽略文件中指定之前已添加到您的 git 存储库中,我认为您必须将其删除:

      git rm config/database.yml
      git commit -a -m "Removed database.yml"
      

      然后,在你的项目中添加 database.yml 文件,就可以正常工作了。

      【讨论】:

      • 您很可能希望将其保留在本地磁盘上:git rm --cached config/database.yml
      【解决方案3】:

      我的建议:甚至不要将它放入 git。制作database.yml.skel 或类似的东西,以便用户可以模拟自己的database.yml,并将其作为示例。但是,我认为 conf 文件不属于版本控制 - 正是因为您提到的原因。

      忽略很容易:事实上,有几种方法可以做到这一点。这个正确的是.gitignore文件;另一个是.git/info/excludes。详情请见this answer

      所以,我的头顶:

      echo database.yml >> config/.gitignore
      git add config/.gitignore
      git commit
      

      【讨论】:

      • 或者把config/database.yml放到.gitignore中
      • 如果有人使用上面的代码并且他们已经有一个.gitignore,它就会消失。我建议使用>>,并且仅在第一次失败时使用>。 (取决于您的 shell 的配置方式,>> 可能在您拥有文件和没有文件的两种情况下都有效。)所以第一行将改为 echo database.yml >> config/.gitignore
      • 另外,如果 database.yml 已经在 repo 中,这对你没有好处。有关如何处理这种情况的详细信息,请参阅 Evgeny 的答案。 (我还没有测试过他的方法:它与我的有点不同,但你基本上是从 repo 中删除文件,因此可以应用 .gitignore。)
      • @iconoclast:我从来没有说过如果它已经在回购中该怎么办,只是不应该。 Evgeny 的代码绝对不会从 repo 中删除代码,并且与 .gitignore 无关(除了功能上的轻微相似性)。而且我假设每个使用git 的人也能分辨出>>> 之间的区别,并根据场合进行修改(或使用编辑器来做同样的事情)。
      • 是的,但很明显它已经在 repo 中,因为他询问如何在 PULLS 时忽略它,而不是从工作目录中忽略它。 (记住他是 Git 新手,所以你不能指望他的术语是标准的。)他似乎希望 repo 中的文件不覆盖他的生产文件。
      【解决方案4】:

      如果应用程序设计为可供其他用户下载和安装,则删除 database.yml 不是一个好主意。如果您有不成熟的用户安装您的应用程序,那么删除该文件是一种笨拙的举动。在这种情况下,告诉 git 在使用默认值添加文件后忽略该文件是正确的方法。

      【讨论】:

        【解决方案5】:

        如果您想删除系统缓存或从本地计算机中删除,只需运行以下命令。

        git rm --cached config/database.yml 
        

        如果要从 git 中删除,请运行以下命令

        git rm config/database.yml
        git commit -a -m "Removed database.yml"
        git push branch_name
        

        【讨论】:

          猜你喜欢
          • 2012-01-19
          • 1970-01-01
          • 1970-01-01
          • 2011-07-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-07
          相关资源
          最近更新 更多