推送到git时省略特定的行

时间:2011-12-03 06:12:41

标签: ruby-on-rails-3 git

在代码中可能存在非常敏感的信息,例如密码,亚马逊s3密钥等,我根本不想将其发送到git。

我希望将这些非常具体的字段替换为“SECRET”或类似的东西。 还有,git私人仓库解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

由于git跟踪文本而不仅仅是文件,因此将这些行替换为其他文本将被git解释为对代码的更改,因此它将覆盖下一次提交中的原始敏感信息。

我在这些情况下使用的是模块化我的代码,以便将这些信息隔离在一个文件中,然后我将一行文件名添加到.gitignore文件中。

.gitignore文件是一组模式,每行一个文件名,git会在跟踪回购中的更改时忽略这些模式。

例如,如果我在php中编写一个Web系统,我创建的文件只存储有关连接数据库的凭据的信息(框架也是这样做的,所以你可以猜测这是一个很好的做法.. )。因此,我使用测试服务器凭据(我的协作者应该知道)或使用一些虚拟凭据编写此文件一次,提交它并将其推送到我的远程,然后我将文件名添加到我的.gitignore

另一方面,你有一个命令git add -p,它以交互方式让你跳过行,但这会导致你的远程仓库中没有提到的行的文件,你必须每次手动跳过这些行你添加文件的时间......

git的一个很好的参考是Progit。如果你从git开始,强烈推荐...另外,Github's help center是一个非常好看的地方。

我希望它会有所帮助!祝你好运!!!