git 常用指南
git 基础配置
ssh 连接Github
要以个人身份访问github并管理私人仓库,就需要使用ssh连接到github进行鉴权。
-
确保存在openssh
ssh是包
openssh的基础功能,首先需要先安装openssh工具包 -
检查本地主机key
ls ~/.ssh -
生成ssh key
ssh-keygen -t rsa -C "xxx@xxx.com" -
获取ssh key 公钥
cat ~/.ssh/id_rsa.pub -
github上添加公钥
-
验证是否添加成功
ssh -T git@github.com -
配置全局信息
git config --global user.email "you@example.com"git config --global user.name "Your Name" -
配置git默认编辑器为
vimgit config --global core.editor vim
git 使用凭证管理进行登陆
在 HTTPS 协议下实现免密推送,关键在于让 git “记住”你的登录凭证。核心就是用个人访问令牌(Personal Access Token, PAT)代替密码,然后让 Git 记住它。
git凭证管理器(Git Credential Manager, GCM) 是 GitHub 官方推荐的一种登陆方式,它在后台安全地处理 OAuth 登录,完全不需要用户手动生成和管理令牌。相比于Cache临时缓存,自己管理访问Token来说,这种方式更加智能无感,也更加安全
WARNING凭证管理器一般依赖于系统的 “密码环” 服务。 在Linux系统中,这是一个实现并接入 Secret Service API 的、完整的凭证存储和管理方案。它会随桌面环境自动启动,并默认与用户密码关联。
TIP主流的桌面环境,如Gnome,KDE都将该服务内置在了系统中(Gnome Keyring, 以及KDE Wallet),如果使用这之外的DE,可能得选择一些开源方案进行替代,如
KeePassXC与pass + pass-secret-service,这里只以Ubuntu + Gnome / KDE系统为例进行说明,KeePassXC相关的可能之后单独写一篇文章进行补充。
凭证管理器可以选择:git-credential-manager(仅Debian/Ubuntu)或者git-credential-oauth。
- 安装Git使用凭证管理器:
# git-credential-manager (Debian/Ubuntu)sudo apt update && sudo apt install git-credential-manager
# Fedorasudo dnf install git-credential-oauthgit-credential-manager 配置
# 配置 Git 使用凭证管理助手git config --global credential.helper manager
# 配置凭证存储后端git credential-manager configuregit config --global credential.credentialStore secretservice测试:
git-credential-manager diagnosegit-credential-oauth 配置
# 配置 Git 使用缓存助手 (默认 900 秒/15分钟) 和 OAuth 助手git config --global credential.helper 'cache'git config --global credential.helper 'oauth'当触发git push/pull命令的时候,会自动开始认证。
TIP如果认证过程中断,需要先清楚当前认证缓存:
# 1. 清理凭据缓存git credential-cache exit# 2. 终止任何可能卡住的 git 进程 (按 Ctrl + C 强制结束)接下来重新开始进行认证就好
git 分支管理
-
将当前修改commit到新的分支
git stashgit checkout -b <新的分支名>git stash popgit commit -a -
更改提交消息内容
git commit --amend -m "这是新的、正确的提交信息"
git worktree 工作流
1. 查看当前worktree
# 查看所有工作区git worktree list
# Porcelain 模式git worktree list --porcelain2. 创建工作区(新增目录)
# 基于 main 新建分支并创建工作区目录git fetch origingit worktree add ~/code/myrepo/.wt/feature-login -b feature/login origin/main
# 基于已有本地分支创建工作区git worktree add ~/code/myrepo/.wt/release-1-5 release/1.5
# 只临时查看某个提交(分离头指针,不占用分支)git worktree add --detach ~/code/myrepo/.wt/tmp-check 4f1e2c33. 删除工作区
# 预演清理(只显示将被清理的内容)git worktree prune -n -v
# 实际清理无效/残留的 worktree 记录git worktree prune
# 删除某个工作区目录(先确保其中无未跟踪变更)git worktree remove ~/code/myrepo/.wt/feature-login
# 强制删除(有风险:可能丢弃未提交的改动)git worktree remove -f ~/code/myrepo/.wt/feature-login如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时