一、基础配置命令(首次使用 Git 必配)
| 命令 | 解释 | 使用场景 | 注意事项 |
|---|---|---|---|
git config --global user.name "你的用户名" |
配置全局提交用户名 | 首次安装 Git 后,设置提交代码时的身份标识 | --global 表示所有仓库生效,不加则仅当前仓库生效 |
git config --global user.email "你的邮箱" |
配置全局提交邮箱 | 同上,邮箱建议用注册 GitHub/Gitee 的账号 | 提交记录会显示该邮箱,便于团队识别提交者 |
git config --global --list |
查看全局配置信息 | 验证用户名 / 邮箱是否配置成功 | 能看到 user.name 和 user.email 即为配置成功 |
git config --global core.quotepath false |
解决中文文件名乱码 | Git Bash 中中文文件名显示为编码(如 \346\234\252)时 |
仅优化显示,不影响文件提交 / 使用 |
git config --global core.autocrlf false |
关闭换行符自动转换 | Windows 系统推送时提示 LF will be replaced by CRLF |
避免换行符差异导致的警告,不影响代码逻辑 |
二、仓库状态查看命令(高频使用)
| 命令 | 解释 | 使用场景 | 注意事项 |
|---|---|---|---|
git status |
查看工作区 / 暂存区状态 | 每次提交前,确认哪些文件被修改 / 新增 / 删除 | 核心输出:Changes to be committed(暂存区)、Untracked files(未追踪)、working tree clean(无修改) |
git log |
查看本地提交历史记录 | 查看已提交的版本、作者、时间、备注 | 空仓库会提示 fatal: your current branch does not have any commits yet |
git log --graph --oneline --all |
图形化查看分支合并历史 | 多人协作 / 多分支开发时,清晰看到分支关系 | --oneline 简化输出,--all 显示所有分支 |
git diff 文件名 |
查看文件的具体修改内容 | 确认文件改了哪一行、加 / 删了什么内容 | 无输出 = 文件无修改;有输出 = 显示具体差异 |
| `git ls-files | grep "文件名"` | 查看仓库中是否包含指定文件 | 验证文件是否已被 Git 追踪(提交到仓库) |
git remote -v |
查看本地关联的远程库 | 确认远程库别名(如 origin/github1)和地址 | 输出格式:别名 地址 (fetch/push),分别对应拉取 / 推送地址 |
三、文件暂存 / 提交命令(核心流程)
| 命令 | 解释 | 使用场景 | 注意事项 |
|---|---|---|---|
git add 文件名 |
将指定文件加入暂存区 | 修改 / 新增文件后,标记为「待提交到本地库」 | 如 git add text1.py,仅添加单个文件 |
git add . |
将所有修改 / 新增文件加入暂存区 | 批量提交多个文件时(推荐先过滤无用文件) | 会添加所有未被 .gitignore 过滤的文件,避免提交缓存 / 环境文件 |
git add /绝对路径/文件名 |
通过绝对路径添加文件 | 未进入文件所在目录时,强制添加文件 | 推荐用相对路径(如 git add text1.py),更简洁不易错 |
git reset HEAD 文件名 |
将暂存区文件撤回到工作区 | 误把文件加入暂存区,想取消暂存 | 等同于 git restore --staged 文件名(Git 2.23+ 新增) |
git restore 文件名 |
恢复工作区被删除 / 修改的文件 | 误删文件、想放弃文件修改时 | 用暂存区的版本覆盖工作区,恢复到最近一次 git add 的状态 |
git commit -m "提交备注" |
将暂存区文件提交到本地库 | 暂存区有文件后,完成本地版本保存 | -m 必须加,备注要清晰(如「新增登录功能」「修复 XX Bug」) |
git commit |
打开编辑器填写提交备注 | 想写多行 / 详细备注时 | 直接退出编辑器(不写备注)会导致提交失败 |
四、远程库关联 / 推送 / 拉取命令(协作核心)
| 命令 | 解释 | 使用场景 | 注意事项 |
|---|---|---|---|
git clone 远程库地址 |
克隆远程库到本地 | 本地无项目,首次获取远程代码 | 自动关联远程库(别名默认 origin),生成完整的本地仓库 |
git remote add 别名 远程库地址 |
关联远程库到本地仓库 | 本地新建仓库,想推送到远程时 | 如 git remote add github1 https://github.com/HYQ-MAX/nihao.git,别名自定义 |
git remote rename 旧别名 新别名 |
修改远程库别名 | 想把默认的 origin 改成更易识别的名称 |
如 git remote rename origin github,修改后推送需用新别名 |
git remote remove 别名 |
删除本地关联的远程库 | 关联错误的远程库,想重新关联时 | 如 git remote remove origin,仅删除本地别名,不影响远程库 |
git push 远程库别名 本地分支名 |
推送本地分支到远程库 | 本地提交后,同步到 GitHub/Gitee | 如 git push origin main,main 是本地分支名(远程需有对应分支) |
git push -u 远程库别名 本地分支名 |
推送并建立分支关联 | 首次推送分支到远程时 | 后续可直接 git push,无需写别名 / 分支名 |
git push -f 远程库别名 本地分支名 |
强制推送(覆盖远程) | 远程库内容无用,需用本地内容替换 | 团队仓库禁止使用!会丢失远程提交记录,仅个人仓库可用 |
git pull 远程库别名 本地分支名 |
拉取远程最新代码并合并 | 远程库有新提交(如他人推送),同步到本地 | 核心:本地分支落后远程时,必须先 pull 再 push |
git pull 远程库别名 分支名 --allow-unrelated-histories |
强制合并无关联历史 | 本地和远程仓库提交记录无公共祖先(如本地新建 + 远程新建) | 解决 fatal: refusing to merge unrelated histories 错误 |
五、分支管理命令(多场景开发)
| 命令 | 解释 | 使用场景 | 注意事项 |
|---|---|---|---|
git branch |
查看本地所有分支 | 确认当前分支(* 标记)、已创建的分支 |
核心分支:main/master(主分支)、dev(开发分支) |
git branch -a |
查看本地 + 远程所有分支 | 确认远程有哪些分支(如 remotes/origin/main) |
远程分支名需和本地对应,否则推送 / 拉取会报错 |
git branch 分支名 |
创建新分支(不切换) | 基于当前分支,创建功能分支(如 feature/login) |
仅创建,需手动切换到新分支 |
git checkout -b 分支名 |
创建并切换到新分支 | 一步完成「创建 + 切换」,高频使用 | Git 2.23+ 可替换为 git switch -c 分支名(更直观) |
git checkout 分支名 |
切换到已有分支 | 从功能分支切回主分支、或切换到 Bug 修复分支 | 切换前确保当前分支修改已提交 / 暂存,避免文件覆盖 |
git switch 分支名 |
切换到已有分支 | 同上,switch 语义更清晰(推荐) |
仅 Git 2.23+ 支持,老版本用 checkout |
git merge 分支名 |
合并指定分支到当前分支 | 功能分支开发完成,合并到主分支 / 开发分支 | 冲突时需手动解决:删除 <<<<<<</=======/>>>>>>,保留正确代码 |
git branch -d 分支名 |
删除本地已合并的分支 | 功能分支合并后,清理无用分支 | 未合并的分支会提示无法删除,需用 -D 强制删除 |
git branch -D 分支名 |
强制删除本地分支 | 确认分支无用(即使未合并),强制清理 | 会丢失分支上未合并的修改,谨慎使用 |
git push 远程库别名 --delete 分支名 |
删除远程分支 | 远程分支无用(如已合并的功能分支) | 如 git push origin --delete dev,删除远程 dev 分支 |
六、其他实用命令(避坑 / 优化)
| 命令 | 解释 | 使用场景 | 注意事项 |
|---|---|---|---|
touch .gitignore |
创建忽略文件配置 | 过滤无需提交的文件(如 venv/、__pycache__/) |
核心规则:venv/(目录)、*.pyc(后缀)、.idea/(IDE 配置) |
git stash |
暂存未提交的修改 | 切换分支时,当前分支有未提交的修改(不想提交) | 暂存后工作区变干净,可切换分支 |
git stash pop |
恢复暂存的修改并删除记录 | 切回原分支,恢复之前暂存的修改 | 等同于「恢复 + 删除暂存记录」,git stash apply 仅恢复不删除 |
git rm 文件名 |
将文件删除操作同步到暂存区 | 工作区删除文件后,想把「删除」提交到仓库 | 如 git rm text1.py,提交后仓库中该文件也会被删除 |
核心流程总结(新手必记)
-
首次提交代码 :
git add 文件名→git commit -m "备注"→git push 远程别名 分支名 -
同步远程最新代码 :
git pull 远程别名 分支名→ 解决冲突(如有)→git push 远程别名 分支名 -
多分支开发 :
git switch -c 功能分支→ 开发 →git switch 主分支→git merge 功能分支→git push -
避坑关键:
-
推送前先
git pull,避免本地分支落后; -
提交前先
git status,确认只提交需要的文件; -
远程库别名 / 分支名要准确(通过
git remote -v/git branch验证)。
-