0%

Git版本控制入门教程

# 概述

Git是目前世界上最流行的分布式版本控制系统,被广泛应用于软件开发中。它可以帮助开发者追踪代码变化、协作开发、管理项目版本。本文将带你从零开始学习Git。

# 安装Git

首先需要安装Git客户端:

  • Windows:从 git-scm.com 下载安装包
  • macOS:使用Homebrew安装 brew install git
  • Linux:使用包管理器安装 sudo apt install gitsudo yum install git

安装完成后,打开终端验证:

git --version
# git version 2.45.0

# 配置Git

第一次使用Git需要配置用户名和邮箱:

# 配置用户名
git config --global user.name "你的用户名"

# 配置邮箱
git config --global user.email "你的邮箱"

# 查看配置
git config --list

# 配置默认编辑器
git config --global core.editor "vim"

# 基本概念

在开始使用Git之前,需要了解几个核心概念:

  • 仓库(Repository):存储项目文件和版本信息的地方
  • 工作区(Working Directory):当前正在编辑的文件目录
  • 暂存区(Staging Area):临时存储即将提交的修改
  • 提交(Commit):将暂存区的修改保存到仓库
  • 分支(Branch):独立的开发线,可以并行开发不同功能
  • 合并(Merge):将一个分支的修改合并到另一个分支

# 创建和初始化仓库

# 初始化新仓库

# 创建项目目录
mkdir myproject
cd myproject

# 初始化Git仓库
git init

# 查看仓库状态
git status

# 克隆远程仓库

# 克隆仓库(HTTPS方式)
git clone https://github.com/username/repository.git

# 克隆仓库(SSH方式)
git clone git@github.com:username/repository.git

# 克隆到指定目录
git clone https://github.com/username/repository.git myfolder

# 基本操作

# 查看状态

# 查看当前状态
git status

# 查看简洁状态
git status -s

# 添加文件到暂存区

# 添加单个文件
git add filename.py

# 添加多个文件
git add file1.py file2.py

# 添加所有文件
git add .

# 添加特定类型文件
git add *.py

# 添加某个目录
git add src/

# 交互式添加
git add -i

# 提交更改

# 提交暂存区的更改
git commit -m "提交说明"

# 提交时添加详细说明
git commit

# 修改最后一次提交
git commit --amend

# 跳过暂存区直接提交
git commit -a -m "提交说明"

# 查看提交历史

# 查看提交历史
git log

# 简洁查看
git log --oneline

# 查看最近N次提交
git log -n 5

# 查看提交详情
git log -p

# 查看图形化日志
git log --graph --oneline --all

# 查看某个文件的提交历史
git log -- filename.py

# 撤销操作

# 撤销工作区的修改
git checkout -- filename.py

# 撤销暂存区的修改
git reset HEAD filename.py

# 回退到某个提交
git reset --hard commit_id

# 撤销某个提交(创建新提交)
git revert commit_id

# 删除未跟踪的文件
git clean -f

# 删除未跟踪的目录
git clean -fd

# 分支管理

# 创建和切换分支

# 查看所有分支
git branch -a

# 创建分支
git branch feature/login

# 创建并切换分支
git checkout -b feature/login

# 切换分支
git checkout main

# 删除分支
git branch -d feature/login

# 强制删除分支
git branch -D feature/login

# 合并分支

# 切换到目标分支
git checkout main

# 合并feature分支到main
git merge feature/login

# 解决冲突后继续合并
git add .
git commit

# 查看合并情况
git log --graph --oneline

# 变基操作

# 在feature分支上执行变基
git checkout feature/login
git rebase main

# 解决变基冲突
git add .
git rebase --continue

# 中止变基
git rebase --abort

# 跳过当前冲突
git rebase --skip

# 远程仓库操作

# 管理远程仓库

# 查看远程仓库
git remote -v

# 添加远程仓库
git remote add origin https://github.com/username/repository.git

# 修改远程仓库URL
git remote set-url origin https://github.com/username/repository.git

# 删除远程仓库
git remote remove origin

# 重命名远程仓库
git remote rename origin upstream

# 推送和拉取

# 推送本地分支到远程
git push origin main

# 推送所有分支
git push --all

# 推送标签
git push --tags

# 拉取远程更新
git pull origin main

# 仅拉取不合并
git fetch origin

# 跟踪远程分支
git branch --set-upstream-to=origin/main main

# 同步远程仓库

# 从上游仓库拉取更新
git fetch upstream

# 合并上游更新到本地
git checkout main
git merge upstream/main

# 标签管理

# 查看所有标签
git tag

# 创建轻量标签
git tag v1.0.0

# 创建附注标签
git tag -a v1.0.0 -m "版本1.0.0"

# 创建带签名的标签
git tag -s v1.0.0 -m "版本1.0.0"

# 查看标签信息
git show v1.0.0

# 推送标签到远程
git push origin v1.0.0

# 推送所有标签
git push --tags

# 删除标签
git tag -d v1.0.0

# 删除远程标签
git push origin :v1.0.0

# Git工作流

# Git Flow工作流

Git Flow是一种流行的分支管理策略:

  • main:主分支,存储稳定版本
  • develop:开发分支,整合所有功能
  • feature/*:功能分支,开发新功能
  • release/*:发布分支,准备发布
  • hotfix/*:修复分支,紧急修复bug

# GitHub Flow工作流

GitHub Flow更简洁:

  1. 从main分支创建新分支
  2. 在分支上开发功能
  3. 提交并推送到远程
  4. 创建Pull Request
  5. 代码审查
  6. 合并到main分支

# 团队协作

# 协作流程

# 1. 克隆仓库
git clone https://github.com/team/repo.git

# 2. 创建功能分支
git checkout -b feature/new-feature

# 3. 开发功能并提交
git add .
git commit -m "实现新功能"

# 4. 推送分支到远程
git push origin feature/new-feature

# 5. 创建Pull Request

# 6. 在合并前更新本地分支
git fetch origin
git checkout main
git pull origin main
git checkout feature/new-feature
git merge main

# 7. 解决冲突后推送
git push origin feature/new-feature

# 代码审查

代码审查是团队协作的重要环节:

  • 检查代码质量和风格
  • 确保代码符合项目规范
  • 发现潜在的bug和安全问题
  • 分享知识和最佳实践

# 高级技巧

# 忽略文件

创建 .gitignore 文件:

# 忽略所有.pyc文件
*.pyc

# 忽略__pycache__目录
__pycache__/

# 忽略虚拟环境
venv/
.env

# 忽略日志文件
*.log

# 忽略IDE配置
.vscode/
.idea/

# 忽略操作系统文件
.DS_Store
Thumbs.db

# 查看差异

# 查看工作区和暂存区的差异
git diff

# 查看暂存区和仓库的差异
git diff --cached

# 查看两个提交之间的差异
git diff commit1 commit2

# 查看某个文件的差异
git diff filename.py

# 使用图形化工具查看差异
git difftool

# 储藏更改

# 储藏工作区的更改
git stash

# 查看储藏列表
git stash list

# 恢复最近一次储藏
git stash pop

# 应用指定的储藏
git stash apply stash@{0}

# 删除储藏
git stash drop stash@{0}

# 清空所有储藏
git stash clear

# 查看储藏内容
git stash show stash@{0}

# 查看提交详情

# 查看某个提交的详细信息
git show commit_id

# 查看提交的更改
git show commit_id --stat

# 查看提交的完整差异
git show commit_id -p

# 查看谁修改了某行代码
git blame filename.py

# 查看某个提交的作者和时间
git log -1 --format="%an %ae %ad" commit_id

# 实战案例

让我们通过一个完整的实战案例来巩固所学知识:

# 1. 创建新项目
mkdir myblog
cd myblog
git init

# 2. 创建初始文件
echo "# My Blog" > README.md
git add .
git commit -m "初始化项目"

# 3. 创建功能分支
git checkout -b feature/about-page

# 4. 开发功能
echo "关于页面" > about.md
git add .
git commit -m "添加关于页面"

# 5. 切换回主分支
git checkout main

# 6. 创建另一个功能分支
git checkout -b feature/contact-page

# 7. 开发功能
echo "联系页面" > contact.md
git add .
git commit -m "添加联系页面"

# 8. 合并分支
git checkout main
git merge feature/about-page
git merge feature/contact-page

# 9. 删除已合并的分支
git branch -d feature/about-page
git branch -d feature/contact-page

# 10. 推送到远程仓库
git remote add origin https://github.com/username/myblog.git
git push -u origin main

# 总结

本文介绍了Git的核心概念和常用操作:

  • 基本操作:初始化、添加、提交、查看状态和历史
  • 分支管理:创建、切换、合并、变基
  • 远程仓库:克隆、推送、拉取、同步
  • 团队协作:工作流、代码审查
  • 高级技巧:标签、储藏、忽略文件

掌握Git是每个开发者必备的技能。多练习、多使用,你会越来越熟练!