Git

View source
Git 的配置、使用、常见问题等。

Mac

Mac 通常自带 Git ,但如果没有安装,或者你想更新到最新版本,可以通过以下几种方式安装:

sh
brew install git

Windows

通过 Git 官网下载安装包:https://git-scm.com/download/win

验证是否安装成功:

sh
git --version

配置 Git 用户信息

Git 需要知道提交者的身份信息。通过以下命令设置全局用户信息:

sh
# 设置用户名
git config --global user.name "Your Name"
# 设置邮箱
git config --global user.email "Your Email"

设置默认编辑器(可选)

sh
git config --global core.editor vim

配置 SSH 密钥(用于 GitHub、GitLab 等远程仓库)

生成 SSH 密钥

sh
ssh-keygen -t rsa -b 4096 -C "你的邮箱地址"
  • -t rsa:指定密钥类型为 RSA
  • -b 4096:指定密钥长度为 4096 位
  • -C "你的邮箱地址":指定注释信息为你的邮箱地址,通常是你的 GitHub 邮箱地址

执行命令后,会提示你输入保存密钥的文件路径,按回车键默认保存在 ~/.ssh/id_rsa

设置密码(可选)

系统会提示你设置一个密码,这个密码用来加密你的私钥文件。如果你不想设置密码,直接按回车键即可。

添加 SSH 密钥到 ssh-agent

sh
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
~/.ssh/id_rsa 是你生成的 SSH 密钥的路径。

复制 SSH 公钥到剪贴板

sh
pbcopy < ~/.ssh/id_rsa.pub

或者对于 Linux 系统:

sh
cat ~/.ssh/id_rsa.pub | xclip -selection clipboard

测试 SSH 连接

sh
ssh -T git@github.com

配置 GPG 密钥

安装 gnupg 并生成 GPG 密钥

sh
brew install gnupg
gpg --full-generate-key

查看 GPG 密钥

sh
gpg --list-secret-keys --keyid-format LONG
会看到类似以下的输出:
[keyboxd]
----------------
sec   ed25519/密钥ID  日期 [SC]
      密钥指纹
uid           [ultimate] 姓名 <邮箱>
ssb   cv25519/子密钥ID  日期 [E]

记录下 ed25519/ 后面的长密钥 ID。例如,ABCD1234EFGH5678

导出并复制公钥

sh
gpg --armor --export 密钥ID | pbcopy
复制的内容类似于:
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEY...
...
-----END PGP PUBLIC KEY BLOCK-----

配置 Git 使用 GPG 签名

sh
git config --global user.signingkey 密钥ID
git config --global commit.gpgsign true
git config --global gpg.program $(which gpg)
git config --global --unset gpg.format

安装 pinentry-mac

pinentry 程序用于提示您输入 GPG 密钥的密码。

sh
brew install pinentry-mac
echo "pinentry-program $(which pinentry-mac)" >> ~/.gnupg/gpg-agent.conf
killall gpg-agent

为避免每次提交都输入密码,可以配置 GPG 缓存密码:

sh
code ~/.gnupg/gpg-agent.conf

添加以下内容,代表把密码缓存 1 小时,最大缓存时间为 2 小时。

sh
default-cache-ttl 3600
max-cache-ttl 7200

重启代理:

sh
killall gpg-agent

在 VSCode 打开 "git.enableCommitSigning": true, 选项。

常用命令

命令功能说明
git config --global -l查看所有配置
git config --global user.name查看某个特定的全局配置项
git rebase --abort取消变基操作
git branch | grep -v "^\*" | xargs git branch -D删除除当前分支外的所有分支
git branch | xargs git branch -D删除所有本地分支,包括当前分支
git fetch --prune从远程仓库获取最新的代码,并删除已经被删除的分支
git branch -m <old_branch> <new_branch>重命名本地分支
git push origin --delete <branch_name>删除远程分支

常见问题

Copyright © 2024 - 2025 YiXuan - MIT License