【Git 实战】Git 提交/拉取代码问题与指南:add/commit/push/pull 全流程 + 各类异常场景解决方案

📅 2026/7/16 11:07:45
【Git 实战】Git 提交/拉取代码问题与指南:add/commit/push/pull 全流程 + 各类异常场景解决方案
绝大多数新手开发 Git 报错、代码丢失、提交冲突、推送失败根源都是没分清git add/git commit/git push/git pull四个命令的作用分区。本文完整拆解四指令底层阶段、标准用法覆盖仅 add 未 commit、本地 commit 未推送、推送发现远程已有新提交、拉取代码冲突等高频故障附带查看变更、查看提交日志、.gitignore 忽略文件完整实操全部命令可直接复制执行适配日常开发与线上项目规范。一、Git 四大核心分区所有操作的底层逻辑工作区本地肉眼可见的源码文件修改后 Git 未追踪暂存区 (stage)git add写入临时存放待提交变更本地仓库git commit固化版本生成本地唯一提交记录远程仓库git push同步至云端仓库团队共享代码 标准流转链路工作区修改 → git add 暂存 → git commit 本地存档 → git push 同步远程拉取代码使用 git pull 下载远程更新合并至本地二、四大核心命令详细作用与标准写法1. git add变更写入暂存区作用告知 Git 需要追踪哪些修改文件仅做临时缓存不会生成版本记录。# 暂存当前目录全部新增/修改/删除文件 git add . # 单独指定单个文件暂存 git add user.java # 仅暂存指定文件夹 git add src/关键点仅 add 未 commit重启终端、重置操作都可能丢失暂存状态无版本快照保护。2. git commit暂存内容生成本地版本快照作用将暂存区所有变更打包为一条永久本地提交生成独立 commit-id本地仓库永久留存。# 标准提交附带描述备注强制规范 git commit -m 修复用户分页查询Bug # 跳过add直接提交已追踪文件慎用容易漏文件 git commit -a -m 简单更新文案关键点commit 仅保存在本地不会自动同步云端其他协作者无法看到本次提交。3. git push本地提交同步远程仓库作用对比本地与远程分支差异将本地新增 commit 上传至 GitHub/Gitee/GitLab 远程仓库。# 推送当前分支对应远程同名分支 git push # 指定远程仓库与分支推送 git push origin main4. git pull拉取远程最新代码并自动合并作用等价于git fetch git merge下载远程新提交自动合并到本地当前分支保证本地代码和远程同步。# 拉取默认远程最新代码 git pull # 指定远程分支拉取 git pull origin main三、高频异常场景完整解决方案场景 1修改代码后只执行 git add未 commit查看暂存区内所有变更git diff --cached撤销 add 操作文件退回纯工作区状态git reset HEAD .正常收尾执行 commit 生成本地版本git commit -m 提交业务修改场景 2已经 git commit但未执行 git push本地有提交远程无查看本地未推送到远程的提交记录git log --oneline正常流程直接推送远程git push想撤回本次 commit保留代码修改退回 add 阶段git reset --soft HEAD~1场景 3执行 git push 报错提示 rejected别人已提前提交代码报错原因远程仓库存在本地不存在的新提交Git 禁止直接覆盖远程代码。 标准生产处理步骤# 1. 拉取远程最新代码自动合并 git pull # 2. 若出现冲突手动处理冲突文件 # 3. 重新暂存、提交、推送 git add . git commit -m 合并远程更新解决代码冲突 git push场景 4git pull 拉取代码产生代码冲突冲突文件会标记 HEAD本地代码、远程提交分隔符处理流程打开冲突文件删除冲突标记保留最终需要的代码逻辑确认文件修改无误执行提交推送git add . git commit -m 解决远程合并冲突 git push四、查看代码变更、提交日志全套查询命令1. 查看当前文件变更状态git status2. 查看具体代码改动行# 仅查看工作区未add的修改 git diff # 查看已执行add、暂存区内的变更 git diff --cached3. 查看提交历史日志# 完整详细提交日志 git log # 精简单行日志只显示id与备注日常最常用 git log --oneline # 查看每一次提交对应的完整代码改动 git log -p五、.gitignore 忽略文件作用与实操核心作用配置文件放置项目根目录告诉 Git 永久忽略指定文件 / 文件夹不会追踪、不会提交至远程仓库避免日志、编译产物、配置密钥、本地缓存文件上传仓库。通用标准模板Java / 前端通用直接复制到.gitignore# 编译产物 target/ dist/ build/ # 日志文件 *.log logs/ # 系统缓存 .DS_Store # 环境密钥配置 application-dev.yml .env # IDE配置 .idea/ .vscode/ *.iml # 依赖缓存 node_modules/常用操作新建 / 编辑忽略文件vim .gitignore若文件已经被 Git 追踪新增忽略规则后需要清除本地缓存git rm --cached 文件名 git add . git commit -m 新增gitignore过滤无用文件六、日常开发标准完整操作流程修改业务代码查看改动确认无误git diff暂存所有变更git add .生成本地版本git commit -m 功能/修复描述拉取远程最新代码防止推送冲突git pull解决合并冲突如有同步代码至远程仓库git push七、落地总结add 仅做临时缓存commit 才是真正保存版本二者缺一不可push 前必须优先 pull 同步远程避免推送被拒绝、代码覆盖风险区分git diff与git diff --cached分别查看未暂存、已暂存代码.gitignore 提前配置杜绝日志、本地配置、编译垃圾提交远程推送报错优先拉取合并禁止使用git push -f强制覆盖公共生产分支。