📜  如何在 git 上隐藏 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:52:17.855000             🧑  作者: Mango

如何在 Git 上隐藏 - Shell-Bash

当我们使用 Git 追踪代码时,有时需要在提交代码时隐藏某些文件或目录,这里介绍了几种方法。

忽略文件 - .gitignore

.gitignore 文件用于指定 Git 忽略的文件或目录。创建此文件并添加要忽略的内容,将其添加到版本控制中,这样 Git 将完全忽略指定的文件或目录。

示例 .gitignore 文件:

# 忽略所有 .log 文件
*.log

# 忽略整个 /logs/ 目录
/logs/

# 忽略 .txt 扩展名的文件
*.txt
修改提交 - git filter-branch

git filter-branch 命令可以修改提交记录,达到隐藏指定文件或目录的目的。实现方法是,Git 会为每个提交创建一个新的分支,然后在新分支上修改提交记录,最后将原始分支删除并将新分支重命名为原始分支。

Step 1: 克隆仓库

首先将仓库克隆到本地,这样我们可以在本地修改提交记录。

$ git clone <repo-url>

Step 2: 创建过滤器

创建用于修改提交记录的过滤器函数,这个函数可以从提交中删除指定的文件或目录,从而达到隐藏文件或目录的目的。

$ git filter-branch --tree-filter 'rm -rf <file-path>' HEAD

Step 3: 强制覆盖远端仓库

已经在本地修改了提交记录,现在需要将这些修改推送到远程仓库。由于我们已经改变了提交历史记录,因此需要使用 --force 参数覆盖远程仓库。

$ git push --force
Git 外部工具 - git-secret

git-secret 是一个命令行工具,用于在 Git 中加密和解密文件。它通过使用 Git hooks 拦截提交并自动加密文件,从而防止敏感信息不慎泄漏。

安装
$ brew install git-secret  # macOS
$ sudo apt-get install git-secret  # Debian/Ubuntu
$ sudo dnf install git-secret  # Fedora
使用

初始化

在仓库中初始化 git-secret

$ git secret init

添加密钥

$ git secret tell <email>

添加指定用户的公钥。

$ git secret add <file>

将指定文件加密。

$ git secret hide

加密所有文件并重新生成当前分支。

提交并推送

$ git secret reveal

解密加密的文件。

$ git commit -m "Add secret files"
$ git secret hide
$ git push

提交并推送密钥以及加密的文件。

总结

上述方法中,.gitignore 是忽略文件或目录的最简单和最方便的方法。git filter-branch 可以修改提交历史记录,但是因为它会创建新的提交对象,因此会导致提交历史记录的改变。git-secret 是一个强大的工具,可以在提交时自动加密文件,并使用 Git hooks 来拦截提交。

无论使用哪种方法,为了防止意外发生,建议在修改提交历史记录时备份您的 Git 仓库。