Git 配置与常用操作
macOS 环境下 Git 的安装、基础配置与 SSH 密钥配置,以及日常提交、分支操作和常见问题的处理速查。
安装 Git
macOS 通常预装了 Git,但版本可能较旧。先在终端(应用程序 -> 实用工具 -> 终端)中检查版本:
git --version
显示版本号(如 git version 2.39.2 (Apple Git-143))说明已安装;提示 command not found 则需要安装。
使用 Homebrew 安装(推荐)
Homebrew 是 macOS 上最流行的包管理器:
# 安装 Homebrew(如果还没有安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 安装 Git
brew install git
其他安装方式
- 官方安装程序:从 Git 官网 下载 macOS 安装程序并直接安装。
- Xcode Command Line Tools:在终端执行
xcode-select --install,安装的命令行工具中包含 Git。
安装完成后再次运行 git --version 确认安装成功且版本较新。
基础配置
配置用户信息后,每次提交 Git 才能记录提交者:
# 用户名(通常使用英文名或 GitHub 用户名)
git config --global user.name "Your Name"
# 邮箱(必须与 GitHub/GitLab 等代码托管平台上注册的邮箱一致)
git config --global user.email "your.email@example.com"
可选配置:
# 设置默认的文本编辑器(VS Code)
git config --global core.editor "code --wait"
# 或使用 macOS 自带的 Nano
git config --global core.editor "nano"
# 让 Git 输出带颜色,方便阅读
git config --global color.ui auto
查看所有配置项:
git config --list
配置 SSH 密钥
配置 SSH 密钥后,与远程仓库(如 GitHub)通信时无需每次输入密码。
-
生成新的 SSH 密钥(替换为你的邮箱):
ssh-keygen -t ed25519 -C "your.email@example.com"- 提示
Enter file in which to save the key时直接回车,使用默认路径~/.ssh/id_ed25519; - 提示
Enter passphrase时可设置密码增加安全性,也可直接回车留空。
- 提示
-
将 SSH 密钥添加到 ssh-agent:
# 启动 ssh-agenteval "$(ssh-agent -s)"# 将 SSH 私钥添加到 ssh-agentssh-add ~/.ssh/id_ed25519 -
将公钥添加到 GitHub/GitLab 账户:
cat ~/.ssh/id_ed25519.pub登录 GitHub 后依次点击右上角头像 -> Settings -> SSH and GPG keys -> New SSH key,在 "Title" 中起个名字(如
My MacBook),将公钥内容粘贴到 "Key" 框中并保存。 -
测试连接:
ssh -T git@github.com看到
Hi username! You've successfully authenticated...的欢迎信息即配置成功。
代码提交规范
- feat: 新功能
- fix: 修复问题
- docs: 文档更新
- style: 代码格式(不影响代码运行的变动)
- refactor: 代码重构(既不是修复 bug 也不是添加新功能)
- perf: 性能优化
- test: 添加或更新测试
- build: 构建系统或外部依赖的更改(如 webpack、npm)
- ci: 持续集成相关的变动
- chore: 其他不修改 src 或测试文件的更改
- revert: 回滚某次提交
常用命令
基础命令
git add . # 将文件添加到暂存区
git status # 查看状态
git commit -m "注释内容" # 将暂存区文件提交至版本库
git log # 查看近期提交状态
git branch # 查看分支
git branch dev # 新建 dev 分支
git checkout dev # 切换到 dev 分支
git push -u origin 分支名称 # 第一次推送分支到远程仓库(需先切换到该分支,-u 表示首次关联)
git merge 分支名称 # 先切换到目标分支,再合并指定分支
如果不小心在 master 分支上写了代码,直接执行
git checkout -b test即可将修改分配到 test 分支,再执行git add等后续操作。
日志与差异
git log # 查看历史记录
git log -p # 查看详细历史
git log --stat # 查看简要统计
git show # 查看当前 commit 的改动内容
git show commitID # 查看某个具体 commit 的改动内容
git show commitID a.txt # 查看指定 commit 中的指定文件
git diff # 比对工作目录和暂存区
git diff --staged # 比对暂存区和上一次提交
git diff HEAD # 比对工作目录和上一次提交
git reflog # 查看记录的每一条指令
分支操作
# 克隆与切换
git checkout dev # 切换到 dev 分支
git checkout -b dev # 创建并立即切换到 dev 子分支
git branch -al # 查看所有本地和远程分支
git checkout -b 本地分支 origin/远程分支 # 检出远程分支到本地
git clone -b yourBranch <仓库地址> # 克隆远程仓库的某个分支
# 推送
git push origin 本地分支:远程分支 # 提交本地分支到远程分支
git push origin demo:demo # 推送 demo 分支(远程不存在时自动创建)
# 删除
git branch -d bug # 删除本地 bug 分支
git push origin --delete demo # 删除远程 demo 分支
# 同步本地与远端
git remote show origin # 查看本地分支和追踪情况
git remote prune origin # 同步删除远端已不存在的分支
强制覆盖本地代码
git fetch --all
git reset --hard origin/master
git pull
变基
rebase 把指定的 commit 以及它所在的 commit 串,以指定的目标 commit 为基础,依次重新提交:
git checkout branch1
git rebase master
# rebase 之后切回 master 再 merge,把 master 移到最新的 commit
git checkout master
git merge branch1
git rebase --help # 查看帮助
提交修正与回退
修改最近一次提交(amend)
git commit --amend 不会生成新的 commit,而是在之前的 commit 上修改,适合多次修改后还未 push 的场景:
git add a.txt # 更新一个文件
git commit # 提交(还未 push)
# 重新编辑 a.txt
git add a.txt # 再次更新
git commit --amend # 修改之前的 commit,而不是再生成一个
修改已经 push 的 commit 信息(内容在自己的分支上):
git commit --amend进入 vim 编辑器;- 按
i进入编辑模式,修改提交信息; - 按
Esc,输入:wq保存退出; - 执行
git push -f强制推送。
回退提交(reset)
错误提交到了版本库时,需要撤销版本库的修改才能解决。git reset 有三个选项:
git reset --soft commitID # 撤销版本库,不修改暂存区和工作区
git reset --mixed commitID # 撤销版本库和暂存区,不修改工作区
git reset --hard commitID # 彻底将工作区、暂存区和版本库恢复到指定版本
具体步骤:
git log # 查看日志,复制要回退到的 commitID
git reset --hard commitID # 强制回退(soft / mixed / hard 视情况而定)
git push origin HEAD --force # 推送到远程
撤销已合并的提交(revert)
错误内容已经合并到 master 时,用 git revert 增加一条内容相反的新 commit 来抵消:
git revert HEAD # 撤销最近一次提交
git revert HEAD~1 # 撤销上上次的提交(数字从 0 开始)
git revert 0ffaacc # 撤销指定提交
撤销暂存区文件
git rm --cached 文件名 # 只删除暂存区的文件,不影响工作区
git rm -f 文件名 # 同时删除暂存区和工作区的文件
文件或文件夹重命名
git mv -f oldfolder newfolder
git add -u newfolder # -u 选项会更新已经追踪的文件和文件夹
git commit -m "rename folder"
git push origin yourBranch
SSH 拉取报错处理
git pull 通过 SSH(端口 22)连接 Gitee 失败、连接被拒绝,通常是网络环境(公司、学校等)屏蔽了 22 端口,或 SSH 服务配置问题。可将远程仓库的 URL 改为 HTTPS 地址:
git remote set-url origin https://gitee.com/你的用户名/你的仓库名.git
git pull
例如:
git remote set-url origin https://gitee.com/houfei/open-webui.git
第一次拉取会提示输入 Gitee 的用户名和密码(或个人访问令牌)。建议使用个人访问令牌(Personal Access Token)代替密码,更安全。