Git 是开发者必备的版本控制工具,无论是个人项目还是团队协作,掌握它都能极大提升效率。本文将从基础配置到分支管理,带你一步步吃透 Git 的核心用法,并用 C++、JavaScript、Python、Java、Go 等语言的常见场景举例,让你快速上手。

1. 快速上手:Git 常用命令速查

如果你已经熟悉 Git 的基本概念,可以直接看下面的速查表。新手建议从第二部分开始系统学习。

命令作用注意
查看 Git 版本
初始化 Git 仓库
文件标识暂存某个文件文件标识以终端为起始的相对路径
暂存所有文件
提交产生版本记录每次提交,把暂存区内容快照一份
查看文件状态(详细信息)
查看文件状态(简略信息)第一列 = 暂存区状态,第二列 = 工作区状态
查看暂存区文件列表
文件标识从暂存区恢复到工作区文件标识为  则恢复所有文件
文件标识从暂存区移除文件(停止跟踪)
查看提交记录(详细信息)
查看提交记录(简略信息)显示:版本号、分支指针、提交说明
查看完整历史(简略信息)包括提交、切换、回退等所有记录
版本号切换版本代码到暂存区和工作区支持三种模式:
– :保留暂存区和工作区
– :不保留暂存区和工作区
– (默认):不保留暂存区,工作区保留
分支名创建分支
查看本地分支
分支名删除分支确保记录已合并到其他分支
分支名切换分支
分支名创建并立即切换分支
分支名把指定分支的提交历史合并到当前分支

2. 远程仓库协作流程

远程仓库是团队协作的基础。以 Gitee、GitHub、GitLab 为例,步骤如下:

  • 注册账号:在托管平台注册并登录。
  • 新建仓库:填写仓库名称,创建后获得远程地址,例如
  • 添加远程地址:在本地仓库执行
    git remote add 远程仓库别名 远程仓库地址
  • 推送代码:使用
    git push -u 远程仓库别名 本地和远程分支名
    将本地提交推送到远程。

以下步骤以 Gitee 为例,GitHub 等平台操作类似。

其中  表示建立上游跟踪(后续可直接使用  或 )。

⚠️ 注意:上传前需要确保远程仓库初始化,已有分支。首次上传会用到个人的Gitee账号,

如果错误添加,在 控制面板 > 凭据管理器 修改 

3. 配置与初始化

3.1 配置用户信息

每次提交都会记录作者信息,所以先设置用户名和邮箱:

# 查看 Git 版本(确认已安装)
git -v
# 设置全局用户名和邮箱(一次配置,全局生效)
git config --global user.name "用户名"
git config --global user.email "邮箱"
# 查看所有配置信息(验证是否配置成功)
git config --list

使用 --global 表示全局配置,如果某个项目需要不同身份,可以去掉该参数单独设置。

 提示: 表示全局配置,如果某个项目需要单独使用其他身份,可以去掉  并在项目内单独配置。

3.2 初始化本地仓库

仓库是版本历史的“时光机”。有两种方式创建:

  • 本地初始化:在项目目录执行
    git init
    ,会生成隐藏的 .git 文件夹。
  • 远程克隆:从服务器拉取已有仓库
    git clone 远程仓库地址

3.3 Git 的三个核心区域

理解工作区、暂存区、版本库是掌握 Git 的关键:

区域说明对应命令
工作区你实际编辑文件的文件夹(可见可改) → 暂存区
暂存区临时存放改动的地方,像一个“准备提交的购物车” → 版本库
版本库真正保存版本快照的地方,每次提交生成一个记录 查看暂存区内容

文件流转流程:工作区 → git add → 暂存区 → git commit → 版本库。

# 暂存指定文件(工作区 → 暂存区)
git add page/login/index.html
# 暂存所有改动文件
git add .
# 查看暂存区中有哪些文件
git ls-files
# 提交暂存区内容 → 版本库,生成版本快照
git commit -m "1.登录页面"
# git commit 后想修改注释
git commit --amend -m "新注释"

4. 文件状态与暂存区妙用

4.1 文件状态

Git 中的文件分为“未跟踪”和“已跟踪”两大类。已跟踪文件又细分为:

状态含义出现场景
(未跟踪)从未被 Git 管理新建的文件
(新添加)第一次被 Git 暂存之前版本记录中没有此文件
(未修改)三个区域内容一致刚提交完成后
(已修改)工作区内容发生了变化修改了文件内容

查看状态推荐使用简略模式:

# 详细信息
git status
# 简略信息(一列:暂存区状态,第二列:工作区状态)
git status -s

4.2 暂存区的灵活操作

暂存区是“临时缓冲区”,让你能精细控制每次提交的内容。常用操作:

  • 从暂存区恢复到工作区
    git restore <文件标识>
    # 如果文件标识为 . 则恢复所有文件,否则是指定文件
    git restore .
    撤销工作区的改动。
  • 从暂存区移除文件
    git rm --cached <文件标识>
    停止跟踪但不删除磁盘文件。

⚠️ 这个命令常用于不小心把密码文件或临时文件添加到暂存区时,将其剔除。

 小提示: 和  的区别

  • :用暂存区的内容覆盖工作区(撤销未提交的修改)

  • :把文件移出暂存区,变成未跟踪状态

5. 版本回退与忽略文件

5.1 时光穿梭机:回退版本

查看提交历史:

git log --oneline

回退命令对照表:

模式暂存区工作区常用场景
保留保留只想修改 commit 信息,不改代码
(默认)重置保留撤销 commit,但保留代码修改
重置重置完全回到过去,丢弃所有改动(最常用但也最危险)

示例:

# 混合模式(默认)
git reset 版本号
# 软回退
git reset --soft 版本号
# 硬回退(慎用!)
git reset --hard 版本号
将版本库中指定版本的内容恢复到工作区。

⚠️ 注意事项

  • 只能回退已经提交到版本库的记录,未暂存或未提交的改动不会被保护。

  • 回退后可以继续修改 → 暂存 → 提交,生成新的版本。

5.2 忽略文件:.gitignore

在项目根目录创建 .gitignore 文件,写入忽略规则。典型内容:

  • 系统文件:.DS_Store, Thumbs.db
  • 编译结果:*.class, *.exe, dist/
  • 日志缓存:*.log, *.tmp, cache/
  • 涉密文件:password.txt, secrets.yml
# gitignore文件常用配置
node_modules/
.vscode/
*.log
.DS_Store
.env
dist/

 注意: 只对尚未被跟踪的文件生效。如果一个文件已经被  过,那么即使加入  也不会自动停止跟踪,必须先 。

6. 分支管理实战

分支是 Git 最强大的功能之一,让多人在同一项目上并行开发。典型结构如下:

C3 → C4 → C5  (main)
                   \
                    C6 → C7 → C8  (content)

6.1 创建与切换分支

命令作用
创建分支
切换分支
创建并立即切换到新分支

示例:

# 查看当前分支(* 表示当前分支)
git branch
# 创建名为 content 的新分支
git branch content
# 切换到 content 分支
git checkout content
# 输出:Switched to branch 'content'
# 或者一步到位:创建并切换
git checkout -b content

切换后,工作区自动变为该分支的最新版本。使用 git log --oneline 查看历史。

 注意: 表示当前所在分支是 。

6.2 合并与删除分支

场景:将 login-bug 合并回 main,然后删除 login-bug

# 1. 切回到要合入的分支(通常是主分支)
git checkout main
# 2. 合并其他分支进来
git merge login-bug
# 3. 删除已合并的分支指针
git branch -d login-bug

如果 main 在创建 content 后又有新提交,合并时无法使用 Fast-forward,Git 会自动执行一次合并提交(产生新快照):

C6 → C7 → C8  (content)
               /          \
        C4 → C5 → C9 → C10 → C11  (main, HEAD)
git checkout master      # 切回主分支
git merge content        # 合并 content 分支(自动产生合并提交)
git branch -d content    # 删除已合并的分支

6.3 合并冲突解决

当两个分支修改了同一文件同一区域时,Git 会标记冲突。典型标记示例:

在 VSCode、IntelliJ 等 IDE 中会高亮显示冲突区域,手动选择保留哪个版本,然后保存并提交。

  •  表示当前所在分支(例如 )的内容

  •  表示要合并过来的分支的内容

  •  是分隔线

7. 团队协作最佳实践

以下建议能帮你减少冲突、提升效率:

建议说明
按页面/模块划分不同分支开发减少多人同时修改同一文件的概率
公共代码放在统一文件夹维护明确责任边界,变更前及时沟通
统一开发环境(Node 版本、npm 包等)避免因环境差异导致的语法或依赖冲突
频繁拉取主分支更新及时同步,减少分叉过远
[AFFILIATE_SLOT_1]

在 C++、JavaScript、Python、Java、Go 等语言项目中,分支策略尤其重要。例如,在 Python 项目中,你可能需要为不同版本的功能创建 feature 分支;在 Go 项目中,合并前务必确保代码通过测试。

[AFFILIATE_SLOT_2]

总结

本文从配置、初始化、文件管理到分支操作,系统梳理了 Git 的核心知识。记住:工作区→暂存区→版本库是基本流程,分支让你并行开发,远程仓库实现协作。多动手实践,很快就能得心应手。

git -vgit initgit addgit add .git commit -m "说明注释"git statusgit status -sgit ls-filesgit restore.git rm --cachedgit loggit log --onelinegit reflog --onelinegit reset--soft--hard--mixedgit branchgit branchgit branch -dgit checkoutgit checkout -bgit merge-ugit pushgit pull--global--globalgit addgit commitgit ls-filesUA*Mgit restoregit rm --cachedrestorerm --cached--soft--mixed--hard.gitignoregit add.gitignoregit rm --cachedgit branch 分支名git checkout 分支名git checkout -b 分支名HEAD -> contentcontentHEADmasterpublish=======