Git 进阶指南:从基础操作到团队协作最佳实践

Git 实用教程:从入门到熟练掌握版本控制

Git 是目前最流行的分布式版本控制系统,被广泛用于软件开发、文档管理等场景。它能帮助你追踪文件的每一次修改,方便多人协作,还能在需要时轻松回滚到历史版本。本教程将从基础操作到进阶技巧,带你全面掌握 Git 的使用。

一、Git 安装与初始化

1. 安装 Git

  • Windows:下载 Git for Windows,安装时保持默认选项即可(会自动配置环境变量,包含 Git Bash 终端)。
  • macOS:通过 Homebrew 安装(brew install git),或直接下载 官方安装包
  • Linux:使用包管理器安装(如 Ubuntu 用 sudo apt install git,CentOS 用 sudo yum install git)。

安装完成后,打开终端输入 git --version,若显示版本号则表示安装成功。

2. 初始配置

首次使用 Git 需配置用户名和邮箱(用于标识提交记录),终端输入:

1
2
git config --global user.name "你的用户名"  # 例如:git config --global user.name "Alice"
git config --global user.email "你的邮箱" # 例如:git config --global user.email "alice@example.com"
  • --global 表示全局配置,所有本地仓库都会使用该信息;若仅需配置当前仓库,去掉 --global 即可。
  • 查看配置:git config --list

3. 创建/初始化仓库

仓库(Repository)是 Git 管理文件的目录,分为本地仓库远程仓库(如 GitHub、Gitee 上的仓库)。

方式 1:新建本地仓库

1
2
3
4
5
6
# 1. 创建并进入项目文件夹
mkdir my-project
cd my-project

# 2. 初始化仓库(会生成隐藏的 .git 文件夹,存储版本信息)
git init

方式 2:克隆远程仓库

从远程仓库(如 GitHub)复制项目到本地:

1
git clone https://github.com/用户名/仓库名.git  # 替换为具体仓库地址

二、Git 核心操作:文件的增删改查

Git 工作流程分为 3 个区域:工作区(当前编辑的文件)、暂存区(临时存储待提交的修改)、本地仓库(正式保存的版本记录)。

1. 查看文件状态

1
git status  # 显示工作区和暂存区的文件状态
  • 红色:文件在工作区被修改但未添加到暂存区;
  • 绿色:文件已添加到暂存区,等待提交到本地仓库;
  • 提示信息会显示下一步操作建议(如 git add <文件>git commit -m "说明")。

2. 将文件添加到暂存区

1
2
3
4
5
# 添加单个文件
git add 文件名 # 例如:git add index.html

# 添加当前目录所有修改(常用)
git add . # 注意末尾的点,表示当前目录

3. 将暂存区文件提交到本地仓库

提交时必须填写提交信息(描述本次修改内容,方便后续追溯):

1
git commit -m "这里填写提交说明"  # 例如:git commit -m "修复登录按钮样式错误"

若提交后发现信息写错,可修改最后一次提交信息:

1
git commit --amend -m "新的提交说明"

4. 查看提交历史

1
2
git log  # 显示详细提交记录(作者、时间、提交说明、哈希值)
git log --oneline # 简洁显示(只显示哈希值前7位和提交说明)

5. 撤销修改

情况 1:文件在工作区被修改,未添加到暂存区(想恢复到上次提交的状态)

1
git checkout -- 文件名  # 例如:git checkout -- style.css

情况 2:文件已添加到暂存区,想撤回到工作区

1
git reset HEAD 文件名  # 例如:git reset HEAD style.css

情况 3:已提交到本地仓库,想回滚到历史版本

1
2
3
4
5
# 1. 先查看历史版本的哈希值(前7位即可)
git log --oneline

# 2. 回滚到指定版本(注意:该操作会覆盖工作区和暂存区,谨慎使用)
git reset --hard 哈希值 # 例如:git reset --hard a1b2c3d

6. 删除文件

1
2
3
4
5
# 1. 删除工作区文件,并将删除操作添加到暂存区
git rm 文件名 # 例如:git rm old.txt

# 2. 提交删除操作到本地仓库
git commit -m "删除无用文件 old.txt"

三、远程仓库操作:同步代码

远程仓库(如 GitHub、Gitee)是多人协作的核心,需掌握推送(本地 → 远程)和拉取(远程 → 本地)操作。

1. 关联远程仓库

若本地仓库是 git init 创建的,需手动关联远程仓库:

1
git remote add origin 远程仓库地址  # 例如:git remote add origin https://github.com/xxx/xxx.git
  • origin 是远程仓库的默认别名,可自定义(但建议保持默认,方便记忆)。

查看已关联的远程仓库:

1
git remote -v  # 显示远程仓库的 fetch(拉取)和 push(推送)地址

2. 推送本地仓库到远程仓库

1
2
3
4
5
# 首次推送时,需指定本地分支与远程分支关联(通常主分支为 main 或 master)
git push -u origin 分支名 # 例如:git push -u origin main

# 后续推送(已关联分支)
git push

3. 拉取远程仓库的更新

当远程仓库有新修改(如他人提交),需拉取到本地同步:

1
git pull origin 分支名  # 例如:git pull origin main
  • 若本地有未提交的修改,拉取可能冲突,建议先提交本地修改再拉取。

四、分支操作:多人协作的核心

分支是 Git 最强大的功能之一,可理解为“平行宇宙”——你可以在分支上独立开发(如新增功能、修复 bug),完成后再合并到主分支,不影响主分支的稳定性。

1. 查看分支

1
2
3
git branch  # 显示本地所有分支,当前分支前有 * 标记
git branch -r # 显示远程分支
git branch -a # 显示本地和远程所有分支

2. 创建与切换分支

1
2
3
4
5
6
7
8
# 创建分支
git branch 分支名 # 例如:git branch feature-login

# 切换到指定分支
git checkout 分支名 # 例如:git checkout feature-login

# 简化:创建并切换到新分支(常用)
git checkout -b 分支名 # 例如:git checkout -b bugfix-123

3. 合并分支

将 A 分支的修改合并到当前分支(例如:将功能分支合并到主分支 main):

1
2
3
4
5
# 1. 先切换到目标分支(如 main)
git checkout main

# 2. 合并来源分支(如 feature-login)
git merge feature-login

解决合并冲突

若合并时出现 “Automatic merge failed”,表示文件冲突(同一位置被不同分支修改),需手动解决:

  1. 打开冲突文件,搜索 <<<<<<< HEAD(当前分支内容)和 >>>>>>> 分支名(来源分支内容);
  2. 保留需要的内容,删除冲突标记(<<<<<<<=======>>>>>>>);
  3. 解决后提交:git add .git commit -m "解决合并冲突"

4. 删除分支

1
2
3
4
5
6
7
8
# 删除本地分支(需先切换到其他分支)
git branch -d 分支名 # 例如:git branch -d feature-login

# 强制删除未合并的分支(谨慎使用)
git branch -D 分支名

# 删除远程分支
git push origin --delete 分支名 # 例如:git push origin --delete feature-login

五、实用技巧与场景

1. 忽略不需要版本控制的文件

创建 .gitignore 文件(放在仓库根目录),列出无需跟踪的文件/目录(如日志、缓存、依赖包):

1
2
3
4
5
6
7
8
9
# 忽略所有 .log 文件
*.log

# 忽略 node_modules 目录
node_modules/

# 忽略特定文件
.DS_Store # macOS 系统文件
.env # 环境变量文件(含敏感信息)

2. 暂存工作区修改(stash)

当需要切换分支,但本地修改未完成不想提交时,可暂存修改:

1
2
3
4
5
6
7
8
9
10
11
# 暂存当前工作区的所有修改
git stash

# 查看暂存列表
git stash list

# 恢复最近一次暂存的修改(并删除暂存记录)
git stash pop

# 恢复指定暂存(通过 stash@{} 后的数字,如 0 表示第一条)
git stash apply stash@{0}

3. 查看两次提交的差异

1
2
git diff 哈希值1 哈希值2  # 比较两个版本的差异
git diff 分支1 分支2 # 比较两个分支的差异

六、常见问题与解决

  1. 推送失败提示“permission denied”:远程仓库权限不足,需检查是否已登录正确账号(GitHub 可通过 Personal Access Token 或 SSH 密钥授权)。

  2. 拉取时冲突无法解决:若冲突复杂,可放弃本地修改,强制拉取远程最新版本(谨慎使用,会覆盖本地未提交的修改):

    1
    2
    git fetch --all
    git reset --hard origin/分支名 # 例如:git reset --hard origin/main
  3. 忘记提交某些文件:无需重新创建分支,直接提交新修改并推送即可:

    1
    2
    3
    git add 遗漏的文件
    git commit -m "补充提交:添加xxx文件"
    git push

总结

Git 的核心逻辑是“追踪修改、多版本管理、协作同步”,掌握 addcommitpushpullbranch 等基础命令后,即可应对日常开发需求。熟练后可探索更多高级功能(如 cherry-pick 挑选提交、rebase 变基等),进一步提升效率。

记住:频繁提交、写清晰的提交说明、及时同步远程仓库,是使用 Git 的好习惯!