代码托管 CODEARTS REPO-加密传输与存储:在Windows中使用密钥对方式进行加密、解密
在Windows中使用密钥对方式进行加密、解密
- 安装并初始化Git。
- 下载最新基于Windows的git-crypt,将下载到的exe文件放到Git安装目录下的“cmd”文件夹中,下图以“Windows Server 2012 R2 标准版 64”的默认Git Bash安路径为例。
放进文件夹即可,不需要运行此exe。
- 生成密钥对。
- 为仓库配置加密范围。
- 在仓库的根目录下新建一个名为.gitattributes的文件。
- 打开.gitattributes文件,设置加密范围,语法如下。
文件名或文件范围 filter=git-crypt diff=git-crypt
下面给出四个示例。FT/file01.txt filter=git-crypt diff=git-crypt #将 特定文件加密,这里加密的是FT文件夹下的file01.txt *.java filter=git-crypt diff=git-crypt #将 .java类型文件加密 G* filter=git-crypt diff=git-crypt #将 文件名为 G 开头的文件加密 ForTest/** filter=git-crypt diff=git-crypt #将 ForTest 文件夹下的文件加密
- 如果创建.gitattributes文件时提示“必须键入文件名”,可以将文件名填写成 “.gitattributes.”即可创建成功,如果使用Linux指令创建文件,则不会出现此问题。
- 注意不要将.gitattributes保存成txt文件,这样配置会无效。
- 进行文件加密。
仓库根目录打开Git bash,执行如下指令即可完成加密,并会看到目前文件的加密状态。
git-crypt status
加密执行后,在您的本地仓库仍能明文方式打开和编辑这些加密文件,这是因为您本地仓库有密钥存在。
这时你可以使用add 、commit、push组合将仓库推送到代码托管仓库,此时加密文件将一同被推送。
加密文件在代码托管仓库中将以加密二进制方式存储,无法直接查看。如果没有密钥,就算将其下载到本地,也无法解密。
“git-crypt status”只会加密本次待提交的文件,对本次未发生修改的历史文件不会产生加密作用,Git会对此设定涉及的未加密文件做出提示(见上图中的Warning),如果想将仓库中的对应类型文件全部加密,请使用“git-crypt status -f”。
在让团队合作中 -f (强制执行)具有一定的风险,可能会对合作伙伴的工作产生不变,请谨慎使用。
- 进行文件解密。