我想通过将它们上传到我的 GitHub 帐户来炫耀我的一些工作。但是,有些文件包含密码,例如数据库连接。
有没有办法用 Git 将文件标记为不可提交,使其无法出现在 GitHub 上?
Gia*_*968 68
有没有办法用 Git 将文件标记为不可提交,使其无法出现在 GitHub 上?
首先,无法让某些文件和提交在本地 Git 存储库中可见,但在 GitHub 中无法查看;如果您在 Git 中提交了一个文件,它将显示在 GitHub 中。
其次,没有简单实用的方法可以将单个文件本身标记为“不可提交”。但是肯定有一种方法可以忽略 Git 存储库中的文件:通过将文件(如果需要,包括它们的相对路径)添加到.gitignore
文件中:
一个
.gitignore
文件指定故意未跟踪文件的Git应该忽略。已经被 Git 跟踪的文件不受影响;有关详细信息,请参阅下面的注释。
创建基本文件.gitignore
相当容易,因为它只是一个纯文本文件。所以——例如——如果我config.php
在你的根目录中有一个文件,你会这样做;假设您使用的是 PHP,但该概念适用于任何设置。此外,我在这个例子中使用 Nano 作为我的文本编辑器,但可以随意使用您通常用于此的任何文本编辑器:
nano .gitignore
Run Code Online (Sandbox Code Playgroud)
只需将该文件名添加到该文件中:
config.php
Run Code Online (Sandbox Code Playgroud)
保存它,现在 Git 将简单地忽略该文件。
也就是说,我喜欢为这样的设置做的是在存储库中保留一个样本/示例配置中的敏感细节,所以我有一些关于配置文件格式是什么文件的参考,如下所示:
config.SAMPLE.php
Run Code Online (Sandbox Code Playgroud)
这样你就可以确切地知道config.php
应该如何设置文件,config.SAMPLE.php
并且可以确保config.php
Git 永远不会触及实际文件。
此外,如果您打算炫耀您的代码,您需要期望有人会尝试采用该代码并以某种方式在他们自己的系统上实现它。请记住,我们不是您,如果您的 repo 中没有示例配置文件,人们将不会真正了解如何自己实现代码。哎呀,他们甚至可能认为您不称职,因为您没有提供基本的配置示例。
Juh*_*man 32
您还可以添加一个预提交钩子来实现健全性检查。.git/hooks
每个 git 存储库的目录都有一些示例脚本。
pre-commit
如果调用的脚本在每次提交之前存在,则执行该脚本,并且非零返回值中止提交。
例如,你可以有一个像这样的简单脚本:
#! /bin/sh -e
git ls-files --cached | grep -qx 'filename' && { echo "Excluded file included in the commit" >&2; exit 1; }
exit 0
Run Code Online (Sandbox Code Playgroud)
如果filename
匹配,则提交失败。
phk*_*phk 12
@JakeGould 说什么。在某些情况下,您还可以使用特殊的文件位,例如skip-worktree
或assume-unchanged
可以通过以下方式设置;有关两者之间的差异,请参阅此堆栈溢出答案:
git update-index --assume-unchanged <file>
Run Code Online (Sandbox Code Playgroud)
这将隐藏对现有文件的其他更改,如果您真的希望在每次拉取后都有一个文件,您可以使用它。但我建议你只有在你真正知道自己在做什么的情况下才使用它。
归档时间: |
|
查看次数: |
13698 次 |
最近记录: |