字体预加载
Home
avatar

翻过墙

翻过墙

Git-版本控制系统

Git 是一个分布式版本控制系统,由Linux之父Linus Torvalds开发。它能够高效地处理从小型到超大型项目的所有内容,是现代软件开发中不可或缺的工具,几乎所有开源项目都使用Git进行版本管理。

主要特性

🔄 分布式版本控制

  • 本地仓库: 每个开发者都有完整的代码历史
  • 离线工作: 无需网络连接即可提交代码
  • 分支管理: 强大的分支和合并功能
  • 冲突解决: 智能的冲突检测和解决机制

🚀 高效性能

  • 快速操作: 大部分操作在本地完成,速度极快
  • 数据完整性: SHA-1哈希确保数据完整性
  • 压缩存储: 高效的数据压缩算法
  • 增量传输: 只传输变更的部分

🔧 灵活工作流

  • 多种工作流: 支持集中式、功能分支、Gitflow等
  • 临时存储: stash功能保存临时修改
  • 标签管理: 支持轻量标签和附注标签
  • 子模块: 支持项目依赖管理

🌐 协作功能

  • 远程仓库: 支持多种远程仓库服务
  • Pull Request: 代码审查和讨论
  • 权限管理: 细粒度的访问控制
  • Web界面: GitHub、GitLab等提供友好界面

项目地址

Git - 官网 Git - Github

核心概念

1. 仓库 (Repository)

Git仓库包含项目的所有文件和版本历史:

# 初始化新仓库
git init

# 克隆远程仓库
git clone https://github.com/username/repository.git

# 查看仓库状态
git status

2. 提交 (Commit)

每次提交都保存了项目的一个快照:

# 添加文件到暂存区
git add filename.txt

# 提交更改
git commit -m "Add new feature"

# 查看提交历史
git log --oneline

3. 分支 (Branch)

分支允许在不影响主代码的情况下开发新功能:

# 创建新分支
git branch feature-branch

# 切换分支
git checkout feature-branch

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

# 合并分支
git merge feature-branch

实用命令

基础操作

# 配置用户信息
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

# 查看配置
git config --list

# 查看帮助
git help command

文件操作

# 添加文件
git add .                    # 添加所有文件
git add filename.txt         # 添加特定文件
git add *.js                 # 添加所有JS文件

# 移除文件
git rm filename.txt          # 删除文件
git rm --cached filename.txt # 从暂存区移除

# 重命名文件
git mv oldname.txt newname.txt

提交管理

# 提交更改
git commit -m "Commit message"

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

# 查看提交历史
git log
git log --oneline
git log --graph --oneline --all

分支操作

# 分支管理
git branch                  # 列出分支
git branch -d branch-name   # 删除分支
git branch -r               # 列出远程分支

# 合并操作
git merge branch-name       # 合并分支
git rebase branch-name      # 变基操作

远程仓库

# 远程仓库操作
git remote add origin https://github.com/username/repo.git
git push origin main
git pull origin main
git fetch origin

# 查看远程信息
git remote -v

高级功能

1. Stash 临时存储

# 保存临时修改
git stash
git stash push -m "WIP: working on feature"

# 查看stash列表
git stash list

# 应用stash
git stash pop
git stash apply stash@{0}

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

2. 标签管理

# 创建标签
git tag v1.0.0
git tag -a v1.0.0 -m "Release version 1.0.0"

# 查看标签
git tag
git show v1.0.0

# 推送标签
git push origin v1.0.0
git push origin --tags

3. 子模块

# 添加子模块
git submodule add https://github.com/username/lib.git

# 初始化子模块
git submodule init
git submodule update

# 克隆包含子模块的仓库
git clone --recursive https://github.com/username/repo.git

工作流

1. 功能分支工作流

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

# 开发功能
git add .
git commit -m "Implement new feature"

# 推送到远程
git push origin feature/new-feature

# 创建Pull Request
# 在GitHub/GitLab上创建PR

# 合并后删除分支
git branch -d feature/new-feature

2. Gitflow工作流

# 主分支结构
main (master)     # 生产环境代码
develop           # 开发环境代码
feature/*         # 功能分支
release/*         # 发布分支
hotfix/*          # 热修复分支

3. 提交规范

# 提交信息格式
feat: add new feature
fix: fix bug in login
docs: update README
style: format code
refactor: refactor user service
test: add unit tests
chore: update dependencies

配置和别名

1. 全局配置

# 设置默认编辑器
git config --global core.editor "code --wait"

# 设置默认分支名
git config --global init.defaultBranch main

# 设置换行符处理
git config --global core.autocrlf input  # Linux/Mac
git config --global core.autocrlf true   # Windows

2. 别名配置

# 设置常用别名
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.unstage 'reset HEAD --'
git config --global alias.last 'log -1 HEAD'

3. .gitignore文件

# 忽略文件示例
node_modules/
*.log
.env
.DS_Store
build/
dist/
*.tmp

常见问题解决

1. 撤销操作

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

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

# 撤销提交
git reset --soft HEAD~1    # 保留修改
git reset --hard HEAD~1    # 删除修改

2. 冲突解决

# 查看冲突文件
git status

# 手动解决冲突后
git add resolved-file.txt
git commit -m "Resolve merge conflict"

3. 找回丢失的提交

# 查看操作历史
git reflog

# 恢复提交
git reset --hard HEAD@{1}

最佳实践

1. 提交规范

  • 使用清晰的提交信息
  • 每次提交只做一件事
  • 经常提交,避免大块提交
  • 使用规范的提交前缀

2. 分支管理

  • 保持主分支稳定
  • 使用描述性的分支名
  • 及时删除已合并的分支
  • 定期同步远程分支

3. 协作规范

  • 使用Pull Request进行代码审查
  • 编写清晰的PR描述
  • 及时响应审查意见
  • 保持代码库整洁

常见问题

Q: 如何撤销最后一次提交?

A: 使用 git reset --soft HEAD~1 保留修改,或 git reset --hard HEAD~1 删除修改。

Q: 如何查看文件的修改历史?

A: 使用 git log -p filename.txt 查看文件的详细修改历史。

Q: 如何合并多个提交?

A: 使用 git rebase -i HEAD~n 进行交互式变基。

Q: 如何解决合并冲突?

A: 手动编辑冲突文件,然后使用 git addgit commit 完成合并。

总结

Git 是一个功能强大的版本控制系统,具有以下优势:

  • 完全免费开源
  • 分布式架构
  • 高效性能
  • 强大的分支管理
  • 丰富的生态系统
  • 广泛的应用支持

Git 已经成为现代软件开发的标配工具,掌握Git对于任何开发者来说都是必不可少的技能。

Git 功能丰富,建议从基础命令开始学习,逐步掌握高级功能,在实践中不断提升Git技能。

Git 版本控制 开源 开发工具 工具 免费