热门标签 | 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


推荐阅读
  • 本文介绍了如何在GitHub上设置多个SSH Key,以解决原有Key失效的问题,并确保不同项目使用不同的私钥进行安全访问。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • 本文将详细介绍如何注册码云账号、配置SSH公钥、安装必要的开发工具,并逐步讲解如何下载、编译 HarmonyOS 2.0 源码。通过本文,您将能够顺利完成 HarmonyOS 2.0 的环境搭建和源码编译。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 如何在Windows上使用Gitee创建远程仓库
    本文详细记录了在Windows系统上使用Gitee创建远程仓库的步骤,帮助解决无法注册GitHub的问题。 ... [详细]
  • 本文介绍了如何使用Python爬取妙笔阁小说网仙侠系列中所有小说的信息,并将其保存为TXT和CSV格式。主要内容包括如何构造请求头以避免被网站封禁,以及如何利用XPath解析HTML并提取所需信息。 ... [详细]
  • 本文详细介绍了 Spark 中的弹性分布式数据集(RDD)及其常见的操作方法,包括 union、intersection、cartesian、subtract、join、cogroup 等转换操作,以及 count、collect、reduce、take、foreach、first、saveAsTextFile 等行动操作。 ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • 本文详细介绍了如何在Linux系统(以CentOS为例)上彻底卸载Zimbra邮件系统,包括停止服务、删除文件和用户等步骤。 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • Git命令基础应用指南
    本指南详细介绍了Git命令的基础应用,包括如何使用`git clone`从远程服务器克隆仓库(例如:`git clone [url/path/repository]`)以及如何克隆本地仓库(例如:`git clone [local/path/repository]`)。此外,还提供了常见的Git操作技巧,帮助开发者高效管理代码版本。 ... [详细]
  • 本文详细介绍了批处理技术的基本概念及其在实际应用中的重要性。首先,对简单的批处理内部命令进行了概述,重点讲解了Echo命令的功能,包括如何打开或关闭回显功能以及显示消息。如果没有指定任何参数,Echo命令会显示当前的回显设置。此外,文章还探讨了批处理技术在自动化任务执行、系统管理等领域的广泛应用,为读者提供了丰富的实践案例和技术指导。 ... [详细]
  • 本文介绍了如何利用ObjectMapper实现JSON与JavaBean之间的高效转换。ObjectMapper是Jackson库的核心组件,能够便捷地将Java对象序列化为JSON格式,并支持从JSON、XML以及文件等多种数据源反序列化为Java对象。此外,还探讨了在实际应用中如何优化转换性能,以提升系统整体效率。 ... [详细]
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社区 版权所有