Git是一款分布式版本控制工具,核心解决多人代码协作版本追溯回滚本地与远程仓库同步问题,是开发必备基础工具。本文从安装、配置到核心命令、实战流程全解析,新手可直接跟着操作。

一、Git下载

1.Git官方下载

✅ 提示:根据自己的系统(Windows/Mac/Linux)选择对应安装包,默认安装即可,无需修改额外配置。

2.GitHub汉化插件

🌟 适用:刚接触GitHub的新手,安装后可将GitHub界面转为中文,降低操作门槛。

二、Git常用命令速查(附注意事项)

命令分类Git 命令核心作用备注/注意事项
基础配置git config --global user.name "你的用户名"配置全局提交者姓名,所有本地仓库生效需与GitHub用户名一致,否则提交记录归属异常
git config --global user.email "你的邮箱"配置全局提交者邮箱,关联代码托管平台记录需与GitHub绑定邮箱一致
git config --list查看所有Git配置信息,验证配置是否生效配置后执行,确认用户名/邮箱正确
仓库操作git init初始化本地空仓库,生成隐藏.git文件夹进入项目根目录后执行
git clone <远程仓库地址>克隆远程仓库到本地,自动初始化并关联远程直接获取完整项目代码,无需手动init
git clone <远程地址> <本地文件夹名>克隆远程仓库并指定本地文件夹名称自定义项目本地名称,适用于重名场景
核心工作流程git status查看工作区/暂存区状态(新增/修改/未追踪)新手建议频繁使用,实时掌握文件状态
git add <文件名>将单个文件从工作区添加到暂存区(待提交)精准提交指定文件,避免多余文件纳入
git add .将当前目录所有修改文件加入暂存区日常开发高频使用,快速提交所有变更
git reset <文件名>将暂存区文件撤销回工作区,保留本地修改仅取消待提交标记,不删除文件内容
git commit -m "清晰提交说明"将暂存区文件提交到本地仓库,生成版本记录提交说明需简洁明确(如“完成登录功能开发”)
git commit --amend修改最近一次提交说明/补充漏加的修改文件未推送到远程时使用,避免多余提交记录
git checkout -- <文件名>丢弃工作区文件修改,恢复到最新版本⚠️ 未暂存的修改会直接丢失,谨慎使用
git rm <文件名>删除工作区文件并将操作加入暂存区提交后会从本地仓库彻底移除文件
git rm --cached <文件名>取消Git追踪,保留本地文件适用于配置文件、日志文件等无需追踪的文件
分支操作git branch查看本地所有分支,当前分支带*标记快速确认当前工作分支
git branch <分支名>基于当前分支创建新本地分支(仅创建不切换)git branch dev,基于main创建开发分支
git checkout <分支名>切换到指定本地分支⚠️ 切换前需提交/暂存当前分支未完成修改
git checkout -b <分支名>创建新分支并直接切换,合并上述两个命令开发新功能首选,如git checkout -b dev
git merge <分支名>将指定分支代码合并到当前分支git merge dev,将开发分支合并到主分支
git branch -d <分支名>删除本地已合并的分支未合并会提示,防止误删有效代码
git branch -D <分支名>强制删除本地分支⚠️ 不可逆,删除前确认代码已备份/合并
git push -u origin <分支名>推送本地新分支到远程并建立关联首次推送新分支专用,后续直接用git push
git push origin --delete <分支名>删除远程仓库中的指定分支需确认远程分支已无有效代码
远程仓库交互git remote查看本地关联的远程仓库别名(默认origin)快速确认远程仓库别名
git remote -v查看远程仓库拉取/推送地址,验证关联正确性确认地址为SSH格式(免密)或HTTPS格式
git remote add origin <远程地址>将本地仓库关联到远程仓库,origin为自定义别名本地init后执行,关联GitHub/Gitee仓库
git pull拉取远程最新代码并自动合并到本地当前分支等价于git fetch + git merge,开发前先pull
git push将本地当前分支提交推送到远程对应分支已建立分支关联后高频使用
日志与版本追溯git log查看详细提交日志(提交者/时间/哈希/说明)完整展示版本历史,信息最全面
git log --oneline一行简洁显示日志(7位哈希+提交说明)日常快速查看版本,高频使用
git log --graph图形化显示提交日志,展示分支合并历史清晰看到分支创建、合并的版本走向
git reflog查看所有Git操作记录(含已撤销/删除分支)✅ 找回误删版本/分支的核心命令,必记
辅助命令git stash暂存未提交修改,让工作区回到干净状态临时切换分支时使用,保留当前开发进度
git stash list查看所有储藏的修改记录,每条有唯一标识确认暂存的修改记录
git stash pop恢复最近一次暂存的修改并删除暂存记录切换回原分支后使用,快速恢复开发进度
git diff查看工作区与暂存区的文件差异未执行git add时,检查修改的具体内容
git diff <分支1> <分支2>查看两个分支之间的文件差异合并分支前使用,确认修改内容无冲突

三、GitHub SSH密钥配置(免密访问)

配置SSH密钥后,本地与GitHub交互无需反复输入账号密码,是开发的必备配置,步骤如下:

  1. 打开Git Bash(安装Git后自带程序,Windows在开始菜单查找,Mac直接打开终端);

  2. 先配置Git全局信息(与GitHub一致),执行以下命令:

    1
    2
    git config --global user.name "你的GitHub用户名"
    git config --global user.email "你的GitHub绑定邮箱"
  3. 生成SSH密钥,执行命令后连续按三次回车键(默认配置即可,无需设置密码):

    1
    ssh-keygen -t rsa -C "你的GitHub绑定邮箱"
  4. 查找密钥文件:

    • Windows:C:\Users\你的电脑用户名\.ssh 目录下,找到id_rsa.pub文件;

    • Mac/Linux:终端执行cd ~/.ssh进入目录,cat id_rsa.pub可直接查看密钥内容;

      image-20260201195632733

  5. 复制密钥:用记事本/文本编辑器打开id_rsa.pub复制文件内全部内容(不要遗漏任何字符);

  6. 配置GitHub密钥:

    • 登录GitHub,点击右上角头像 → 选择Settings

    • 左侧菜单栏找到SSH and GPG keys → 点击New SSH key

    • 标题栏自定义(如“KeyPub”),将复制的密钥粘贴到Key输入框 → 点击Add SSH key完成创建;

      image-20260201195916949

  7. 验证连接是否成功(关键步骤):
    回到Git Bash/终端,执行以下命令,出现问候语即配置成功:

    1
    ssh -T git@github.com

    ✅ 成功提示:Hi 你的用户名! You've successfully authenticated, but GitHub does not provide shell access.

四、Git实战核心流程(新手必看)

场景1:本地新建项目,推送到GitHub

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 1. 新建项目文件夹并进入
mkdir my-project && cd my-project
# 2. 初始化本地仓库
git init
# 3. 创建文件(示例:README.md)
touch README.md
# 4. 将文件加入暂存区
git add .
# 5. 提交到本地仓库
git commit -m "初始化项目,添加README"
# 6. 关联GitHub远程仓库(替换为自己的仓库地址)
git remote add origin git@github.com:你的用户名/my-project.git
# 7. 首次推送(-u建立关联,后续直接git push)
git push -u origin main

场景2:分支协作开发(日常开发主流方式)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 1. 基于main分支创建并切换到dev开发分支
git checkout -b dev
# 2. 开发功能,修改文件后提交
git add . && git commit -m "完成XX功能开发,修复XXbug"
# 3. 开发完成,切回主分支main
git checkout main
# 4. 拉取远程main最新代码(避免合并冲突)
git pull
# 5. 将dev分支代码合并到main
git merge dev
# 6. 将合并后的main推送到远程
git push
# 7. 确认无误后,删除本地dev分支
git branch -d dev

五、新手常见问题与避坑指南

问题1:git push提示「权限拒绝(Permission denied)」

  • 原因:SSH密钥配置错误、远程仓库地址为HTTPS格式、密钥未添加到GitHub;
  • 解决:① 验证SSH连接(执行ssh -T git@github.com);② 将远程地址改为SSH格式(git remote set-url origin git@github.com:用户名/仓库名.git)。

问题2:切换分支提示「工作区有未提交的修改」

  • 原因:当前分支有未add/未commit的修改,Git防止分支切换丢失代码;
  • 解决:① 若需保留修改:执行git stash暂存,切换后用git stash pop恢复;② 若无需保留:执行git checkout -- .丢弃所有修改。

问题3:git merge合并时出现「冲突(conflict)」

  • 原因:多分支修改了同一文件的同一行内容,Git无法自动合并;
  • 解决:① 执行git status查看冲突文件;② 打开冲突文件,手动编辑<<<<<<< HEAD(当前分支内容)、=======(分隔符)、>>>>>>> 分支名(待合并分支内容),保留正确代码并删除标记;③ 编辑完成后执行git add 冲突文件名 && git commit -m "解决合并冲突"

问题4:误删分支/误提交,想找回历史版本

  • 解决:执行git reflog查看所有操作记录,找到目标版本的7位哈希值,执行git reset --hard 哈希值即可回滚到指定版本(未推送到远程时使用)。

问题5:不想让Git追踪某些文件(如node_modules、日志)

  • 解决:在项目根目录新建.gitignore文件,写入需忽略的文件/目录,示例:

    1
    2
    3
    4
    5
    6
    7
    # 忽略node_modules文件夹
    node_modules/
    # 忽略所有.log日志文件
    *.log
    # 忽略IDE配置文件
    .vscode/
    .idea/

六、拓展学习(进阶必备)

  1. .gitignore配置:掌握通用忽略规则,避免提交无用文件,可搜索「Git忽略文件模板」直接复用;
  2. 进阶命令git reset --hard(版本回滚)、git cherry-pick(跨分支复用单个提交)、git fetch(拉取远程代码不自动合并);
  3. 图形化工具:SourceTree、GitKraken,可视化操作Git,降低命令行操作难度;
  4. 官方文档,权威且全面,解决高阶问题。

总结

Git的核心使用逻辑围绕「工作区→暂存区→本地仓库→远程仓库」 展开,新手先掌握核心命令:git add/git commit/git pull/git push,再逐步学习分支协作和版本追溯。

分支开发是团队协作的标准方式,牢记「开发在分支,合并回主分支」 原则,配合SSH免密配置,能大幅提升开发效率。遇到问题先执行git status/git reflog,大部分问题都能快速定位解决。