本文整理开发工作中全套 Git 实战命令,包含标准提交流程、代码冲突解决、分支管理、文件忽略、报错排错、提交账号修改等高频场景,新手可直接复制命令使用,适配多人团队协作开发。
目录
[1. 开发前拉取远程最新代码](#1. 开发前拉取远程最新代码)
[2. 查看文件状态](#2. 查看文件状态)
[3. 将文件加入暂存区](#3. 将文件加入暂存区)
[4. 提交到本地仓库](#4. 提交到本地仓库)
[5. 推送代码到远程仓库](#5. 推送代码到远程仓库)
[1. 已修改未暂存:撤销本地改动](#1. 已修改未暂存:撤销本地改动)
[2. 已暂存未提交:撤销暂存](#2. 已暂存未提交:撤销暂存)
[3. 修改最后一次提交备注](#3. 修改最后一次提交备注)
[4. 补充遗漏文件到上一次提交](#4. 补充遗漏文件到上一次提交)
[5. 已提交未推送:撤销本次提交(保留代码)](#5. 已提交未推送:撤销本次提交(保留代码))
[6. 彻底丢弃本地所有修改(高危操作)](#6. 彻底丢弃本地所有修改(高危操作))
[7. 临时储藏代码(切换分支专用)](#7. 临时储藏代码(切换分支专用))
[8. 分支文件重命名 / 删除冲突](#8. 分支文件重命名 / 删除冲突)
[9. 错误分支代码迁移](#9. 错误分支代码迁移)
[1. 查看分支](#1. 查看分支)
[3. 本地分支关联远程分支](#3. 本地分支关联远程分支)
[4. 删除分支](#4. 删除分支)
[5. 分支合并](#5. 分支合并)
[五、.gitignore 忽略文件配置](#五、.gitignore 忽略文件配置)
[八、修改 Git 提交账户信息](#八、修改 Git 提交账户信息)
[1. 仅修改当前项目仓库账号](#1. 仅修改当前项目仓库账号)
[2. 修改全局账号(所有项目生效)](#2. 修改全局账号(所有项目生效))
[3. 查看当前账号信息](#3. 查看当前账号信息)
[4. 修改最近一次提交的作者信息](#4. 修改最近一次提交的作者信息)
[5. 修改多条历史提交作者(高危)](#5. 修改多条历史提交作者(高危))
[6. 常见问题说明](#6. 常见问题说明)
一、基础工作流程(常规开发提交流程)
日常开发统一遵循:拉取最新代码 → 修改文件 → 暂存 → 提交 → 推送。
1. 开发前拉取远程最新代码
每次开始编码、修复 bug 前,必须先拉取远程代码,提前规避冲突。
git pull origin main --rebase
origin:默认远程仓库名main:目标分支名,根据实际分支替换--rebase:变基拉取,保证提交历史线性整洁
提示 Already up to date 代表本地已是最新版本,可以直接开发。
2. 查看文件状态
查看当前目录下新增、修改、删除的文件:
git status
3. 将文件加入暂存区
git add 文件名 # 单独添加一个文件
git add . # 添加当前目录所有改动文件
4. 提交到本地仓库
提交必须填写清晰备注,方便版本追溯:
git commit -m "本次修改描述"
示例:
git commit -m "feat: 新增图像推理功能"
5. 推送代码到远程仓库
分支已关联远程时,直接简写:
git push
未关联分支,指定远程与分支推送:
git push origin main
二、代码冲突完整解决方案
执行 git pull / git rebase 出现 CONFLICT 即为代码冲突,原因:本地与远程修改了同一文件同一位置。
操作步骤
1.查看冲突文件
git status
标红文件为冲突文件。
2.手动编辑冲突文件
打开文件,会出现 Git 自动生成的冲突标记:
<<<<<<< HEAD
远程仓库代码
=======
本地修改代码
>>>>>>> 提交哈希值
保留最终需要的代码(选远程、选本地、合并均可)
删除三行冲突标记,保存文件.
3.标记冲突已解决
git add 冲突文件名
4.继续变基流程
git rebase --continue
- 多次冲突:重复「编辑文件 → add → continue」
放弃本次合并:
git rebase --abort
5.所有冲突处理完毕,正常推送:
git push
三、高频场景命令(撤销、回退、文件转移)
1. 已修改未暂存:撤销本地改动
git checkout -- 文件名
# 撤销所有文件改动
git checkout -- .
2. 已暂存未提交:撤销暂存
git reset 文件名
# 撤销全部暂存
git reset
3. 修改最后一次提交备注
git commit --amend -m "新备注"
4. 补充遗漏文件到上一次提交
git add 遗漏文件
git commit --amend --no-edit
5. 已提交未推送:撤销本次提交(保留代码)
git reset --soft HEAD~1
6. 彻底丢弃本地所有修改(高危操作)
强制同步为远程最新版本,操作不可逆:
*
git fetch origin
git reset --hard origin/main
# 同时删除未跟踪文件/文件夹
git clean -fd
7. 临时储藏代码(切换分支专用)
临时切分支、拉代码,不想提交当前改动:
*
# 储藏所有本地改动
git stash
# 恢复储藏的代码
git stash pop
8. 分支文件重命名 / 删除冲突
日志、图片、JSON 等输出文件批量冲突处理:
*
# 采用远程版本(推荐)
git checkout --theirs 文件夹路径/*
# 采用本地版本
git checkout --ours 文件夹路径/*
9. 错误分支代码迁移
在错误分支写完代码,迁移到正确分支:
*
git stash
git checkout 正确分支
git stash pop
四、分支管理全套命令
1. 查看分支
git branch # 查看本地分支
git branch -r # 查看远程分支
git branch -a # 查看所有分支
- 创建 & 切换分支
git checkout -b 新分支名 # 创建并切换到新分支
git checkout 分支名 # 切换已有分支
3. 本地分支关联远程分支
出现 There is no tracking information 时使用:
git branch --set-upstream-to=origin/远程分支名 本地分支名
4. 删除分支
git branch -d 本地分支名 # 删除已合并本地分支
git branch -D 本地分支名 # 强制删除未合并本地分支
git push origin --delete 分支名 # 删除远程分支
5. 分支合并
将其他分支合并到当前分支:
*
git merge 待合并分支名
五、.gitignore 忽略文件配置
项目中模型权重、日志、图片、虚拟环境、密钥、IDE 配置 无需提交,新建 .gitignore 文件配置忽略规则。
通用模板
# 虚拟环境
venv/
.venv/
env/
# IDE 配置文件
.vscode/
.idea/
*.iml
# 系统文件
.DS_Store
Thumbs.db
# 模型权重、大文件
*.ckpt
*.safetensors
*.bin
local_model/
# 测试输出、日志、图片
output/
output0/
logs/
*.jpg
*.png
# 环境配置、密钥文件
.env
*.yaml
提交忽略文件到仓库
git add .gitignore
git commit -m "添加文件忽略规则"
git push
六、推送报错原因与解决方案
| 错误提示 | 问题原因 | 解决命令 |
|---|---|---|
| Updates were rejected / non-fast-forward | 本地分支落后远程,禁止直接推送 | git pull origin 分支名 --rebase 解决冲突后 push |
| You have divergent branches | 本地与远程分支历史分叉 | git pull 解决冲突后提交推送 |
| You have unmerged paths | 存在未解决的代码冲突 | 处理冲突文件 → git add → 继续合并 |
| Unable to read remote refs | 本地远程分支引用失效 | git fetch --prune |
强制推送(谨慎使用)
多人协作禁止随意使用,仅个人独立分支紧急修复使用:
git push -f origin 分支名
七、团队协作安全规范
- 每日开发第一步:
git pull --rebase,保证本地代码最新。 - 提交备注规范:
feat新功能、fix修复bug、refactor代码重构。 - 临时代码使用
git stash储藏,减少无效临时提交。 - 必须配置
.gitignore,严禁提交密钥、模型、本地日志。 - 个人分支优先使用
rebase,公共主干分支使用merge。 - 非紧急场景,禁止使用
git push --force强制推送。 - 高危操作前备份文件,防止代码误删。
八、修改 Git 提交账户信息
提交姓名、邮箱错误,分当前仓库、全局、单次提交、历史提交四种修改方式。
1. 仅修改当前项目仓库账号
只对当前项目生效,不影响其他项目:
git config user.name "你的姓名"
git config user.email "你的邮箱@shturl."
2. 修改全局账号(所有项目生效)
git config --global user.name "你的姓名"
git config --global user.email "你的邮箱@shturl."
3. 查看当前账号信息
git config user.name
git config user.email
4. 修改最近一次提交的作者信息
已提交未推送,修正本次提交账号:
git commit --amend --author="姓名 <邮箱@shturl.>"
同步修改作者与提交备注:
git commit --amend --author="姓名 <邮箱@shturl.>" -m "新备注"
5. 修改多条历史提交作者(高危)
修改过往多条提交的账号,修改历史必须强制推送,提前和团队沟通:
git rebase -i HEAD~n # n 代表最近 n 条提交
将文件内 pick 改为 edit,保存退出,依次执行:
git commit --amend --author="姓名 <邮箱@shturl.>"
git rebase --continue
全部修改完成后强制推送:
git push origin main --force
6. 常见问题说明
- 新配置仅对后续提交生效,无法自动修改已完成的历史提交。
- 已推送到远程的错误提交,必须修改历史 + 强制推送才能更新。
- GitHub 页面昵称不同,清理浏览器缓存等待刷新即可。
九、极简速查命令(日常复制即用)
# 拉取最新代码
git pull origin 分支名 --rebase
# 标准提交流程
git add .
git commit -m "提交备注"
git push
# 临时储藏/恢复
git stash
git stash pop
# 撤销本地所有修改
git checkout -- .
# 清理无效远程分支引用
git fetch --prune
本文覆盖 95% 开发场景下的 Git 操作,从基础提交流程、冲突处理、分支管理到账号配置,全程实战可用,适合开发人员、运维、团队协作使用。