Git Repo限制文件名从推送到GitHub

时间:2015-11-14 01:11:55

标签: git github version-control

我想知道是否有办法限制某些文件被推送到git repo?

我有一个包含用户名和密码信息的文件,我希望这些信息永远不会被推送到我的仓库。

我正在使用git进行版本控制。我想知道是否有可能让git不允许我的文件" passwords.txt"要上传到我的仓库。因此,如果我不小心添加,提交和推送文件,它将引发错误,例如"无法将passwords.txt推送到回购。"

这是可能的,还是在添加和提交文件时我是否需要非常小心?

2 个答案:

答案 0 :(得分:3)

在项目文件夹中,创建一个.gitignore文件。

然后在文件中插入以下行:

passwords.txt

.gitignore文件会告诉Git要忽略的内容。

您可以忽略文件和文件夹。

如果您之前意外提交了passwords.txt,请告诉Git使用此命令从现在开始将其排除:

git rm --cached passwords.txt

运行git status会将passwords.txt显示为未跟踪的文件,因此未来的提交中不会包含该文件 - 因此请更新.gitignore文件。


要查看使用模式,您需要引用gitignore manual.

github octocatgitignore.io

查看更多用例

答案 1 :(得分:3)

尝试永不推送文件风险太大。

确保您的password.txt未加版(git rm --cached,并添加到.gitignore

然后,您可以注册一个smudge脚本,该脚本生成包含git checkout敏感信息的文件。

这是content filter driver的一部分,使用.gitattributes declaration

enter image description here (图片来自" Customizing Git - Git Attributes",来自" Pro Git book")

那' smudge'脚本(你必须写)需要:

  • 获取正确的值(从源外部回购,这样就没有冒险添加和推送的错误)
  • 使用带有占位符值的已跟踪清单模板 password.txt生成password.txt.tpl

这意味着:

  • 模板password.txt.tpl已添加到git repo
  • 生成文件password.txt.gitignore文件中声明,从不版本化(从不推送)。