【问题标题】:Unstage a file in previous commits in git在 git 中的先前提交中取消暂存文件
【发布时间】:2014-04-03 23:23:07
【问题描述】:

我们将 git 与我们的 iOS 应用程序一起使用,并且我们现在计划将应用程序的代码开源。问题是我们不希望人们访问我们的 API 密钥,因为 API 本身不应该被公众访问。

API 密钥都在APIConstants.h.m 中。我正在考虑在未来的提交中取消暂存它们,但我知道人们仍然可以检查较旧的提交。有什么方法可以禁用对这两个文件的签出,即使是旧提交?

我能想到的另一个解决方案是完全删除.git 文件夹,将APIConstants 添加到.gitignore,然后再次执行git init,代价是删除我们所有的提交历史记录。

【问题讨论】:

标签: ios git version-control github bitbucket


【解决方案1】:

这样做:

$ git rm --cached APIConstants.h
$ echo APIConstants.h >> .gitignore
$ git add .gitignore
$ git commit -m "Remove and ignore APIConstants.h"

【讨论】:

    【解决方案2】:

    我认为您可以通过运行以下命令来完成此操作: git rm --缓存文件

    然后将该文件添加到您的 .gitignore 文件中,以便以后不再添加。

    【讨论】:

      【解决方案3】:

      将文件添加到 .gitignore 将保证该文件不会包含在未来的提交中。

      但是,正如您所说,它已经可用,用户仍然可以下载旧文件。您可以将它们从存储库中完全删除..

      git rm --cached <file>
      

      或者,如果您想告诉存储库停止跟踪文件,您可以使用..

      git update-index --assume-unchanged <file>
      

      这可以通过使用来恢复,

      git update-index --no-assume-unchanged <file>
      

      【讨论】:

        猜你喜欢
        • 2012-08-26
        • 2016-07-05
        • 2019-05-06
        • 2012-06-21
        • 2015-01-09
        • 2012-03-24
        • 2020-07-18
        • 2016-12-16
        相关资源
        最近更新 更多