一、Git 基础概念
- 版本控制工具
- 用于跟踪文件变化,管理团队协作开发,支持分布式版本控制(每个开发者本地有完整代码库)。
- 核心组件
- 工作区:本地磁盘中实际存储文件的目录。
- 暂存区(Index/Stage):临时存放待提交的修改。
- 本地仓库 :存储所有版本历史数据(位于
.git
目录)。 - 远程仓库:托管代码的服务器(如 GitHub、Gitee)。
二、环境搭建与初始化
1. 安装与配置
-
安装 Git
- 官网下载对应系统安装包:Git 官网。
-
配置用户信息 (必须,用于标识提交者)
git config --global user.name "你的用户名" # 设置全局用户名 git config --global user.email "你的邮箱" # 设置全局邮箱
2. 初始化仓库
-
创建本地仓库
git init # 在当前目录初始化空仓库(生成 `.git` 隐藏目录)
-
克隆远程仓库到本地
git clone <远程仓库URL> # 例:git clone https://github.com/user/repo.git
三、基本操作流程
1. 文件状态管理
-
查看状态
git status # 查看文件变更状态(红色:未暂存;绿色:已暂存)
-
添加文件到暂存区
git add <文件名> # 添加单个文件(例:git add README.md) git add . # 添加当前目录所有变更文件
-
撤销暂存区修改
git reset HEAD <文件名> # 撤销指定文件的暂存(回到工作区修改状态)
2. 提交变更到本地仓库
git commit -m "提交说明" # 将暂存区内容提交到本地仓库(-m 后接描述信息)
3. 管理远程仓库
-
关联远程仓库
git remote add origin <远程仓库URL> # 关联远程仓库(origin 为默认别名)
-
拉取远程更新
git pull origin main # 拉取远程 main 分支的最新代码并合并到本地
-
推送本地代码到远程
git push origin main # 将本地 main 分支推送到远程仓库(首次需加 `-u` 关联分支)
四、分支管理
1. 分支基本操作
-
查看分支
git branch # 查看本地分支(当前分支前有 * 标识) git branch -a # 查看所有分支(包括远程分支)
-
创建分支
git branch <分支名> # 创建新分支(例:git branch feature/new-login)
-
切换分支
git checkout <分支名> # 切换到指定分支(Git 2.23+ 推荐使用 git switch) git switch <分支名> # 新语法:切换分支或创建并切换
-
创建并切换分支
git checkout -b <新分支名> # 等价于 git branch + git checkout git switch -c <新分支名> # 新语法:等价于上述命令
2. 合并分支
-
合并指定分支到当前分支
git merge <待合并分支名> # 例:在 main 分支执行 git merge feature/new-login
-
解决冲突
合并时若文件冲突,需手动修改冲突文件(标记为<<<<<<<
=======
>>>>>>>
),修改后重新git add
和git commit
。
3. 删除分支
git branch -d <分支名> # 删除本地分支(需先切换到其他分支)
git branch -D <分支名> # 强制删除未合并的分支
git push origin --delete <分支名> # 删除远程分支(例:git push origin --delete feature/new-login)
五、历史版本管理
1. 查看提交历史
git log # 查看详细提交记录(含哈希值、作者、日期、提交说明)
git log --oneline # 简洁模式,每行显示一个提交
git reflog # 查看所有分支的操作记录(含回退记录)
2. 回退版本
-
回退到指定版本
git reset --hard <commit哈希值> # 硬回退(丢弃工作区和暂存区修改) git reset --soft <commit哈希值> # 软回退(仅回退本地仓库,保留工作区和暂存区)
-
回退到上一个版本
git reset --hard HEAD^ # HEAD^ 表示上一个版本,HEAD~3 表示前3个版本
六、其他常用操作
1. 忽略文件
-
在项目根目录创建
.gitignore
文件,写入需忽略的文件 / 目录规则:*.log # 忽略所有 .log 文件 node_modules/ # 忽略 node_modules 目录
2. 标签管理(用于版本发布)
git tag v1.0 # 创建轻量级标签 v1.0
git tag -a v1.0 -m "版本说明" # 创建带说明的附注标签
git push origin v1.0 # 推送标签到远程仓库
3. 解决冲突
-
拉取或合并代码时若遇冲突,手动修改冲突文件,标记冲突的部分会显示为:
<<<<<<< HEAD # 本地版本内容 本地代码... ======= 远程版本内容... >>>>>>> origin/main # 远程版本内容
-
修改后保存,执行
git add <文件名>
标记冲突已解决,再提交。
七、团队协作流程示例
-
克隆远程仓库
git clone https://github.com/team/project.git
-
创建功能分支
git switch -c feature/new-function
-
开发并提交本地变更
git add . git commit -m "实现新功能"
-
拉取最新代码并解决冲突
git pull origin main
-
推送分支到远程并创建 PR(Pull Request)
git push -u origin feature/new-function
-
代码 review 后合并到 main 分支
在远程仓库页面操作合并,或本地执行git merge main
后推送到远程。
八、常用快捷键与技巧
git config --global core.editor "code --wait"
:设置默认编辑器为 VS Code。git stash
:临时保存未提交的修改(用于切换分支前保存现场)。git stash apply
:恢复最近一次的 stash 记录。git diff
:查看未暂存的文件修改差异。git remote -v
:查看远程仓库地址及权限。
通过以上操作,可覆盖 Git 的日常使用场景。建议结合实际项目练习,并深入理解分支模型(如 Git Flow)以提升团队协作效率。Git 是一款强大的分布式版本控制系统,常用于软件开发中的代码管理。下面为你总结 Git 的核心操作和使用流程:
一、Git 基本配置
安装 Git 后,需进行用户信息配置:
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"
二、仓库操作
-
创建本地仓库
git init # 在当前目录初始化新仓库
-
克隆远程仓库
git clone [远程仓库URL] # 克隆完整项目到本地
三、文件操作
-
查看文件状态
git status # 查看文件修改状态
-
添加文件到暂存区
git add [文件名] # 添加单个文件
git add . # 添加所有文件 -
提交到本地仓库
git commit -m "提交说明" # 提交暂存区文件到本地仓库
四、分支管理
-
查看分支
git branch # 查看本地分支
git branch -a # 查看所有分支(包括远程) -
创建分支
git branch [分支名] # 创建新分支
-
切换分支
git checkout [分支名] # 切换到已存在的分支
git checkout -b [分支名] # 创建并切换到新分支 -
合并分支
git merge [源分支] # 将源分支合并到当前分支
-
删除分支
git branch -d [分支名] # 删除已合并的分支
git branch -D [分支名] # 强制删除未合并的分支
五、远程仓库操作
-
添加远程仓库
git remote add origin [远程仓库URL] # 添加远程仓库并命名为origin
-
推送代码到远程仓库
git push -u origin [分支名] # 首次推送并关联远程分支
git push # 后续推送 -
拉取远程代码
git pull origin [分支名] # 拉取并合并远程分支
六、版本回退
-
查看提交历史
git log # 查看提交历史
git log --oneline # 简洁模式查看 -
回退到指定版本
git reset --hard [commit ID] # 彻底回退到指定提交
git reset --soft [commit ID] # 保留修改,回退提交
七、解决冲突
当合并分支或拉取代码发生冲突时:
-
手动编辑冲突文件,解决矛盾
-
添加修改后的文件
git add [冲突文件名]
-
提交解决后的文件
git commit -m "解决冲突"
八、标签管理
-
创建标签
git tag [标签名] # 创建轻量标签
git tag -a [标签名] -m "标签说明" # 创建带注释的标签 -
查看标签
git tag # 查看所有标签
-
推送标签到远程
git push origin [标签名] # 推送单个标签
git push origin --tags # 推送所有标签
九、忽略文件
创建.gitignore
文件,指定要忽略的文件或目录:
# 示例 .gitignore 文件
*.log # 忽略所有 .log 文件
node_modules # 忽略 node_modules 目录
dist/ # 忽略 dist 目录
十、撤销操作
-
撤销工作区修改
git checkout -- [文件名] # 丢弃工作区修改
-
撤销暂存区修改
git reset HEAD [文件名] # 将文件从暂存区撤回工作区