Git 基础操作指南
前情提要:Git代码不会识别#为注释,所以再实验的时候请把#部分的注释给去掉
一、Git 是什么
1.1 Git 的诞生与概念
Git 是一个分布式版本控制系统 (Distributed Version Control System, DVCS),由 Linux 之父 Linus Torvalds 在 2005 年开发,最初是为了管理 Linux 内核代码。与传统集中式版本控制系统 (如 SVN) 不同,Git 采用分布式架构,每个开发者本地都有完整仓库副本,这带来了三大革命性优势:离线工作、强大的分支管理能力和极快的操作速度。
Git 的核心功能是记录文件的变更历史,让开发者能够方便地进行版本管理、团队协作和代码回溯。通过 Git,你可以:
- 跟踪代码的每一次修改
- 创建并行开发分支
- 轻松回滚到任何历史版本
- 与团队成员高效协作
- 管理项目的完整历史记录
1.2 Git 的基本概念
在深入学习 Git 操作前,需要先理解几个核心概念:
概念 | 解释 |
---|---|
仓库 (Repository) | 包含所有代码和版本历史的目录,即项目的完整备份 |
工作区 (Working Directory) | 当前正在编辑的文件所在的目录 |
暂存区 (Stage/Index) | 临时存放更改的区域,准备提交 |
提交 (Commit) | 记录代码的一次变化,形成版本历史 |
分支 (Branch) | 代码的一个独立版本,允许并行开发 |
合并 (Merge) | 将一个分支的更改合并到另一个分支 |
克隆 (Clone) | 从远程仓库复制代码到本地 |
拉取 (Pull) | 从远程仓库获取最新更改 |
推送 (Push) | 将本地更改推送到远程仓库 |
这些概念构成了 Git 操作的基础,理解它们将帮助你更高效地使用 Git。
1.3 Git 与 GitHub/GitLab/Gitee 的关系
虽然 Git 和 GitHub 常被一起提及,但它们是不同的概念:
- Git是一个开源的版本控制系统,是一个工具
- GitHub是一个基于 Git 的代码托管平台,提供 Web 界面和额外服务
- GitLab和 Gitee (码云) 是类似 GitHub 的代码托管平台,提供不同的功能和服务
Git 可以独立于这些平台使用,但结合这些平台可以更方便地进行团队协作、代码审查和项目管理。
二、Git 安装与配置
2.1 Windows 系统安装 Git
在 Windows 系统上安装 Git 非常简单,只需按照以下步骤操作:
下载安装包:访问 Git 官方网站 下载最新版本的 Git 安装程序。
验证安装:安装完成后,打开 Git Bash,输入以下命令检查是否安装成功:
git --version
如果显示版本号 ,则说明安装成功。
2.2 初次配置 Git
安装完成后,需要进行一些基本配置:
- 设置全局用户名和邮箱:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
这一步非常重要,因为每次提交代码时都会使用这些信息来标识作者身份。
- 检查配置:
git config --list
确认输出中包含 user.name 和 user.email 的配置。
- 设置默认文本编辑器(可选):
git config --global core.editor "code --wait" # 使用VS Code作为编辑器
- 设置差异比较工具(可选):
git config --global diff.tool vscode
git config --global difftool.vscode.cmd "code --wait --diff $LOCAL $REMOTE"
- 设置自动换行处理(Windows 用户建议设置):
git config --global core.autocrlf true
2.3 SSH 密钥配置(可选但推荐)
如果你计划使用 SSH 协议连接远程仓库(如 GitHub、GitLab 等),需要配置 SSH 密钥:
- 生成 SSH 密钥:
ssh-keygen -t rsa -C "你的邮箱"
连续按三次回车键使用默认设置。
- 查看公钥:
cat ~/.ssh/id_rsa.pub
- 复制输出的公钥内容。
- 添加公钥到远程平台:
将复制的公钥添加到 GitHub、GitLab 或 Gitee 等平台的 SSH 密钥设置中。
三、开始使用 Git
3.1 本地仓库操作
3.1.1 创建新仓库
在现有项目目录中初始化一个新的 Git 仓库:
cd /path/to/your/project # 进入项目目录
git init # 初始化Git仓库
这会在项目目录中创建一个名为.git的隐藏文件夹,包含了所有 Git 相关的数据——在我的创建过程中,第一次输入git init只是显示了具体参数的用法,遇到这种情况大家再输入一次git init就好
3.1.2 克隆远程仓库
如果你需要从远程仓库开始,可以使用git clone命令:
git clone https://github.com/user/repository.git # 克隆远程仓库到当前目录
git clone https://github.com/user/repository.git my-local-repo # 克隆到指定目录
3.2 基本工作流程
Git 的基本工作流程包括三个主要步骤:
- 修改文件:在工作区中进行代码修改
- 暂存更改:将需要提交的更改添加到暂存区
- 提交更改:将暂存区中的更改保存到仓库中
3.2.1 查看文件状态
在进行任何操作前,了解文件的当前状态非常重要:
git status # 查看当前工作区的状态
git status -s # 以简洁模式查看状态
3.2.2 添加文件到暂存区
将文件从工作区添加到暂存区:
git add filename # 添加指定文件到暂存区
git add . # 添加当前目录下的所有文件(包括子目录)到暂存区
git add *.py # 添加当前目录下的所有.py文件到暂存区
3.2.3 提交更改
将暂存区中的更改提交到本地仓库:
git commit -m "提交信息" # 提交暂存区的更改,并添加描述信息
提交信息规范:良好的提交信息有助于理解代码变更,建议遵循以下格式:
<类型>(<范围>): <描述>
例如
feat(login): 添加用户登录功能
fix(profile): 修复个人资料显示问题
docs: 更新README文档
3.2.4 查看提交历史
查看项目的提交历史记录:
git log # 查看所有提交历史
git log --oneline # 查看简洁的提交历史
git log -n 5 # 查看最近5次提交
git log --graph # 查看分支合并图
3.3 远程仓库操作
3.3.1 初始化本地仓库
- 打开终端(Windows 可使用 PowerShell 或命令提示符,Mac/Linux 使用终端)
- 进入你的项目文件夹:
cd C:\Users\chanpi\Desktop\Backtesting
- 初始化 Git 仓库:
git init
3.3.2 关联远程 GitHub 仓库
- 将本地仓库与你的 GitHub 仓库关联:
git remote add origin https://github.com/JaneSmith540/BT.git
注:如果之前已关联过其他远程仓库,可先删除旧关联:
git remote remove origin
3.3.3 添加文件并提交
- 将项目中所有文件添加到暂存区:
git add .
(.表示添加当前目录下所有文件,若有不需要上传的文件,可创建.gitignore文件排除)
- 提交暂存区文件到本地仓库,填写提交说明(替换"初始提交"为具体描述):
git commit -m "初始提交"
3.3.4 推送到 GitHub 仓库
将本地提交推送到远程 GitHub 仓库:
git push -u origin master
3.4 分支管理
分支是 Git 的强大功能之一,它允许你在不影响主代码的情况下进行实验性开发:
3.4.1 分支查看
cd到当前目录后,可以使用相应的语句来查看分支
git branch
3.4.2 创建和切换分支
git branch new-branch # 创建新分支
git checkout new-branch # 切换到新分支
git checkout -b new-branch # 创建并切换到新分支(常用)
3.4.3 合并分支
将一个分支的更改合并到当前分支:
git checkout main # 切换到目标分支(例如main)
git merge feature-branch # 合并feature-branch到当前分支
3.5 撤销操作
3.5.1 撤销工作区修改
git checkout -- filename # 撤销未暂存的修改
3.5.2 撤销暂存区修改
git reset HEAD filename # 撤销已暂存但未提交的修改
3.5.3 回退到历史版本
git log # 找到目标版本的commit哈希值
git reset --hard commit-hash # 回退到指定版本
3.5.4 删除创建分支
# 安全删除新分支
git branch -d new-branch
注意:git reset --hard会丢弃所有后续更改,使用时需谨慎。
四、进阶技巧
4.1 忽略文件
创建.gitignore文件来指定 Git 应忽略的文件和目录:
# 忽略所有.log文件
*.log# 忽略node_modules目录
node_modules/# 忽略.DS_Store文件(Mac系统)
.DS_Store# 忽略.idea目录(IntelliJ IDEA)
.idea/# 但保留特定文件
!important.txt
将.gitignore文件添加到版本控制中,确保团队成员使用一致的忽略规则。
4.2 标签管理
标签用于为仓库中的特定提交打标签,通常用于标记版本发布点:
git tag v1.0 # 创建一个轻量标签
git tag -a v1.0 -m "版本1.0发布" # 创建一个附注标签
git push origin v1.0 # 推送标签到远程仓库
4.3 暂存功能
在开发过程中,你可能需要临时切换分支,但又不想提交当前的更改。这时可以使用git stash:
git stash # 暂存当前工作区的更改
git stash list # 查看所有暂存
git stash apply # 恢复最新的暂存
git stash pop # 恢复并删除暂存记录