Git 学习笔记
Git 学习笔记
一、版本控制系统简介
-
定义
:版本控制系统用于跟踪和管理文件的修改历史,特别适合团队协作开发和代码管理。主要包括以下类型:
- 本地版本控制:仅在单机环境记录文件的历史。
- 集中式版本控制:如SVN,所有历史记录存储在中央服务器上。
- 分布式版本控制:如Git,每个用户都有完整的代码仓库副本,支持离线操作。
-
Git 的特点:速度快、分布式、支持分支操作、方便代码合并。
二、安装与基本配置
- 安装 Git
- 从 Git 官网 下载并安装适合的版本。
- 安装完成后,在终端执行
git --version确认安装成功。
- 基本配置
- 配置用户名:
git config --global user.name "Your Name" - 配置邮箱:
git config --global user.email "your_email@example.com" - 查看配置:
git config --list
- 配置用户名:
三、仓库初始化与管理
- 初始化本地仓库
- 进入项目目录,执行
git init。 - 初始化后,会生成一个
.git目录,用于存储版本控制信息。
- 进入项目目录,执行
- 克隆远程仓库
- 使用
git clone [repository_url]将远程仓库完整复制到本地。 - 包含所有历史记录和分支信息。
- 使用
四、文件跟踪与提交
- 查看状态
- 使用
git status查看当前文件的状态,了解哪些文件被修改或未被跟踪。
- 使用
- 添加文件到暂存区
- 单个文件:
git add [file] - 当前目录所有文件:
git add .
- 单个文件:
- 提交到本地仓库
git commit -m "commit message"提交暂存区的更改到仓库。
- 查看提交历史
- 简单查看:
git log - 单行显示:
git log --oneline
- 简单查看:
五、分支与合并
- 分支操作
- 创建新分支:
git branch [branch-name] - 切换分支:
git checkout [branch-name] - 创建并切换:
git checkout -b [branch-name]
- 创建新分支:
- 合并分支
- 在目标分支执行
git merge [branch-name]将指定分支合并。 - 合并冲突需手动解决,解决后执行
git add .并提交。
- 在目标分支执行
- 删除分支
- 已合并分支:
git branch -d [branch-name] - 强制删除:
git branch -D [branch-name]
- 已合并分支:
六、远程仓库操作
- 关联远程仓库
git remote add origin [url]将本地仓库与远程仓库关联。
- 推送更改
- 首次推送:
git push -u origin [branch-name] - 之后推送:
git push
- 首次推送:
- 拉取更新
git pull从远程仓库获取最新版本并尝试合并到当前分支。
七、标签管理
- 创建标签
- 简单标签:
git tag [tag-name] - 带说明标签:
git tag -a [tag-name] -m "message"
- 简单标签:
- 查看标签
- 列出标签:
git tag
- 列出标签:
- 推送标签
- 单个标签:
git push origin [tag-name] - 所有标签:
git push origin --tags
- 单个标签:
八、撤销与恢复
- 撤销修改
- 丢弃工作区更改:
git checkout -- [file] - 清除整个工作区更改:
git checkout -- .
- 丢弃工作区更改:
- 撤销暂存
- 将暂存区更改退回工作区:
git reset HEAD [file]
- 将暂存区更改退回工作区:
- 回退版本
- 强制回退:
git reset --hard [commit-id],丢失后续提交。
- 强制回退:
九、查看差异
- 文件差异
- 工作区与暂存区:
git diff - 暂存区与仓库:
git diff --cached - 工作区与仓库:
git diff HEAD
- 工作区与暂存区:
- 分支差异
git diff [branch1] [branch2]
十、实用技巧
- 暂存部分修改
git add -p交互式选择部分修改。
- 忽略文件
- 创建
.gitignore文件,添加不需要跟踪的文件或目录。 - 检查生效:
git status中显示忽略文件状态。
- 创建
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 你好!我是 Duziks (◍•ᴗ•◍)ノ♡!





