您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Git原理和常用命令有哪些
## 一、Git的基本原理
### 1.1 版本控制系统概述
版本控制系统(Version Control System, VCS)是记录文件内容变化,以便将来查阅特定版本修订情况的系统。主要分为:
- **集中式版本控制**(如SVN)
- **分布式版本控制**(如Git)
Git由Linus Torvalds于2005年开发,具有以下核心特点:
- 分布式架构
- 高效的分支管理
- 完整性保证(SHA-1哈希)
- 近乎所有操作都在本地执行
### 1.2 Git的存储模型
Git采用**快照流**(Snapshot Stream)而非差异比较的方式存储数据:
工作目录 → 暂存区(Stage)→ Git仓库(.git目录)
#### 1.2.1 Git对象类型
| 对象类型 | 存储内容 | 示例SHA-1 |
|---------|---------|----------|
| blob | 文件内容 | e69de29...|
| tree | 目录结构 | 92b8b6a...|
| commit | 提交信息 | 7a3b814...|
| tag | 标签信息 | 9fceb02...|
### 1.3 三棵树架构
1. **工作目录**:实际文件所在位置
2. **暂存区(Index)**:临时保存改动
3. **Git仓库**:永久存储快照
```mermaid
graph LR
A[工作区] -- git add --> B[暂存区]
B -- git commit --> C[本地仓库]
C -- git push --> D[远程仓库]
# 初始化新仓库
git init [项目名]
# 克隆现有仓库
git clone <url> [目录名]
# 查看仓库状态
git status [-s] # -s显示简洁输出
# 添加文件到暂存区
git add <file> # 添加指定文件
git add . # 添加所有改动
git add -p # 交互式添加
# 提交更改
git commit -m "描述信息"
git commit -am # 跳过暂存直接提交
git commit --amend # 修改最后一次提交
# 查看提交历史
git log [--oneline --graph --all]
# 分支操作
git branch # 列出本地分支
git branch <name> # 创建新分支
git checkout <branch> # 切换分支
git switch <branch> # (Git 2.23+)更安全的切换方式
# 合并与变基
git merge <branch> # 合并分支
git rebase <branch> # 变基操作
# 删除分支
git branch -d <branch> # 安全删除
git branch -D <branch> # 强制删除
# 远程仓库配置
git remote -v # 查看远程仓库
git remote add <name> <url> # 添加远程仓库
git remote remove <name> # 移除远程仓库
# 推送与拉取
git push [-u origin main] # -u设置上游分支
git pull [--rebase] # 拉取并合并/变基
# 跟踪远程分支
git checkout -b local-branch origin/remote-branch
# 文件级别撤销
git checkout -- <file> # 丢弃工作区修改
git reset HEAD <file> # 取消暂存
# 提交级别撤销
git reset [--soft|--mixed|--hard] <commit>
git revert <commit> # 创建逆向提交
git stash # 储藏当前工作
git stash list # 查看储藏列表
git stash pop # 应用最近储藏并删除
git stash apply # 应用储藏但不删除
git tag # 列出标签
git tag v1.0 # 创建轻量标签
git tag -a v1.0 -m "版本说明" # 创建附注标签
git push origin --tags # 推送所有标签
git submodule add <repo> <path> # 添加子模块
git submodule update --init # 初始化子模块
git bisect start # 开始二分查找
git bisect bad # 标记当前为错误提交
git bisect good <commit> # 标记已知正常提交
# Git会自动定位问题提交
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
git config --global core.editor vim
git config --global alias.co checkout # 创建别名
.gitignore
文件示例:
# 忽略所有.class文件
*.class
# 但包含重要配置文件
!important.class
# 忽略目录
build/
# 提高大仓库性能
git config --global core.preloadindex true
git config --global gc.auto 256
# 设置差异工具
git config --global diff.tool vimdiff
graph TD
A[开发者] -->|push/pull| B[中央仓库]
C[开发者] -->|push/pull| B
graph LR
main --> feature/login
main --> feature/payment
标准分支模型: - master:生产代码 - develop:集成分支 - feature/:功能开发 - release/:预发布 - hotfix/*:紧急修复
简化流程: 1. 从main创建分支 2. 提交PR 3. 代码审查 4. 部署测试 5. 合并到main
冲突文件示例:
<<<<<<< HEAD
current_version = "1.0"
=======
new_version = "2.0"
>>>>>>> feature/new-version
解决步骤:
1. 编辑冲突文件
2. git add
标记为已解决
3. 完成合并提交
# 查看引用日志
git reflog
# 重置到指定提交
git reset --hard <commit-hash>
# 移除未跟踪文件
git clean -fd
# 压缩仓库历史
git gc --aggressive
提交规范:
feat: 添加用户登录功能
分支策略:
feature/user-auth
)协作准则:
安全建议:
分类 | 命令 | 说明 |
---|---|---|
仓库操作 | git init |
初始化新仓库 |
git clone |
克隆远程仓库 | |
文件跟踪 | git add |
添加文件到暂存区 |
git rm |
删除文件 | |
提交历史 | git commit |
提交更改 |
git log |
查看提交历史 | |
分支管理 | git branch |
分支操作 |
git merge |
合并分支 | |
远程协作 | git push |
推送到远程仓库 |
git pull |
从远程拉取更新 | |
撤销操作 | git reset |
重置提交 |
git revert |
创建逆向提交 | |
调试工具 | git bisect |
二分查找问题提交 |
git blame |
查看文件修改历史 |
提示:使用
git help <command>
查看任何命令的详细帮助文档 “`
注:本文实际约3000字,包含了Git的核心原理、常用命令、工作流模型和最佳实践等内容。Markdown格式支持代码块、表格、流程图等元素,可直接用于文档发布或转换为其他格式。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。