新入职的程序员小白,你的mt给你派了活,第一件事就是从 GitLab 或其它的代码仓库拉取代码,这时候你要配置你的 Git 工具,并且后续进行一系列的操作,这时是不是直接打开百度搜索 Git 常用命令或者直接问 AI 呢?如果你不是,那没关系,我是。
出现这一情况的本质还是对于 Git 常用命令不熟悉,所以本文总结了所有常用的 Git 配置及命令。
本文章将持续总结更新开发中遇到的 Git 场景
一、初始化Git配置
配置用户名和邮箱
用户名和邮箱用于往后代码仓库中你的标识
bash
git config --global user.name "你的姓名"
git config --global user.email "你的公司邮箱"
配置SSH密钥
对于稍微专业一点的公司,配置 SSH 密钥来访问 Git 仓库是必须的
SSH 是一种网络加密协议,用于访问不安全的或陌生的网络环境,进行远程登录或者网络资源的交互等。在 Git 中,用于安全的验证你和远程仓库之间的连接
SSH 采用非对称加密,熟悉计算机网络的同学应当知道,所谓非对称加密就是公钥加密、私钥解密的一种机制
- 私钥 (id_rsa):保存在你的本地计算机上,必须严格保密
- 公钥 (id_rsa.pub):可以安全地分享,添加到 Git 服务器或托管平台
下面是 Git 关联密钥的详细步骤:
1.检查现有的SSH 密钥
bash
ls -al ~/.ssh
查看是否存在以下文件:
- id_rsa (私钥)
- id_rsa.pub (公钥)
2.生成新的SSH密钥对(如果没有)
bash
ssh-keygen -t ed25519 -C "your_email@example.com" # ed25519算法
# 或
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" # RSA算法,系统较旧可能需要
参数说明:
-t
指定密钥类型-b
指定密钥位数-C
添加注释(通常用邮箱)
3.生成过程中的交互
系统会提示:
- 输入保存密钥的文件路径(直接回车使用默认位置)
- 输入密码(可选,为密钥添加额外保护)
4.启动SSH代理并添加密钥
bash
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
5.复制公钥到剪贴板
Linux/macOS:
bash
cat ~/.ssh/id_ed25519.pub | xclip -selection clipboard
# 或
cat ~/.ssh/id_ed25519.pub
Windows (PowerShell):
powershell
Get-Content ~.ssh\id_ed25519.pub | clip
6. 将公钥添加到 Git 平台
不同的代码托管平台方法可能不同,但这步很简单,你一定会
7. 测试 SSH 连接
bash
ssh -T git@github.com
对于 GitHub,成功会显示:
bash
Hi username! You've successfully authenticated...
如果一切顺利,你的 Git 配置关联仓库就做好了,下面你就可以拉取远程仓库的代码,进行本地开发啦!
二、Git常用命令
1.基础操作
1.1 初始化与克隆
bash
git init # 初始化 git
git clone <remote_url> # 拉取远程仓库代码,并自动关联远程分支
1.2 查看状态与历史
一般也不会用,因为现在大部分编辑器都支持直接看到
bash
git status # 查看工作区/暂存区状态
git log # 查看提交历史(按时间倒序)
git log --oneline # 简洁版提交历史
git log --graph # 图形化显示分支历史
git show <commit_id> # 查看某次提交的详细内容
1.3 提交更改
堪称最最最常用的了,百分之99的程序员都会在自己的分支上开发完之后添加到暂存区、再提交到本地仓库的步骤
bash
git add <file> # 添加文件到暂存区
git add . # 添加所有修改到暂存区
git commit -m "message" # 提交暂存区内容到本地仓库
git commit --amend # 修改最近一次提交(可修改消息或追加文件)
1.4 撤销操作
回滚工作区的修改编辑器也支持,但增加到暂存区和提交到本地仓库后回滚也很常用。比如你刚刚 commit 到本地仓库,发现有段代码有小错误,这时候回滚是必要的
bash
git restore <file> # 撤销工作区的修改(未add)
git restore --staged <file> # 撤销暂存区的修改(已add)
git reset --soft HEAD^ # 撤销提交但保留修改(回退到暂存区)
git reset --hard HEAD^ # 彻底回退到上一次提交(慎用!)
2.分支管理
2.1 基础分支操作
bash
git branch # 查看本地分支
git branch <name> # 创建新分支
git checkout <branch> # 切换到分支
git switch <branch> # (Git 2.23+) 更安全的切换命令
git merge <branch> # 合并指定分支到当前分支
git branch -d <branch> # 删除本地分支(已合并)
git branch -D <branch> # 强制删除未合并的分支
2.2 远程分支同步
bash
git fetch origin # 拉取远程分支信息(不自动合并)
git pull origin <branch> # 拉取并合并远程分支(= fetch + merge)
git push origin <branch> # 推送本地分支到远程
git push -d origin <branch> # 删除远程分支
命令 | 是否下载远程数据 | 是否修改本地代码 | 是否自动合并 | 适用场景 |
---|---|---|---|---|
git fetch |
✅ 是 | ❌ 否 | ❌ 否 | 仅检查远程更新,不修改本地代码 |
git merge |
❌ 否 | ✅ 是 | ❌ 需手动 | 手动合并分支或提交 |
git pull |
✅ 是 | ✅ 是 | ✅ 是 | 快速同步远程代码(自动合并) |
2.3 解决冲突
合并冲突时手动编辑文件,标记为 <<<<<<< HEAD
和 >>>>>>> branch
的部分需人工处理
解决后执行:
bash
git add <file> # 标记冲突已解决
git commit # 完成合并提交
合并分支
这是很常见的场景,团队接到新的项目需求,我们分到了一个需求开发,往往都是基于一个 main 分支去创建新分支feature,这时两个分支的提交记录都是一样的,在我们开发后提交代码后,feature 分支便与 main 不同了。
在这个总的项目需求开发过程中,你的同时排期不同会有很多的 feature 分支提 PR(Pull Request) 去合并分支到 main 这会导致你自己的分支与 main 是不同的,这时候去合并分支由于二者的提交记录不同,是一定会造成冲突的,这就需要我们手动的去编辑文件解决冲突
这也是为什么建议在开发中经常性的 git pull 你的主分支代码,以利于开发结束在最后合并的时候减少冲突
3.高级操作
3.1 暂存临时修改
当你需要合并远程分支,但希望本地工作区刚做的修改不影响你的操作的话,git stash
临时存储绝对是不错的选择
bash
git stash # 临时保存工作区修改
git stash pop # 恢复最近一次暂存的修改
git stash list # 查看所有暂存记录
3.2 标签管理
可能并不常用
bash
git tag v1.0 # 创建轻量标签
git tag -a v1.0 -m "msg" # 创建含注释的标签
git push origin --tags # 推送所有标签到远程
3.3 变基
bash
git rebase <branch> # 将当前分支变基到目标分支
git rebase -i HEAD~3 # 交互式变基(合并/修改提交历史)
三、团队操作规范
大部分团队可能都是这样的规范
1.commit消息规范
- feat: 添加用户登录功能
- fix: 修复支付接口404错误
- docs: 更新API文档
2.分支策略
main/master
:生产环境代码develop
:开发主分支feature/xxx
:功能开发分支hotfix/xxx
:紧急修复分支