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.email "你的邮箱"
|
--global
表示全局配置,所有本地仓库都会使用该信息;若仅需配置当前仓库,去掉 --global
即可。
- 查看配置:
git config --list
3. 创建/初始化仓库
仓库(Repository)是 Git 管理文件的目录,分为本地仓库和远程仓库(如 GitHub、Gitee 上的仓库)。
方式 1:新建本地仓库
1 2 3 4 5 6
| mkdir my-project cd my-project
git init
|
方式 2:克隆远程仓库
从远程仓库(如 GitHub)复制项目到本地:
1
| git clone https://github.com/用户名/仓库名.git
|
二、Git 核心操作:文件的增删改查
Git 工作流程分为 3 个区域:工作区(当前编辑的文件)、暂存区(临时存储待提交的修改)、本地仓库(正式保存的版本记录)。
1. 查看文件状态
- 红色:文件在工作区被修改但未添加到暂存区;
- 绿色:文件已添加到暂存区,等待提交到本地仓库;
- 提示信息会显示下一步操作建议(如
git add <文件>
或 git commit -m "说明"
)。
2. 将文件添加到暂存区
1 2 3 4 5
| git add 文件名
git add .
|
3. 将暂存区文件提交到本地仓库
提交时必须填写提交信息(描述本次修改内容,方便后续追溯):
1
| git commit -m "这里填写提交说明"
|
若提交后发现信息写错,可修改最后一次提交信息:
1
| git commit --amend -m "新的提交说明"
|
4. 查看提交历史
1 2
| git log git log --oneline
|
5. 撤销修改
情况 1:文件在工作区被修改,未添加到暂存区(想恢复到上次提交的状态)
情况 2:文件已添加到暂存区,想撤回到工作区
情况 3:已提交到本地仓库,想回滚到历史版本
1 2 3 4 5
| git log --oneline
git reset --hard 哈希值
|
6. 删除文件
1 2 3 4 5
| git rm 文件名
git commit -m "删除无用文件 old.txt"
|
三、远程仓库操作:同步代码
远程仓库(如 GitHub、Gitee)是多人协作的核心,需掌握推送(本地 → 远程)和拉取(远程 → 本地)操作。
1. 关联远程仓库
若本地仓库是 git init
创建的,需手动关联远程仓库:
1
| git remote add origin 远程仓库地址
|
origin
是远程仓库的默认别名,可自定义(但建议保持默认,方便记忆)。
查看已关联的远程仓库:
2. 推送本地仓库到远程仓库
1 2 3 4 5
| git push -u origin 分支名
git push
|
3. 拉取远程仓库的更新
当远程仓库有新修改(如他人提交),需拉取到本地同步:
- 若本地有未提交的修改,拉取可能冲突,建议先提交本地修改再拉取。
四、分支操作:多人协作的核心
分支是 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 checkout 分支名
git checkout -b 分支名
|
3. 合并分支
将 A 分支的修改合并到当前分支(例如:将功能分支合并到主分支 main):
1 2 3 4 5
| git checkout main
git merge feature-login
|
解决合并冲突
若合并时出现 “Automatic merge failed”,表示文件冲突(同一位置被不同分支修改),需手动解决:
- 打开冲突文件,搜索
<<<<<<< HEAD
(当前分支内容)和 >>>>>>> 分支名
(来源分支内容);
- 保留需要的内容,删除冲突标记(
<<<<<<<
、=======
、>>>>>>>
);
- 解决后提交:
git add .
→ git commit -m "解决合并冲突"
。
4. 删除分支
1 2 3 4 5 6 7 8
| git branch -d 分支名
git branch -D 分支名
git push origin --delete 分支名
|
五、实用技巧与场景
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
git stash apply stash@{0}
|
3. 查看两次提交的差异
1 2
| git diff 哈希值1 哈希值2 git diff 分支1 分支2
|
六、常见问题与解决
推送失败提示“permission denied”:远程仓库权限不足,需检查是否已登录正确账号(GitHub 可通过 Personal Access Token 或 SSH 密钥授权)。
拉取时冲突无法解决:若冲突复杂,可放弃本地修改,强制拉取远程最新版本(谨慎使用,会覆盖本地未提交的修改):
1 2
| git fetch --all git reset --hard origin/分支名
|
忘记提交某些文件:无需重新创建分支,直接提交新修改并推送即可:
1 2 3
| git add 遗漏的文件 git commit -m "补充提交:添加xxx文件" git push
|
总结
Git 的核心逻辑是“追踪修改、多版本管理、协作同步”,掌握 add
、commit
、push
、pull
、branch
等基础命令后,即可应对日常开发需求。熟练后可探索更多高级功能(如 cherry-pick 挑选提交、rebase 变基等),进一步提升效率。
记住:频繁提交、写清晰的提交说明、及时同步远程仓库,是使用 Git 的好习惯!