热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在像IntelliJ这样的IDE中签署git提交?

如何解决《如何在像IntelliJ这样的IDE中签署git提交?》经验,为你挑选了2个好方法。

IDEA不是终端,目前无法处理签名.请参阅https://youtrack.jetbrains.com/issue/IDEA-127802.

有一个解决方法,请查看https://youtrack.jetbrains.com/issue/IDEA-127802#comment=27-1866498



1> PHPirate..:

从git 2.19.1开始,支持gpg2!

gpg-agent现在可以处理自动签名,记住你的密码

这应该可以更容易地使用gpg自动签署提交.确切地说,git版本2.19.1至少有gpg 2.2.9.这些说明在Windows 7,Windows 8.1,Windows 10,Arch Linux和Fedora 29上进行了测试.

配置git commit签名的步骤

    启动(在Linux上)一个终端或(在Windows上)git bash,检查git --version那个git至少gpg --version是2.19.1并且你正在使用gpg2.

    如果没有,请检查where gpg(或者which gpg如果where命令不可用)最顶层路径是git路径.

    如果没有看到路径或不是已经gpg2任何一个,试试gpg2命令代替gpg,所以gpg2 --version.如果这样做,你将不得不使用gpg2而不是gpg从现在开始.

    如果您看到一个git路径但它不是最顶层的路径,请将(在Windows上)alias gpg="'C:\path\to\Git\usr\bin\gpg.exe'"放入您C:\Users\username\.bash_profile的文件中,如果该文件不存在则创建该文件,然后重新启动git bash.尝试where gpggpg --version试.从现在开始,在哪里gpg输入文件,你应该替换它'C:\path\to\Git\usr\bin\gpg.exe'.

    检查gpg --version主目录是否类似(在Linux上)/home/username/.gnupg或(在Windows上)的输出/c/Users/username/.gnupg.此目录不一定存在.

    如果路径不正确,请尝试更改它 - 例如在Windows上一次我看到我的主页以我运行命令的路径为前缀,因此我在.bash_profilewith中alias gpg="gpg --homedir=/c/Users/s156757/.gnupg"重新设置了别名并重新启动了bash,然后再次检查.

    接下来的几个步骤来自优秀的Github指南,最好是检查命令是否仍然正确.首先,生成一个新的GPG密钥对(但不要安装gnupg工具!):运行gpg --full-generate-key,选择RSA和RSA以及4096位.

    作为真实姓名使用你user.name~\.gitconfig.

    作为电子邮件,使用电子邮件从user.email你的~\.gitconfig,确保这封邮件是在GitHub上经过验证的电子邮件.

    如果您想尝试gpg-agent(每次重启后必须至少提供一次密码),或者如果您在GitHub上使用"未经验证"的徽章,请提供密码.否则,请将其留空.

    每次你想检查你有什么键,请使用gpg --list-secret-keys --keyid-format LONG.现在就做,然后key_id从输出中复制(因为我将从现在开始命名你的密钥)sec rsa4096/key_id 2018-10-27 [SC] ....

    打印公钥gpg --armor --export key_id.

    将GPG密钥添加到您的GitHub帐户:转到Settings | SSH and GPG keys并添加公钥块(包括页眉和页脚).

    告诉Git关于你的GPG密钥:git config --global user.signingkey key_id.

    如果您之前必须使用该--homedir选项,则需要确保当git启动gpg时,主页也会正确更改.创建一个文件C:\Users\username\start-gpg.sh并放入其中gpg --homedir=/c/Users/s156757/.gnupg "$@".然后运行git config --global gpg.program C:\\Users\\username\\start-gpg.sh告诉git使用它.

    重启bash.

    注册一个犯了GPG用git commit -S -m "signed commit",并确认这是在Github上验证,你应该看到一个小徽章,当你查看你的提交.

    设置默认情况下要签名的提交git config --global commit.gpgsign true.进行新的提交并验证是否已签名git verify-commit HEAD.

使提交签名自动发生的步骤:三个选项

我的钥匙上没有密码

你完成了.

我想试试gpg-agent

对我来说这个选项不起作用:我仍然经常提供我的密码,但并非总是如此.但理论上这有效:

    更新缓存时间,在C:\Users\username\.gnupg\gpg-agent.conf:创建文件(如果不存在),添加default-cache-ttl 34560000max-cache-ttl 34560000.

    使用重新启动gpg-agent gpgconf --kill gpg-agent

    现在你应该在提交时输入密码,然后再不输入密码.检查您的提交是否Verified在GitHub上.

3.将明文密码短语发送到gpg

这意味着您永远不必提供密码,但对我而言,这意味着GitHub会Unverified在我的提交中放置徽章.问题:key-id在签名中的密钥没有签署此提交

    如果您已经创建了它,请用C:\Users\username\start-gpg.sh下面的代码替换所有内容.如果没有,请使用以下内容创建文件,删除--homedir标志并运行git config --global gpg.program C:\\Users\\username\\start-gpg.sh.无论如何,重启bash.

是的,您将在计算机上以明文形式输入密码!如果您有更好的方法,请发表评论......

# Passphrase-file-descriptor is set to 0 (STDIN), to use it --batch must be used
# The --pinentry-mode loopback is required since gpg 2.1.0 for --passphrase-fd
# The "$@" makes sure that whatever git wanted gpg to do, is still done
echo mypassphrase | gpg --homedir=/c/Users/username/.gnupg --passphrase-fd 0 --batch --yes --pinentry-mode loopback "$@"

    提交并推送并检查您是否没有被要求输入密码,并且您的提交仍然Verified在GitHub上.

没有gpg2的旧git版本的旧答案

作为参考,这里是完整的说明,或者更确切地说是我为使其有所工作所采取的步骤."工作"是指提交是自动签名的,但有两个缺点:

GitHub将它们识别为unverified: The key whose key-id is in the signature did not sign this commit. Someone may be trying to trick you. 关于此的后续问题是其签名中的key-id未签署此提交的密钥

创建提交需要更长的时间,比如五秒而不是一秒.

如果您遇到问题,请检查问题中的步骤,看看我是否遇到了同样的问题.

    前几步来自Github的好指南:生成一个新的GPG密钥对

    将GPG密钥添加到您的GitHub帐户

    将经过验证的(通过GitHub)电子邮件与您的GPG密钥相关联,并确保您的姓名和电子邮件.gitconfig相同.

    告诉Git你的GPG密钥

    使用GPG签署提交并确认它是在Github上验证,当您查看提交时,您应该看到一个小徽章.

    设置默认情况下要签名的提交git config --global commit.gpgsign true.进行新的提交并验证是否已签名git verify-commit HEAD.

    git附带的gpg版本太旧了,所以安装Gpg4win(二进制版本,在底部)应该安装gpg 2. where gpg你应该看到两个路径,其中可能第二个是你的新gpg,类似于C:\Program Files (x86)\GnuPG\bin\gpg.exe.如果没有,请尝试从下载页面单独安装Gnupg 2.

    我把alias gpg="'C:\Program Files (x86)\GnuPG\bin\gpg.exe'"给点gpg命令到我的新GPG在我C:\Users\username\.bash_profile,重新启动的Git Bash和与检查gpg --version,现在我使用GPG 2.

    添加一个GNUPGHOME指向的新环境变量C:\Users\username\.gnupg.重新启动并检查printenv GNUPGHOME您是否正确添加了它.

    制作一个脚本C:\Users\username\gpg-no-tty.sh并放入其中echo passphrase | "C:\Program Files (x86)\GnuPG\bin\gpg.exe" --passphrase-fd 0 --batch --no-tty --yes "$@"

    你在这里用明文写密码的原因是因为这个--batch选项使得它全部工作,需要密码短语.对我来说,似乎应该存在比在计算机上以明文保存密码短的更好的解决方案,所以如果你找到更好的东西请发表评论.

    用这个脚本指向git git config --global gpg.program C:\\Users\\username\\gpg-no-tty.sh.

    现在在Git Bash和IntelliJ中测试你可以提交,并验证它是否正常工作git verify-commit HEAD.



2> 小智..:

IDEA不是终端,目前无法处理签名.请参阅https://youtrack.jetbrains.com/issue/IDEA-127802.

有一个解决方法,请查看https://youtrack.jetbrains.com/issue/IDEA-127802#comment=27-1866498


推荐阅读
  • 在Python开发过程中,随着项目数量的增加,不同项目依赖于不同版本的库,容易引发依赖冲突。为了避免这些问题,并保持开发环境的整洁,可以使用Virtualenv和Virtualenvwrapper来创建和管理多个隔离的Python虚拟环境。 ... [详细]
  • 本文详细记录了在银河麒麟操作系统和龙芯架构上使用 Qt 5.15.2 进行项目打包时遇到的问题及解决方案,特别关注于 linuxdeployqt 工具的应用。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • PostgreSQL 10 离线安装指南
    本文详细介绍了如何在无法联网的服务器上进行 PostgreSQL 10 的离线安装,并涵盖了从下载安装包到配置远程访问的完整步骤。 ... [详细]
  • 本文介绍如何从JSON格式的文件中提取数据并将其分配给Bash脚本中的变量。我们将探讨具体的命令和工具,帮助你高效地完成这一任务。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • CMake跨平台开发实践
    本文介绍如何使用CMake支持不同平台的代码编译。通过一个简单的示例,我们将展示如何编写CMakeLists.txt以适应Linux和Windows平台,并实现跨平台的函数调用。 ... [详细]
  • 解决微信电脑版无法刷朋友圈问题:使用安卓远程投屏方案
    在工作期间想要浏览微信和朋友圈却不太方便?虽然微信电脑版目前不支持直接刷朋友圈,但通过远程投屏技术,可以轻松实现在电脑上操作安卓设备的功能。 ... [详细]
  • VSCode与Gitee集成:项目提交的高效实践
    本文介绍如何利用VSCode内置的Git工具将项目提交到Gitee,简化Git命令的使用,提升代码管理效率。同时分享一些常见的踩坑经验和解决方案。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
author-avatar
手机用户2502903213
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有