当前位置: 首页 > news >正文

Git 完全指南:入门篇

目录

  1. Git 简介
  2. 安装与配置
  3. 基础概念
  4. 常用命令详解
  5. 分支管理
  6. 远程仓库
  7. 高级技巧
  8. 工作流程
  9. 最佳实践

Git 简介

什么是 Git?

Git 是一个分布式版本控制系统,由 Linus Torvalds 于 2005 年创建。它能够:

  • 跟踪文件变化
  • 协调多人协作开发
  • 恢复历史版本
  • 管理代码分支

为什么使用 Git?

  • 分布式:每个开发者都有完整的代码仓库副本
  • 高效:大部分操作在本地完成
  • 强大的分支系统:轻松创建、合并分支
  • 完整性:使用 SHA-1 哈希保证数据完整性

安装与配置

安装 Git

Windows

# 下载 Git for Windows
https://gitforwindows.org/

macOS

# 使用 Homebrew
brew install git# 或使用 Xcode Command Line Tools
xcode-select --install

Linux

# Ubuntu/Debian
sudo apt-get update
sudo apt-get install git# CentOS/RHEL
sudo yum install git

基础配置

# 设置用户信息
git config --global user.name "你的姓名"
git config --global user.email "你的邮箱@example.com"# 设置默认编辑器
git config --global core.editor "code --wait"  # VS Code
git config --global core.editor "vim"          # Vim# 查看配置
git config --list# 设置行尾符(Windows用户重要)
git config --global core.autocrlf true
# Linux/macOS
git config --global core.autocrlf input

基础概念

三个工作区域

  1. 工作目录:实际操作文件的目录
  2. 暂存区:准备提交的文件临时存储区
  3. Git 仓库:最终存储项目历史和元数据的地方

文件状态生命周期

未跟踪 → 已跟踪 → 已修改 → 已暂存 → 已提交↑        ↓        ↑        ↓git add   ←     git add     →git commit

常用命令详解

仓库初始化

# 初始化新仓库
git init# 克隆现有仓库
git clone https://github.com/username/repository.git
git clone https://github.com/username/repository.git my-project  # 自定义目录名

基础工作流

# 检查状态
git status
git status -s  # 简洁输出# 添加文件到暂存区
git add filename.txt          # 添加特定文件
git add .                     # 添加所有文件
git add *.js                  # 添加所有js文件
git add src/                  # 添加src目录# 提交更改
git commit -m "提交信息"
git commit -m "功能: 添加用户登录功能"  # 好的提交信息格式# 查看提交历史
git log
git log --oneline            # 简洁显示
git log --graph              # 图形化显示分支
git log -p                   # 显示具体更改
git log --since="2023-01-01" # 按时间筛选

文件操作

# 查看文件差异
git diff                     # 工作区与暂存区的差异
git diff --staged           # 暂存区与最新提交的差异
git diff HEAD              # 工作区与最新提交的差异# 移动/重命名文件
git mv oldname.txt newname.txt# 删除文件
git rm filename.txt
git rm --cached filename.txt  # 从git中删除,但保留本地文件# 恢复文件
git checkout -- filename.txt  # 丢弃工作区的修改
git restore filename.txt     # Git 2.23+ 新命令

分支管理

分支基础操作

# 查看分支
git branch                  # 本地分支
git branch -a               # 所有分支(包括远程)
git branch -v               # 显示最后提交信息# 创建分支
git branch feature-branch   # 创建分支
git checkout -b feature-branch  # 创建并切换到新分支# 切换分支
git checkout main
git switch feature-branch   # Git 2.23+ 新命令# 合并分支
git checkout main
git merge feature-branch# 删除分支
git branch -d feature-branch    # 安全删除(已合并)
git branch -D feature-branch    # 强制删除(未合并)

分支合并策略

# 快进合并(默认)
git merge feature-branch# 禁用快进,创建合并提交
git merge --no-ff feature-branch# 变基(重写提交历史)
git checkout feature-branch
git rebase main# 交互式变基
git rebase -i HEAD~3  # 重新整理最近3个提交

解决冲突

当合并或变基出现冲突时:

  1. 编辑冲突文件(Git会标记冲突位置)
  2. 选择要保留的代码
  3. 删除冲突标记(<<<<<<<, =======, >>>>>>>)
  4. 添加解决后的文件
  5. 完成合并
# 冲突解决后
git add resolved-file.txt
git commit  # 或 git rebase --continue

远程仓库

远程仓库操作

# 查看远程仓库
git remote -v# 添加远程仓库
git remote add origin https://github.com/username/repo.git# 重命名远程仓库
git remote rename origin upstream# 删除远程仓库
git remote remove origin# 获取远程更新
git fetch origin            # 下载但不合并
git fetch --prune          # 清理已删除的远程分支# 拉取更新
git pull origin main       # 相当于 git fetch + git merge
git pull --rebase origin main  # 使用rebase方式# 推送更改
git push origin main
git push -u origin feature-branch  # 设置上游分支

标签管理

# 创建标签
git tag v1.0.0                    # 轻量标签
git tag -a v1.0.0 -m "版本1.0.0"  # 附注标签# 查看标签
git tag
git show v1.0.0# 推送标签
git push origin v1.0.0
git push origin --tags           # 推送所有标签# 删除标签
git tag -d v1.0.0
git push origin --delete v1.0.0

高级技巧

撤销操作

# 撤销工作区修改
git checkout -- filename.txt
git restore filename.txt# 撤销暂存区文件
git reset HEAD filename.txt
git restore --staged filename.txt# 修改最后一次提交
git commit --amend# 回退到特定提交
git reset --soft HEAD~1    # 保留更改到暂存区
git reset --mixed HEAD~1   # 保留更改到工作区(默认)
git reset --hard HEAD~1    # 丢弃所有更改# 恢复被删除的分支
git reflog
git checkout -b recovered-branch <commit-hash>

储藏更改

# 储藏当前工作
git stash
git stash push -m "储藏信息"# 查看储藏列表
git stash list# 恢复储藏
git stash apply          # 恢复但不删除
git stash apply stash@{1} # 恢复特定储藏
git stash pop           # 恢复并删除# 删除储藏
git stash drop stash@{0}
git stash clear         # 删除所有储藏

子模块

# 添加子模块
git submodule add https://github.com/username/repo.git path/to/submodule# 克隆包含子模块的仓库
git clone --recurse-submodules https://github.com/username/main-repo.git# 更新子模块
git submodule update --init --recursive

工作流程

功能分支工作流

# 1. 从main创建功能分支
git checkout -b feature/user-authentication# 2. 开发功能并提交
git add .
git commit -m "添加用户登录功能"# 3. 同步主分支更新
git checkout main
git pull origin main
git checkout feature/user-authentication
git rebase main# 4. 推送功能分支
git push -u origin feature/user-authentication# 5. 创建Pull Request合并到main

Git Flow 工作流

# 初始化git flow
git flow init# 开始新功能
git flow feature start MYFEATURE# 完成功能
git flow feature finish MYFEATURE# 开始发布
git flow release start 1.2.0# 完成发布
git flow release finish 1.2.0

最佳实践

提交信息规范

使用约定式提交:

<类型>[可选的作用域]: <描述>[可选的正文][可选的脚注]

常见类型:

  • feat: 新功能
  • fix: 修复bug
  • docs: 文档更新
  • style: 代码格式调整
  • refactor: 重构
  • test: 测试相关
  • chore: 构建过程或辅助工具变动

示例:

feat(auth): 添加JWT身份验证- 实现用户登录接口
- 添加token刷新机制
- 更新API文档Closes #123

.gitignore 文件

创建合适的 .gitignore 文件:

# 依赖目录
node_modules/
vendor/# 构建输出
dist/
build/
*.jar
*.war# 环境变量文件
.env
.env.local# 日志文件
*.log
logs/# 系统文件
.DS_Store
Thumbs.db# IDE文件
.vscode/
.idea/
*.swp
*.swo

分支命名规范

  • main/master: 主分支
  • develop: 开发分支
  • feature/user-login: 功能分支
  • release/v1.2.0: 发布分支
  • hotfix/critical-bug: 热修复分支

实用技巧和工具

Git 别名

# 添加到 ~/.gitconfig
[alias]co = checkoutci = commitst = statusbr = branchlast = log -1 HEADlg = log --oneline --graph --allundo = reset --soft HEAD~1

调试工具

# 二分查找引入bug的提交
git bisect start
git bisect bad                 # 当前版本有问题
git bisect good v1.0.0        # 这个版本没问题
# Git会自动在中间提交测试,你标记good或bad
git bisect reset              # 结束# 查找引入某行的提交
git blame filename.txt

大文件处理

# 使用 Git LFS (Large File Storage)
git lfs install
git lfs track "*.psd"
git lfs track "*.mp4"
git add .gitattributes

总结

Git 是一个强大而灵活的工具,掌握它需要时间和实践。建议:

  1. 从小开始:先熟练掌握基础命令
  2. 理解概念:明白工作区、暂存区、仓库的关系
  3. 勤于练习:在实际项目中应用所学知识
  4. 阅读文档git help <command> 查看详细帮助
  5. 使用图形工具:如 GitKraken、SourceTree 辅助理解

记住,Git 的核心价值在于:

  • 版本控制和安全
  • 团队协作效率
  • 代码历史可追溯性
  • 灵活的开发和发布流程
http://www.dtcms.com/a/541183.html

相关文章:

  • 上海牛巨微seo关键词优化怎么做网站的seo优化
  • 温州网站制作软件凌晨三点看的片免费
  • 【Java +AI |基础篇day4 数组】
  • 麒麟系统使用-在Sublime中达到滚屏效果
  • 泰州网站关键词优化软件咨询新网站友链
  • 行政还要负责网站建设新媒体吗7000元买一个域名做网站
  • 前端常用的环境 API 清单
  • CreArt 2.5.6| 无限AI图片生成,需要注意的是点创建之后切出去几秒再切回来
  • 现金流量表不平排查方法
  • 深入理解 HTTP Cookie 与 Session:会话管理的核心机制
  • 【Windows】CoInitializeEx 和 CoUninitialize() 必须在同一个线程中调用吗?
  • 网站建设职责要求saas建站平台
  • 优秀国外网站设计赏析郑州企业网站优化哪家便宜
  • 机器学习、深度学习、信号处理领域常用公式速查表
  • 各类服装网站建设软件正版化情况及网站建设情况
  • 服务器端护照识别技术:通过图像预处理、OCR字符识别和智能分析实现高效身份核验
  • 武胜网站建设敬请期待海报
  • 基于Vue的高校教师文件管理系统7h274l7n(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • Surface-Book-3 i7-1065G7-i5-1035G7 黑苹果 EFI
  • 北京汽车业务网站开发公司建设银行网站网址是什么
  • 多组分精准监测标杆:NHVOC-70 型系列挥发性有机物 (TVOC) 在线监测系统技术解析与场景落地
  • 动态人脸识别技术解析
  • 为迎战双十一,南凌科技发布「大促网络保障解决方案」,以确定性网络抵御不确定流量洪峰
  • 动作捕捉设备应用场景全解析:涵盖机器人开发与数字人交互的多元实践
  • SQL调优专题笔记:打造你的数据库性能优化思维体系
  • AtCoder真题及详细题解 ABC425B: Find Permutation 2
  • 电子机箱网站建设报告上海百度做网站
  • web渗透知识总结
  • 盲盒小程序系统开发:助力品牌拓展新市场
  • Llama-2-7b 昇腾部署:六大场景性能基准核心指标拆解